web-dev-qa-db-fra.com

Comment forcer le gestionnaire à s'exécuter avant d'exécuter une tâche dans Ansible?

J'ai un livre de jeu qui doit configurer sur une adresse IP spécifiée, puis se connecter à cette application pour configurer des éléments à l'intérieur.

J'ai un problème: je dois redémarrer l'application après avoir modifié quoi que ce soit dans la configuration d'application, et si je ne redémarre pas l'application, la connexion à celle-ci échoue (aucune connexion car l'application ne sait rien de la nouvelle configuration avec la nouvelle adresse IP I ' m essayant d'accéder).

Mon playbook actuel:

tasks:
- name: Configure app
  template: src=app.conf.j2 dest=/etc/app.conf
  notify: restart app

- name: Change data in app
  configure_app: Host={{new_ip}} data={{data}}

handlers:
- name: restart app
  service: name=app state=restarted

Je dois forcer le gestionnaire à s'exécuter si configure_app modifié avant l'exécution de 'Change data in app'.

47
George Shuklin

Si vous voulez forcer le gestionnaire à s'exécuter entre les deux tâches au lieu de le faire à la fin du jeu, vous devez le placer entre les deux tâches:

- meta: flush_handlers

Exemple tiré de l'ansible documentation :

tasks:
   - Shell: some tasks go here
   - meta: flush_handlers
   - Shell: some other tasks

Notez que cela entraînera tous les gestionnaires en attente à s'exécuter à ce point, pas seulement à celui-là.

87
Woodham