Playbooks Ansible
Les playbooks sont le cœur d’Ansible : des fichiers YAML qui orchestrent une série de tâches à exécuter sur des hôtes. Ils permettent d’automatiser des configurations complexes de manière reproductible.
Structure d’un playbook
Un playbook contient : - hosts : Les hôtes cibles (issus de l’inventaire). - tasks : Liste des tâches à exécuter. - vars : Variables pour personnaliser les tâches. - handlers : Tâches déclenchées par des notifications.
Exemple de playbook pour déployer un serveur web :
---
- name: Déployer un serveur web
hosts: webservers
become: yes
vars:
http_port: 80
tasks:
- name: Installer Apache
apt:
name: apache2
state: present
update_cache: yes
- name: Copier fichier de configuration
template:
src: templates/httpd.conf.j2
dest: /etc/apache2/sites-available/000-default.conf
notify: Restart Apache
- name: Démarrer Apache
service:
name: apache2
state: started
enabled: yes
handlers:
- name: Restart Apache
service:
name: apache2
state: restarted
Fichier template (httpd.conf.j2)
Exemple de fichier template Jinja2 :
Listen {{ http_port }}
ServerName example.com
DocumentRoot /var/www/html
Exécuter un playbook
Exécutez avec :
ansible-playbook -i inventory.ini playbook.yml
Pour vérifier la syntaxe avant exécution :
ansible-playbook -i inventory.ini playbook.yml --syntax-check
Tâches conditionnelles
Vous pouvez exécuter des tâches sous certaines conditions :
- name: Installer Nginx si OS est Ubuntu
apt:
name: nginx
state: present
when: ansible_distribution == "Ubuntu"
Boucles
Utilisez des boucles pour installer plusieurs paquets :
- name: Installer plusieurs paquets
apt:
name: "{{ item }}"
state: present
loop:
- vim
- git
- curl
Gestion des erreurs
Ignorez les erreurs pour certaines tâches :
- name: Tenter une commande
command: /bin/false
ignore_errors: yes
Bonnes pratiques
- Utilisez des noms explicites : Nommez vos tâches clairement.
- Modularisez : Regroupez les tâches similaires dans des roles.
- Testez en mode check : Utilisez
--checkpour simuler l’exécution :ansible-playbook -i inventory.ini playbook.yml --check - Documentez : Ajoutez des commentaires dans vos playbooks :
# Ce playbook configure un serveur web - name: Déployer Apache hosts: webservers ...