Ansible pour déployer des agents Zabbix + auto-registration
Depuis quelques temps, j’utilise Ansible au boulot, et je doit dire c’est un outil super classe !
Je vais décrire ici comment déployer des agents Zabbix sur un ensemble de serveurs grâce à Ansible.
Rôle zabbix_agent
Voici le playbook zabbix_agent :
zabbix_agent.yml
--- - hosts: all:!localhost roles: - role: 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 (debian, aix, etc..)
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 Recette »
Dans le second onglet Conditions, choisir les options « host metadata » like « recette » et host metadata like « linux »
Dans le troisième onglet Operations, choisir :
- Add Host
- Add host to host group Recette
- 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 recette et les options zabbix_metadata qui vont bien :
ansible-playbook zabbix_agent.yml -i inventory/recette --extra-vars="zabbix_metadata=Recette"
Et voila !
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…)