Dans Ansible, un gestionnaire est comme n'importe quelle autre tâche, mais ne s'exécute que lorsqu'il est appelé ou notifié. Il agit lorsqu'une modification a été apportée à l'hôte géré. Les gestionnaires sont utilisés pour initier une modification secondaire telle que le démarrage ou le redémarrage d'un service après l'installation ou même le rechargement d'un service après que certaines modifications ont été apportées aux fichiers de configuration. Dans ce guide, nous apporterons plus de lumière sur les gestionnaires Ansible. Nous apprendrons à utiliser les gestionnaires dans un playbook ansible.
Fichier de playbook Ansible avec un gestionnaire
Pour mieux comprendre le fonctionnement des gestionnaires, nous prendrons un exemple de fichier playbook - install_apache.yml - qui installe le serveur Web Apache et redémarre ensuite le service Apache. Dans l'exemple ci-dessous, le gestionnaire est averti de redémarrer le service Apache peu après l'installation. Ceci est réalisé en utilisant le module de notification comme indiqué. Notez que le nom "notify" doit coïncider avec le nom du gestionnaire, comme indiqué, sinon vous rencontrerez des erreurs dans votre fichier playbook.
--- - hosts: staging name: Install become: yes tasks: - name: Install Apache2 on Ubuntu server apt: name: apache2 state: present update_cache: yes notify: - Restart apache2 handlers: - name: Restart apache2 service: name: apache2 state: restarted
Exécutons maintenant le fichier playbook.
$ ansible-playbook /etc/ansible/install_apache.yml -K
À partir de la sortie, vous pouvez voir le gestionnaire en cours d'exécution juste après la tâche.
Plusieurs tâches avec plusieurs gestionnaires
De plus, nous pouvons avoir plusieurs tâches appelant plusieurs gestionnaires. Considérez le fichier playbook ci-dessous.
Voici 2 tâches à exécuter :
- Installation du serveur Web Apache
- Autoriser le trafic HTTP sur le pare-feu UFW
Une fois les tâches exécutées avec succès, j'ai appelé chacun des gestionnaires avec le module "notifier" comme indiqué ci-dessous. Le premier gestionnaire redémarre Apache et le second recharge le pare-feu UFW.
--- - hosts: staging name: Install become: yes tasks: - name: Install Apache2 on Ubuntu server apt: name: apache2 state: present update_cache: yes - name: Allow HTTP traffic on UFW firewall ufw: rule: allow port: http proto: tcp notify: - Restart apache2 - Reload ufw firewall handlers: - name: Restart apache2 service: name: apache2 state: restarted - name: Reload ufw firewall ufw: state: enabled
Lorsque le fichier playbook est exécuté, les deux gestionnaires sont exécutés par Ansible juste après l'installation d'Apache et le trafic HTTP est autorisé sur le pare-feu.
Les actions secondaires exécutées par les gestionnaires ici sont :
- Redémarrage d'Apache
- Activation et rechargement du pare-feu pour que les modifications apportées soient prises en compte.
Conclusion
Comme vous l'avez vu, les gestionnaires sont comme des tâches normales, sauf qu'ils sont référencés à l'aide d'un module unique au monde appelé "notifier". Si un gestionnaire n'est pas notifié, son exécution échoue. N'oubliez pas que tous les gestionnaires s'exécutent une fois toutes les tâches terminées.
Lire aussi : Comment créer des rôles Ansible et les utiliser dans Playbook