Comment puis-je passer yaml array à --extra-vars
dans le playbook Ansible. La documentation Ansible ne déclare pas sa syntaxe et je ne peux la trouver sur aucune ressource Internet.
Je veux dire si j'ai un playbook:
---
- hosts: {{hostName}}
- remote_user: admin
...
Alors je devrais appeler mon playbook comme
ansible-playbook DeployWar.yml --extra-vars="hostName=Tomcat-webApp"
Mais je veux exécuter ce livre de jeu sur deux serveurs, à savoir Tomcat-webApp
et Tomcat-all
, et je veux le contrôler depuis l'extérieur, c'est-à-dire en utilisant --extra-vars
. Ce que j'ai essayé de faire est:
ansible-playbook DeployWar.yml --extra-vars="hostName=[Tomcat-webApp, Tomcat-all]"
ansible-playbook DeployWar.yml --extra-vars="hostName={Tomcat-webApp, Tomcat-all}"
ansible-playbook DeployWar.yml --extra-vars="[{hostName: Tomcat-webApp}, {hostName: Tomcat-all}]"
Mais dans tous les cas, playbook échoue en déclarant une erreur de syntaxe dans mon appel . Toute aide appréciée.
Pour répondre à votre première question "Comment puis-je passer yaml array à --extra-vars dans Ansible playbook?" vous pouvez passer une chaîne au format json en extra-vars .
Voici un exemple de pièce:
- hosts: all
gather_facts: no
tasks:
- debug: var=test_list
Et comment passer test_list à ansible-playbook:
ansible-playbook -c local -i localhost, test.yml --extra-vars='{"test_list": [1,2,3]}'
Bien que vous puissiez utiliser une variable pour les hôtes, je vous recommande de vérifier le mécanisme de gestion des hôtes d'Ansible qui est inventory en conjonction avec l'option --limit
.
À partir de Ansible 1.3, les vars supplémentaires peuvent être formatés en tant que YAML, en ligne de commande ou dans un fichier. Voir la documentation Ansible intitulée Passing Variables On The Command Line .
depuis le lien: -- extra-vars "@ some_file.json"
En plus de répondre de jarv, voici ma note de sauveur:
Si quelqu'un veut passer un tableau d'entiers , ceci fonctionne:
--extra-vars '{"my_params":[40,50,10,20,30]}'
Remarque : il devrait y avoirpas d'espaceentre les nombres du tableau que vous passez! Supprimer de l'espace a résolu mon problème!