На основе параметра extra vars
Мне нужно записать значение переменной в ansible playbook
ansible-playbook playbook.yml -e "param1=value1 param2=value2 param3=value3"
Если прошло param1
myvariable: 'param1'
Если только param1, param2 прошел
myvariable: 'param1,param2'
Если param1, param2, param3, то значение переменной будет
myvariable: 'param1,param2,param3'
Когда я пытаюсь создать динамически динамически с помощью шаблона, тогда моя playbook всегда принимает предыдущее значение переменной. Но внутри dest=roles/myrole/vars/main.yml
написано правильное значение.
Что я здесь делаю?
- 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 }
Итак, внутри каталога myrole я создал template
и vars
- roles
- myrole
- vars/main.yml
- templates/myvar.j2
шаблоны /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 %}
Как я знаю, если только два условия, то я могу сделать это, используя inline expression
, как показано ниже
{{ 'param1,param2' if param1 is defined and param2 is defined else 'default-param' }}
<do something> if <something is true> else <do something else>
Возможно ли if - elif - else
в inline expression
, как указано выше. Или каким-либо другим способом динамически присваивать значение в незанятой пьесе?