web-dev-qa-db-fra.com

Ansible: dans un playbook, filtrez un rôle par tag (s) sans passer par la ligne de commande

Dans Ansible 1.7, je peux utiliser --tags à partir de la ligne de commande pour exécuter uniquement un sous-ensemble de ces tâches de playbooks.

Mais je veux intégrer mon livre de jeu pour exécuter un ensemble de rôles avec uniquement des tâches correspondant aux balises. Autrement dit, je ne veux pas avoir à transmettre cela via la ligne de commande car ce sera la même à chaque fois.

Au début, je pensais que c'était cette commande, mais cela fait le contraire: marquer les tâches avec ces balises au lieu de les filtrer en fonction de cela.

roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }

Je peux imaginer implémenter cela en utilisant des conditions mais les balises seraient un moyen beaucoup plus élégant d'y parvenir.

45
Mike Biglan

Vous disposez uniquement des options suivantes avec la version actuelle d'Ansible:

  1. Spécifiez les balises sur la ligne de commande
  2. Utilisez une variable au lieu d'une balise pour exécuter des tâches sous condition
  3. Divisez votre rôle de serveur Web en plusieurs rôles et utilisez les dépendances de rôle pour les tâches courantes

Cette demande de fonctionnalité est apparue plusieurs fois sur la liste de diffusion et je n'ai vu aucune indication de la part de l'équipe de développement qu'elle sera ajoutée en tant que nouvelle fonctionnalité.

48
jarv

L'utilisation de conditionnels peut répondre à vos besoins.

Vous pouvez voir plus d'informations dans ma réponse à une question similaire d'une autre personne ici .

0
Ava