Les tâches (tasks en anglais) représentent les actions à déployer sur les serveurs cibles.
Cet article vous permet de mieux comprendre ce que sont les tasks et comment vous en servir.
Le format de fichier
Les fichiers de group_vars s’écrivent au format YAML
tout simplement.
Principe de la task
La task est la description de l’action à réaliser sur le serveur cible. Elle est définie par une structure en yaml
avec au minimum 1 attribut : l’action à réaliser.
- apt: name: httpd
La task peut servir à un grand nombre d’actions :
- Installer un paquet système :
apt
ouyum
- Créer un fichier ou un répertoire :
file
- Copier un fichier local sur le serveur distant :
copy
- Exécuter une commande shell :
command
oushell
- Démarrer un service système :
service
ousystemd
- … etc
Les actions de la liste, annotée par un attribut, sont appelés
Les annotations
de la lsite correspondant aux actions (Installer …) sont appelés des modules.
Les modules
Un module est un exécutable écrit en python qui permet de réaliser une action (task) au travers du langage décalratif yaml
. Cela permet de simplifier l’approche des actions à réaliser par une structure (dictionnaire yaml
) à renseigner. Dans bon nombre de cas, l’approche des modules simplifie drastiquement l’application des actions, sans même connaitre la commande Linux.
La task
En général, on nomme les tasks pour expliciter l’action réalisée.
- name: Install httpd package apt: name: httpd
Les attributs des tasks
Une task peut comporter l’un des attributs suivants :
- action
- any_errors_fatal
- args
- async
- become
- become_exe
- become_flags
- become_method
- become_user
- changed_when
- check_mode
- collections
- connection
- debugger
- delay
- delagate_facts
- delegate_to
- diff
- environment
- failed_when
- ignore_errors
- ignore_unreachable
- local_action
- loop
- loop_control
- module_default
- name
- no_log
- notify
- poll
- port
- register
- remote_user
- retries
- run_once
- tags
- throttle
- timeout
- until
- vars
- when
Vous trouverez les explications des attributs à cette adresse : https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html#task
Les principaux attributs utilisés sont les suivants :
- name: Install httpd package apt: name: httpd become: true become_user: admin register: r_apt_httpd changed_when: r_apt_httpd.changed failed_when: r_apt_httpd.failed when: true loop: - httpd notify: - Restart httpd service tags: - apt - httpd
Avec quelques explications sur les attributs utilisés :
become
: réaliser l’action avec une élévation des privilègre (true
)become_user
: élever les privilège vers un utilisateur (admin
)register
: enregistrer l’état de l’action dans un variable (r_apt_httpd
)changed_when
: terminer la task en succès avec modification sur condition (r_apt_httpd.changed
correspond à l’état changed de la task elle-même)failed_when
: terminer la task en échec sur condition (r_apt_httpd.failed
correspond à l’échec de cette même tache)when
: exécuter la task sous condition (true
la tache sera toujours exécutée)loop
: itérer sur la tache autant de fois qu’il y a d’items (ici 1 itemhttpd
), avec la possibilité de récupérer l’item dans le module exécuténotify
: déclencher une action de typehandler
et l’exécuter à la fin du playbooktags
: apposer des tags pour faciliter l’exécution partielle ou ciblée du playbook
Exécution des tasks
Les tasks peuvent s’exécuter de 2 manières :
- Commande Ad-Hoc : en ligne de commande sans passer par fichier
- Playbook
L’exécution des tasks dans un d’un playbook se fait :
- Dans un playbook
- Dans un rôle
Exemple de playbook avec des tasks
- hosts: all tasks: - name: Install httpd package apt: name: httpd
Il n’en faut pas beaucoup plus pour exécuter des actions sur les serveurs cibles.
Bibliographie
- Site officiel Ansible
- Documentation officielle Ansible (site officiel)
- Liste des attributs des objets Ansible (site officiel)
Les autres articles autour d’Ansible :