Comment puis-je transmettre une variable d'ansible playbook dans la ligne de commande?
Je suis nouveau sur ansible et se demandent comment faire de sorte que la suivante ne fonctionne pas
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Où django_fixtures
est ma variable.
Vous devez vous connecter pour publier un commentaire.
Lire les docs que j'ai trouver la section Passer Des Variables Sur La Ligne De Commande, qui donnent cet exemple:
D'autres exemples montrent comment les charger à partir de JSON chaîne (≥
1.2
) ou fichier (≥1.3
)--extra-vars
remplace la ou les variable(s) définie à l'intérieur d'playbook.key=value
la syntaxe de interprétées comme des chaînes de caractères. Utiliser le format JSON si vous avez besoin de passer à quelque chose qui ne devrait pas être une chaîne de caractères (Booléens, entiers, des flotteurs, des listes, etc). Par exemple:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
D'autres réponses de l'état comment transmettre les variables en ligne de commande mais pas la manière d'y accéder, donc si vous ne:
Dans votre fichier yml de l'assignation à portée ansible variables en faisant quelque chose comme:
Une alternative à l'utilisation de la ligne de commande args est d'utiliser des variables d'environnement qui sont déjà définies au sein de votre session, vous pouvez faire référence à ces dans votre ansible yml fichiers comme ceci:
lookup('env', SOMETHING)
est assorti le 12 facteur.version: {{ version }}
est faux, comme la définitionversion
par lui-même.-e
drapeau est la forme courte de--extra-vars
--extra-vars "@some_file.json"
--extra-vars
drapeau pour passer des variables qui ne sont pas dans le fichier. Par exemple--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
Vous pouvez utiliser le
--extra-vars
option. Voir les docsPour une raison quelconque, aucune des Réponses ci-dessus, a travaillé pour moi. Comme j'ai besoin de passer plusieurs vars à mon playbook dans Ansbile 2.2.0, c'est comment je l'ai eu de travail (note de l'option-e avant chaque var):
-e
est la forme courte de--extra-vars
-e
drapeau-e "firstvar=false second_var=value2"
Dans le fichier yml, vous pouvez les utiliser comme ceci
Aussi,
--extra-vars
et-e
sont les mêmes, vous pouvez utiliser l'un d'eux.Cela a également travaillé pour moi si vous voulez utiliser le shell variables d'environnement:
ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_HOST={{ lookup('env', 'LDAP_HOST') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
Vous pouvez utiliser la commande ci-dessus, en-dessous de tablettes playbook.
ici les variables sont utilisés nommé comme "pathoftsfiles" et "dossier". Maintenant, la valeur de cette variable peut être donnée par la commande ci-dessous
Remarque: N'utilisez pas les guillemets, en passant par les valeurs de la variable dans la commande shell