Comment écrire de la variable dynamique dans Ansible playbook
Basé sur extra vars
paramètre j'ai Besoin d'écrire la valeur de la variable dans ansible playbook
ansible-playbook playbook.yml -e "param1=value1 param2=value2 param3=value3"
Si seulement param1 passé
myvariable: 'param1'
Si seulement param1,param2 passé
myvariable: 'param1,param2'
Si param1,param2,param3 sont passés ensuite la valeur de la variable est
myvariable: 'param1,param2,param3'
Lorsque j'essaie de créer une variable dynamiquement par modèle, puis ma playbook prend toujours précédentes valeur de la variable. Mais à l'intérieur de dest=roles/myrole/vars/main.yml
son écriture correcte de la valeur.
Ce que je faire un essai ici
- hosts: local
user: roop
gather_facts: yes
connection: local
tasks:
- template: src=roles/myrole/templates/myvar.j2 dest=roles/myrole/vars/main.yml
- debug: var=myvariable
roles:
- { role: myrole }
Donc à l'intérieur myrole répertoire que j'ai créé template
et vars
- roles
- myrole
- vars/main.yml
- templates/myvar.j2
templates/myvar.j2
{% if param1 is defined and param2 is defined and param3 is defined %}
myvariable: 'param1,param2,param3'
{% elif param1 is defined and param2 is defined %}
myvariable: 'param1,param2'
{% elif param1 is defined %}
myvariable: 'param1'
{% else %}
myvariable: 'default-param'
{% endif %}
Que je sais que si seulement deux condition, alors je peux le faire à l'aide de inline expression
comme ci-dessous
{{ 'param1,param2' if param1 is defined and param2 is defined else 'default-param' }}
<do something> if <something is true> else <do something else>
Est-il possible if - elif - else
dans inline expression
comme ci-dessus. Ou de toute autre manière à attribuer de la valeur de façon dynamique dans ansible playbook?
Vous devez vous connecter pour publier un commentaire.
Je suis sûr qu'il ya une façon plus intelligente pour faire ce que vous voulez, mais cela devrait fonctionner:
Espère que ça aide. Je ne suis pas sûr si vous pouvez construire des variables dynamiquement et ce, dans un itérateur. Mais vous pouvez aussi écrire un petit code python ou tout autre langage et de le brancher sur ansible
ma_var: la variable déclarée
VAR: la variable, dont la valeur doit être vérifié
param_1 param_2: les valeurs de la variable VAR
valeur_1, value_2, value_3: les valeurs à assigner à ma_var selon les valeurs de ma_var
Je voudrais tout d'abord vous suggérons de recul et regarder l'organisation de votre joue pour ne pas exiger une telle complexité, mais si vous avez vraiment vraiment faire, utilisez la commande suivante:
",,"
après un changement de mavariable comme suggéré par vous.reject
ettests
:{{ [param1, param2, param3, param4]|reject('undefined')|join(',') }}