如何将省略与Ansible一起使用并避免任何错误?

如何将省略与Ansible一起使用并避免任何错误?,ansible,jinja2,ansible-2.x,Ansible,Jinja2,Ansible 2.x,我试着用省略来表达如下: id: "{{ openstack_networks.id | default(omit) }}" 但是,当未定义openstack\u networks变量时,它似乎一直失败,只有一个例外 写这个jinja2过滤器的正确方法是什么 如果openstack_networks.id不存在,我想省略该参数。不是非常优雅,但100%的工作解决方案可以处理可能未定义的父目录的键: id: "{{ (openstack_networks | default({})).id |

我试着用省略来表达如下:

id: "{{ openstack_networks.id | default(omit) }}"
但是,当未定义
openstack\u networks
变量时,它似乎一直失败,只有一个例外

写这个jinja2过滤器的正确方法是什么


如果openstack_networks.id不存在,我想省略该参数。

不是非常优雅,但100%的工作解决方案可以处理可能未定义的父目录的键:

id: "{{ (openstack_networks | default({})).id | default(omit) }}"

如果定义了
openstack\u networks
,但没有
id
键,或者未定义
openstack\u networks
,这将使您可以忽略

有趣的是,Ansible将采用类似于纯英语的内容:

id: "{{ omit if openstack_networks.id is not defined or openstack_networks.id }}"

这里的好处是没有额外的括号。

谢谢。现在我的头好痛!Ansible中没有美:(