Comment puis-je passer une variable à Ansible playbook dans la ligne de commande?

Je suis nouveau sur ansible et je me demande comment le faire car ce qui suit n'a pas fonctionné

ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"

django_fixtures est ma variable.

123
demandé sur Édouard Lopez 2015-06-05 11:42:38

6 réponses

En lisant les documents, je trouve la section passant des Variables sur la ligne de commande , qui donnent cet exemple:

ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"

D'autres exemples montrent comment charger à partir de JSON chaîne (≥1.2) ou fichier (≥1.3)

194
répondu Édouard Lopez 2015-06-05 08:47:07

D'autres réponses indiquent comment passer les variables de ligne de commande mais pas comment y accéder, donc si vous le faites:

--extra-vars "version=1.23.45 other_variable=foo"

Dans votre fichier yml, vous les affectez à des variables ansibles étendues en faisant quelque chose comme:

vars:
    my_version: "{{ version }}"
    my_other_variable: {{ other_variable }}

Une alternative à l'utilisation d'args de ligne de commande est d'utiliser des variables d'environnement qui sont déjà définies dans votre session, vous pouvez les référencer dans vos fichiers YML Ansible comme ceci:

vars:
    my_version: "{{ lookup('env', 'version') }}"
    my_other_variable: {{ lookup('env', 'other_variable') }}
87
répondu GreensterRox 2017-02-20 15:06:50
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
30
répondu lanni654321 2016-09-20 14:35:43

Vous pouvez utiliser l'option --extra-vars. Voir les documents

25
répondu jarv 2015-06-05 09:44:40

Pour une raison quelconque, aucune Des Réponses ci-dessus n'a fonctionné pour moi. Comme j'ai besoin de passer plusieurs vars supplémentaires à mon playbook dans Ansbile 2.2.0, voici comment je l'ai fait fonctionner (notez l'option-e avant chaque var):

ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2
22
répondu OpenITeX 2016-10-20 19:35:07
ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"

Dans le fichier yml, vous pouvez les utiliser comme ceci

---
arg1: "{{ var1 }}"
arg2: "{{ var2 }}"

Aussi, --extra-vars et -e sont les mêmes, vous pouvez utiliser l'un d'eux.

2
répondu Ali Atakan 2018-09-02 16:18:42