我尝试将omit用于这样的表达式:
[1] "2016-12-15" "2016-12-16" "2016-12-17" "2016-12-18" "2016-12-19"
但似乎在未定义id: "{{ openstack_networks.id | default(omit) }}"
变量的情况下,它会因异常而失败。
编写这个jinja2过滤器的正确方法是什么?
如果openstack_networks.id不存在,我想省略参数。
答案 0 :(得分:6)
不是超级优雅,但100%工作解决方案来处理可能未定义的父级别的密钥:
id: "{{ (openstack_networks | default({})).id | default(omit) }}"
如果omit
已定义但没有openstack_networks
密钥或未定义id
,这将为您openstack_networks
提供。
答案 1 :(得分:2)
足够有趣的是,Ansible会采用类似普通英语的内容:
id: "{{ omit if openstack_networks.id is not defined or openstack_networks.id }}"
这样做的好处是没有多余的括号。