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'
テンプレートを使用して変数を動的に作成しようとすると、プレイブックは常に前の変数値を取得します。しかし 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 %}
私が知っているように、条件が2つしかない場合は、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
または、ansible プレイブックで動的に値を割り当てる他の方法はありますか?