web-dev-qa-db-fra.com

Passer tableau dans --extra-vars - Ansible

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.

41
Tariq

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.

34
jarv

À 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"

10
Ivan Ogai

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!

0
cyberPrivacy