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…)