Ansible Cheatsheet et Notes
AD Hoc
Pour ping
toutes les machines définies dans le groupe (hosts
)
ansible all -m ping
Pour récupérer le uptime
il faut utiliser le module command
avec l’argument uptime
ansible all -m command -a "uptime"
Pour collecter toutes les informations sur tous les hosts
ansible all -m setup
Pour utiliser un inventaire, il faut ajouter -i hosts
ansible -i inventory/production/hosts all -m setup
Pour utiliser un utilisateur spécifique pour se connecter à la machine remote
ansible all -i hosts -u myUser -m ping
Pour devenir sudo
, il faut utiliser l’option -b
Pour installer / désinstaller un package (dans les exemples suivants, le groupe web
est spécifié)
Pour installer et désinstaller nginx
sur tous les hosts définis dans le groupe web
ansible web -i inventory/production/hosts -u myUser -b -m yum -a "name=nginx state=latest"
ansible web -i inventory/production/hosts -u myUser -b -m yum -a "name=nginx state=absent"
Exemple d’un host file
[web]
1.1.1.1
[video]
1.2.3.4
[storage]
2.3.4.5
Best practices
- Ajouter
---
en haut de chaque fichier YAML - Bien définir ces variables pour éviter les conflits (il y a 16 niveaux au total)
- Donner des noms significatifs aux tâches, rôles et playbooks
- L’objectif est d’obtenir des statuts
changed
seulement s’il y a eu un changement, utiliserchanged_when: no
pour enlever les “faux” changements. Dans ce cas, la tâche retourneraOK
handlers
Les handlers sont appelés seulement à la fin de l’exécution et seulement si le statut de la tâche a changé (changed_when: yes && changed: true
)
Pour exécuter le handler immédiatement, il faut utiliser un meta
tasks:
- name: Install nginx
package:
name: nginx
state: latest
notify: start and enable nginx
- meta: flush_handlers
handlers:
- name: start and enable nginx
service:
name: nginx
state: started
enabled: yes
Roles
Pour créer un nouveau rôle,
cd roles
ansible-galaxy init nom-du-role