web-dev-qa-db-fra.com

Comment désactiver la collecte des faits pour les sous-lectures non incluses dans la balise donnée

Plusieurs de mes livres de jeu ont une structure de sous-jeux comme celle-ci:

- hosts: sites
  user: root
  tags:
    - configuration
  tasks:
  (...)

- hosts: sites
  user: root
  tags:
    - db
  tasks:
  (...)

- hosts: sites
  user: "{{ site_vars.user }}"
  tags:
    - app
  tasks:
  (...)

Dans Ansible 1.x, les administrateurs et les développeurs pouvaient utiliser un tel playbook. Les administrateurs pouvaient l'exécuter avec toutes les balises (accès root et utilisateur), tandis que les développeurs n'avaient accès qu'à la dernière balise avec des tâches au niveau de l'accès utilisateur. Lorsque les développeurs exécutent ce manuel avec la balise app, la collecte des faits a été ignorée pour les deux premières balises. Maintenant, cependant, dans Ansible 2.1, il n'est pas ignoré, ce qui entraîne une défaillance pour les utilisateurs sans accès root.

Existe-t-il un mécanisme ou une modification facile pour corriger ce comportement? Existe-t-il une nouvelle approche qui devrait être appliquée pour de tels cas maintenant?

17
Michal

Il existe un mod simple - désactivez la collecte des faits et appelez setup explicitement:

- hosts: sites
  user: root
  tags:
    - configuration
  gather_facts: no
  tasks:
    - setup:
    (...)
33
Konstantin Suvorov