sor*_*rin 5 jinja2 ansible ansible-2.x
我试图对这样的表达式使用省略:
id: "{{ openstack_networks.id | default(omit) }}"
Run Code Online (Sandbox Code Playgroud)
但是,当openstack_networks未定义变量时,它似乎总是会因异常而失败。
编写此jinja2过滤器的正确方法是什么?
如果openstack_networks.id不存在,我想忽略该参数。
Rei*_*ica 12
有趣的是,Ansible 会采用一些读起来像简单英语的东西:
id: "{{ omit if openstack_networks.id is not defined or openstack_networks.id }}"
Run Code Online (Sandbox Code Playgroud)
这里的好处是没有额外的括号。
不是超级优雅,而是100%可行的解决方案来处理可能未定义的父字典的键:
id: "{{ (openstack_networks | default({})).id | default(omit) }}"
Run Code Online (Sandbox Code Playgroud)
omit如果openstack_networks已定义但没有id键,或者如果openstack_networks未定义,这将为您提供。