如何使用 'or' 条件或 'is defined ' 在 Ansible 模板中传递环境变量
How to use 'or' condition or 'is defined ' to pass environment variable in Ansible template
我的方案是只将其中一个变量传递给 Ansible 模板文件,在 Jinja 中也是如此。
逻辑应该是:如果 variable_a
被传递,分配 var_a
并忽略 var_b
否则分配 var_b
.
我在执行 playbook 时从外部传递它们
ansible-playbook playbooks/deploy.yaml \
-e 'variable_a=${variable_a}' \
-e 'variable_b=${variable_b}'
我想在条件中使用 or
,同时在模板中传递变量。
这是 Ansible 模板
key = {{ variable_a if variable_a is defined else variable_b }}
这个我也试过了
key = {{ variable_a | default(variable_b) }}
我的问题是,如果 variable_a
没有定义,variable_b
就不会被赋值。
试试这个
key = "{% if variable_a is defined %}{{ variable_a }}{% else %}{{ variable_b }}{% endif %}"
我发现我在
中丢失了True
key = {{ variable_a | default(variable_b) }}
如documentation所述。
最终声明是
key = {{ variable_a | default(variable_b, True) }}
我的方案是只将其中一个变量传递给 Ansible 模板文件,在 Jinja 中也是如此。
逻辑应该是:如果 variable_a
被传递,分配 var_a
并忽略 var_b
否则分配 var_b
.
我在执行 playbook 时从外部传递它们
ansible-playbook playbooks/deploy.yaml \
-e 'variable_a=${variable_a}' \
-e 'variable_b=${variable_b}'
我想在条件中使用 or
,同时在模板中传递变量。
这是 Ansible 模板
key = {{ variable_a if variable_a is defined else variable_b }}
这个我也试过了
key = {{ variable_a | default(variable_b) }}
我的问题是,如果 variable_a
没有定义,variable_b
就不会被赋值。
试试这个
key = "{% if variable_a is defined %}{{ variable_a }}{% else %}{{ variable_b }}{% endif %}"
我发现我在
中丢失了True
key = {{ variable_a | default(variable_b) }}
如documentation所述。
最终声明是
key = {{ variable_a | default(variable_b, True) }}