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?

InformationsquelleAutor Roopendra | 2014-04-24