Je suis nouveau chez ansible et je me demande comment faire car les choses suivantes n'ont pas fonctionné
ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' django_fixtures="tile_colors"
Où django_fixtures
est ma variable.
variables
command-line
command-line-arguments
ansible
ansible-playbook
Édouard Lopez
la source
la source
--extra-vars
remplaceront les variables définies dans le playbook.key=value
syntaxe sont interprétées comme des chaînes . Utilisez le format JSON si vous devez transmettre tout ce qui ne devrait pas être une chaîne (booléens, entiers, flottants, listes, etc.). Par exemple:--extra-vars '{"i_wasted_30_mins_debugging_a_boolean_string":true}'
D'autres réponses indiquent comment passer les variables de ligne de commande mais pas comment y accéder, donc si vous le faites:
Dans votre fichier yml, vous les affectez à des variables ansibles étendues en faisant quelque chose comme:
Une alternative à l'utilisation des arguments 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:
la source
lookup('env', SOMETHING)
correspond au facteur 12.version: {{ version }}
c'est faux, comme définirversion
par lui-même.la source
-e
drapeau est la forme abrégée de--extra-vars
--extra-vars "@some_file.json"
--extra-vars
indicateur pour transmettre des variables ne figurant pas dans le fichier. Par exemple--extra-vars "@some_file.json" --extra-vars "other_variable=foo"
Vous pouvez utiliser l'
--extra-vars
option. Voir les documentsla source
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):
la source
-e
est la forme abrégée de--extra-vars
-e
drapeau-e "firstvar=false second_var=value2"
Dans le fichier yml, vous pouvez les utiliser comme ceci
De plus,
--extra-vars
et-e
sont les mêmes, vous pouvez utiliser l'un d'eux.la source
ici, les variables sont utilisées comme «pathoftsfiles» et «dossier». Maintenant, la valeur de cette variable peut être donnée par la commande ci-dessous
Remarque: N'utilisez pas les virgules inversées lors du passage des valeurs à la variable dans la commande shell
la source
la source
Cela a également fonctionné pour moi si vous souhaitez utiliser des variables d'environnement shell:
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') }}"
la source
ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"
Vous pouvez utiliser la commande ci-dessus dans les playbooks ci-dessous.
la source