Aller au contenu principal

install-zabbix-ansible-playbook

Installer l'agent Zabbix avec Ansible

J'ai déjà un guide d'installation, sur la façon d'installer l'agent Zabbix sur les serveurs Linux ici. Ici, je montre comment créer un playbook Ansible, qui automatise l'installation.

Fonctionnalité du playbook

  • Installe l'agent Zabbix version 5.2 (géré par une variable)
  • Serveur sur Ubuntu 24.04 et Debian 12

Préparation

out d’abord, nous créons le dossier zabbix-agent, avec la structure suivante.

templates\
zabbix_agentd.conf.j2
vars\
Debian.yml
Ubuntu.yml
ansible.cfg
hosts.yaml
install-zabbix-agent.yaml

Cas pratique

Créez un fichier ansible.cfg Commençons par le fichier ansible.cfg. Il s'agit d'un fichier de configuration spécifique pour ansible et le playbook actuel.

[defaults]
inventory = hosts.yml
host_key_checking = False
ansible_python_interpreter = /usr/bin/python3

Ici, nous demandons à ansible de rechercher par défaut le fichier hosts.yml dans le répertoire courant.

hosts.yml

Ce fichier spécifie sur quelles cibles le playbook sera exécuté.

all:
hosts:
192.168.50.193:
192.168.50.197:

Debian.yml & Ubuntu.yml

Ces fichiers contiennent différents liens vers le paquet du référentiel zabbix. Selon le système d'exploitation, le fichier de variables correspondant sera chargé. Le fichier de variables utilisé est déterminé dans le install-zabbix-agent.yml.

Debian.yml

zabbix_version: 5.2
zabbix_repo_url: https://repo.zabbix.com/zabbix/{{ zabbix_version }}/debian/pool/main/z/zabbix-release/zabbix-release_{{ zabbix_version }}-1%2Bdebian10_all.deb

Ubuntu.yml

zabbix_version: 5.2
zabbix_repo_url: https://repo.zabbix.com/zabbix/{{ zabbix_version }}/ubuntu/pool/main/z/zabbix-release/zabbix-release_{{ zabbix_version }}-1%2Bubuntu20.04_all.deb

zabbix_agentd.conf.j2

Il s'agit du fichier zabbix_agentd.conf, qui sera modifié pour chaque hôte en conséquence et copié sur la cible.

PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.200.1.80
ServerActive=127.0.0.1
Hostname={{ ansible_hostname }}
Include=/etc/zabbix/zabbix_agentd.d/*.conf

install-zabbix-agent.yml

Et nous voici arrivés à la partie principale du playbook d'Ansible. Tous les fichiers ci-dessus sont utilisés ici.

---
- hosts: all
gather_facts: yes
tasks:
- name: gather os specific variables
include_vars: "{{ item }}"
with_first_found:
- "vars/{{ ansible_distribution }}.yaml"

- name: Download zabbix repo package
get_url:
url: "{{ zabbix_repo_url}}"
dest: /tmp/zabbix.deb

- name: Install zabbix repo
become: yes
apt:
deb: /tmp/zabbix.deb
state: present

- name: Install zabbix agent
become: yes
apt:
name: zabbix-agent
state: present
update_cache: yes

- name: Stop service zabbix-agent
become: yes
service:
name: zabbix-agent
state: stopped

- name: Remove zabbix config file
become: yes
file:
path: /etc/zabbix/zabbix_agentd.conf
state: absent

- name: Create new zabbix config file from template
become: yes
template:
src: "templates/zabbix_agentd.conf.j2"
dest: "/etc/zabbix/zabbix_agentd.conf"

- name: Start service zabbix-agent
become: yes
service:
name: zabbix-agent
state: started

Ici, nous déterminons quel fichier de variables utiliser et installons l'agent Zabbix.