Skip to main content

install-zabbix-ansible

Déploiement de agent zabbix avec ansible

Je vais décrire ici comment déployer des agents Zabbix sur un ensemble de serveurs grâce à Ansible.

Rôle zabbix_agent

Nous allons crées le zabbix_agent.yml

---
- hosts: all:!localhost

roles:
- role: zabbix_agent

Dans votre racine du projet, créer un rôle zabbix_agent.

ansible-galaxy init roles/zabbix_agent

roles/zabbix_agent/task/main.yml

---
- name: "[zabbix_agent - linux] Installation agent zabbix"
yum: name={{ item }} state=present
with_items:
- "zabbix-2.4.2-1.el6.x86_64.rpm"
- "zabbix-agent-2.4.2-1.el6.x86_64.rpm"
sudo: yes

- name: "[zabbix_agent - linux] Configuration de l'agent zabbix"
template:
src: "etc/zabbix/zabbix_agentd.conf.j2"
dest: "/etc/zabbix/zabbix_agentd.conf"
mode: 0644
register: zabbix_config_updated
sudo: yes

- name: "[zabbix_agent - linux] Demarrage de l'agent"
service: name="zabbix-agent" state="restarted"
when: zabbix_config_updated|changed
sudo: yes

Il est bien sur possible d’étendre ce rôle pour qu’il puisse déployer des agents sur d’autres types de serveur.

roles/zabbix_agent/templates/etc/zabbix/zabbix_agentd.conf.j2

---
LogFileSize=0
Server={{ zabbix_server }}
ServerActive={{ zabbix_server }}
Hostname={{ inventory_hostname }}
HostMetadata={{ zabbix_metadata if zabbix_metadata is defined else "" }},{{ ansible_system }}
Include=/etc/zabbix/zabbix_agentd.d/

roles/zabbix_agent/vars/main.yml

---
zabbix_server: "IP DU SERVEUR ZABBIX"

Configuration Zabbix

Host Groups Il faut d’abord créer des hosts groups dans Zabbix pour pouvoir « ranger » les équipements. Par exemple, créer un host group « Recette » dans lequel on va ranger tous les serveurs de recette.

Actions Une étape indispensable avant de lancer le playbook zabbix_agent est de configurer les règles d’auto-registration dans Zabbix. Pour cela, aller dans le menu Config->Actions et sélectionner « auto-registration » dans le menu déroulant. Puis, cliquer sur créer une nouvelle règle.

Dans le premier onglet Action, choisir un nom sympa pour cette règle. Par exemple « Linux auto-registration hosts.yml » Dans le second onglet Conditions, choisir les options « host metadata » like « hosts.yml » et host metadata like « linux » Dans le troisième onglet Operations, choisir :

  • Add Host
  • Add host to host group hosts.yml
  • Link host to template « Template OS Linux »

Lancement du playbook

Enfin, il ne reste plus qu’à lancer le playbook zabbix_agent en lui spécifiant le fichier d’inventaire de hosts.yml et les options zabbix_metadata qui vont bien :

ansible-playbook zabbix_agent.yml -i inventory/hosts.yml

Si tout se passe bien ansible va déployer un agent zabbix sur le serveur, configurer celui-ci avec la bonne IP du serveur zabbix et les méta données qu’on a fourni en paramètres. Ensuite, le serveur Zabbix va auto ajouter les équipements en les classant dans les bons groupes et y associer les bons templates.

Petite astuce :

  • Ne pas hésiter à créer plein de groupes zabbix pour ranger les équipements (un host peut bien évidement appartenir à plusieurs groupes)
  • Utiliser le bouton « Cloner » dans la configuration des actions pour créer plein de règles en fonction des méta données (Linux + Recette, Aix + Recette, Linux + Préprod, Aix + Préprod, Linux + préprod + backup, etc…)