Comment puis-je développer plusieurs listes dans la même tâche
J'ai une situation où j'ai deux variables différentes, et je veux faire référence à une seule commande:
Par exemple, j'attends la suite de la sortie :
list 1
item a
item b
list 2
another item from different var 10
-name : Run a module which executes a command on a host eg. via ssh
command:
host: {{ device_ip }}
cmd_str:
- 'list 1 '
- ' {{ item item[0].name }}'
- 'list 2 '
- ' {{ another item from different var item[1].id }}'
with_items:
- {{ var1 }}
- {{ var2 }}
var1:
- { name:a, address:test }
- { name:b, address:test2 }
var2:
- { name:x, id:10 }
Que dois-je écrire au lieu de "with_items" pour obtenir ce fait?
La question est de savoir comment dois-je développer deux variables différentes, au même endroit, sans avoir à effectuer une itération de la totalité de la commande (ce qui est faisable si je bouge with_items au même niveau d'indentation que le module d'invocation)
Qu'entendez-vous par la seule commande? Une seule tâche? Il ressemble dans votre
C'est une tâche unique, avec la commande étant construites en combinant les éléments ci-dessous. Par exemple, un ensemble d'instructions pour envoyer à un appareil.
command
vous avez deux tâches différentes. Si vous avez deux tâches, alors quel est le rapport entre les listes? Ils n'ont même nombre d'éléments? Ou vous voulez juste de parcourir deux listes, un par un. Un exemple plus concret des tâches sera de mieux comprendre.C'est une tâche unique, avec la commande étant construites en combinant les éléments ci-dessous. Par exemple, un ensemble d'instructions pour envoyer à un appareil.
OriginalL'auteur Abhinav | 2015-08-23
Vous devez vous connecter pour publier un commentaire.
Je ne comprends pas ce que vous voulez vraiment faire, mais à la suite de la playbook de montre:
playbook.yml:
Exemple de session:
Sortie indiquée dans
msg
dedebug
module:Sortie en
/tmp/output.txt
deshell
module:Mise à jour de ma réponse. Je suggère d'écrire un script avec vos commandes peuplée par jinja2 modèle et de l'exécuter en
shell
module.|
est commun syntaxe YAML pour exprimer bloc de littéraux: c'est très utile pour intégrer un texte multi-ligne ou d'un script dans Ansible tablettes playbook. Et j'ai toujours reommend pour passer des arguments pour le module sous la forme d'un dict comme ce playbook où|
est disponible, c'est à dire utiliserdebug: { msg: text }
plutôt quedebug: msg=text
.OriginalL'auteur yaegashi
Ici est l'Ansible docs page sur les boucles: http://docs.ansible.com/ansible/playbooks_loops.html
Je pense que vous êtes à la recherche de boucles imbriquées, de sous-éléments, ou en boucle sur des ensembles parallèles.
OriginalL'auteur MillerGeek