Ansible Cheatsheet et notes

TG
  • Tommy Gingras
    Studio Webux S.E.N.C
    20 Septembre 2020

Ansible Cheatsheet et Notes

AD Hoc

Pour ping toutes les machines définies dans le pool (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 hosts 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, utiliser changed_when: no pour enlever les “faux” changements. Dans ce cas, la tâche retournera OK

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

Ansible 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