Soy Oscar Mas y en este apartado, procederemos a la instalación del agente de Zabbix en un servidor de Linux (en este caso Ubuntu 16.04 LTS). Realizaremos la instalación y configuración de nuestro cliente de Zabbix todo ello desde Ansible
Siempre antes de proceder a realizar un PlayBook, es altamente aconsejable mirar que no haya alguien que lo haya hecho con anterioridad y lo haya publicado en alguna de las diferentes plataformas de descarga. En este caso existe un PlayBook ( https://github.com/dj-wasabi/ansible-zabbix-agent) que podríamos usar para desplegar el agente de Zabbix y realizar su posterior configuración, pero realmente lo que quiero es que veáis un par de líneas de código que sean sencillas y amenas. Así que no usaremos este PlayBook y nos crearemos el nuestro propio.
Como ya he comentado con anterioridad, una de las grandes diferencias entre Ansible y sus competidores, es que con Ansible no tenemos que instalar un agente en el servidor de destino. Se realiza toda la configuración por SSH, así que lo primero que hemos de hacer es crear una clave SSH ( ssh-keygen ) específica para Ansible y posteriormente copiarla al servidor de destino ( ssh-copy-id )
root@ansible:~# ssh-keygen
root@ansible:~# ssh-copy-id -i .ssh/id_rsa.pub ansible-cli-ub:
Una vez creada la clave SSH y copiada a nuestro servidor de destino, verificaremos su correcto funcionamiento conectándonos al servidor ( ansible-cli-ub.ilba.cat ) y verificando que no nos pide una contraseña para poder acceder.
root@ansible:~# ssh ansible-cli-ub.ilba.cat
Al igual que hemos hecho con el equipo de Windows, lo añadiremos a nuestro fichero de hosts de Ansible, pero en esta ocasión no hará falta indicarle nada más que el servidor al que vamos a conectarnos:
root@ansible:~# vim /etc/ansible/hosts [linux] ansible-cli-ub.ilba.cat
NOTA: Cuando creemos nuestros playbooks ir con cuidado con los espacios, ya que Ansible es muy caprichoso con los espacios en los PlayBook y si no “tabulamos” correctamente nuestro PlayBook nos dará error.
Ansible requiere Phyton en el servidor de destino basado en Linux, por esa razón he creado una “pre_task” que nos instalará el módulo de Phyton en el equipo de destino, ya que sin este paquete no nos funcionaría nuestro PlayBook.
Al igual que el anterior PlayBook en el que lanzábamos contra un equipo basado en Windows, este lo he hecho sencillo para que sea más aclarativo. En este PlayBook por ejemplo no chequeamos el sistema operativo de destino, la cual es una cosa básica en un PlayBook de Ansible.
root@ansible:~# cat /etc/ansible/playbooks/zabbix_linux/install.yml
---
- name: Instalacion de Zabbix
hosts: linux
remote_user: root
gather_facts: no
pre_tasks:
- name: Instalando python-simplejson
raw: apt-get -y install python-simplejson
vars:
Server: "zabbix.ilba.cat"
ServerActive: "zabbix.ilba.cat"
tasks:
- name: Actualizamos cache repositorios y instalamos zabbix-agent
apt:
name: zabbix-agent
update_cache: yes
- lineinfile: dest=/etc/zabbix/zabbix_agentd.conf regexp=^Server= line=Server={{ Server }}
- lineinfile: dest=/etc/zabbix/zabbix_agentd.conf regexp=^ServerActive= line=ServerActive={{ ServerActive }}
- lineinfile: dest=/etc/zabbix/zabbix_agentd.conf regexp=^Hostname= line=Hostname={{ inventory_hostname }}
- lineinfile: dest=/etc/zabbix/zabbix_agentd.conf regexp="^# HostMetadataItem=" line=HostMetadataItem=system.uname
- service:
name: zabbix-agent
state: restarted
Una vez credo nuestro PlayBook y configurado nuestro fichero de hosts, simplemente nos quedará ejecutarlo de la siguiente manera:
root@ansible:~# ansible-playbook -s /etc/ansible/playbooks/zabbix_linux/install.yml
Recordar que para que se registren de manera automática los equipos Linux no es necesario el Discovery en la configuración de Zabbix, pero no lo eliminemos ya que sino no funcionaran los Windows que sí que lo usan.
Una vez creada la “Action” y pasado un tiempo podremos observar que el equipo se ha registrado de forma automática:
Auto Remove en Zabbix
En este apartado, procederemos a la eliminación de los equipos que lleven un tiempo indicado sin registrarse. Esta parte es importante en todo el post, ya que de no implementarlo al cabo de un tiempo nos podemos encontrar con muchos equipos que ya no existen en nuestra infraestructura.
Para realizarlo, nos iremos a “Configuration” y desde allí crearemos otra “Action”. Al final del procedimiento nos ha de quedar de la siguiente manera:
Como siempre, para hacer más ameno el post lo he divido en diferentes partes:



[…] 5 – Instalación del agente de Zabbix en Linux y Auto Remove en Zabbix […]