为什么ansible模板附加False



我有一个用于构建配置文件的模板。基本上,我希望设置值的行总是在文件中,但实际上并没有定义在变量中注释它。

{{ proxy_loadmodule is defined and proxy_loadmodule is not none | ternary('','# ') }}LoadModule={{ proxy_loadmodule | default('') }}

目前,变量proxy_loadmoduel还没有定义,所以我希望它输出# LoadModule=。相反,我得到了FalseLoadModule

想法?

添加括号

{{ (proxy_loadmodule is defined and proxy_loadmodule is not none) | ternary('','# ') }}LoadModule={{ proxy_loadmodule | default('') }}

将默认值放入条件中并测试长度。通过设置过滤器true的第二个参数,当变量计算为false(None(时,也启用默认值。通过这种方式,您可以在一个条件中测试所有情况(未定义、无和空字符串(。例如,模板

shell> cat test.conf.j2
{% if proxy_loadmodule|default('', true)|length > 0 %}
LoadModule={{ proxy_loadmodule }}
{% else %}
# LoadModule=
{% endif %}

和战术手册

shell> cat playbook.yml
- hosts: localhost
tasks:
- debug:
msg: "{{ lookup('template', 'test.conf.j2') }}"

如果变量proxy_loadmodule不是空,则给出(摘要(

shell> ansible-playbook playbook.yml -e proxy_loadmodule=proxy_module
...
TASK [debug] *********************************************************************************
ok: [localhost] => 
msg: |-
LoadModule=proxy_module

否则,当变量proxy_loadmodule未定义、无或为空时,配置行将被注释掉

shell> ansible-playbook playbook.yml
...
TASK [debug] *********************************************************************************
ok: [localhost] => 
msg: |-
# LoadModule=

相关内容

  • 没有找到相关文章

最新更新