如何在 Ansible 中使用 omit 并避免任何错误?
How to use omit with Ansible and avoid any errors?
我尝试将 omit 与这样的表达式一起使用:
id: "{{ openstack_networks.id | default(omit) }}"
但是当 openstack_networks
变量未定义时,它似乎一直失败并出现异常。
编写这个 jinja2 过滤器的正确方法是什么?
我想省略参数以防 openstack_networks.id 不存在。
不是超级优雅,但 100% 有效的解决方案来处理可能未定义的父指令的键:
id: "{{ (openstack_networks | default({})).id | default(omit) }}"
如果 openstack_networks
已定义但没有 id
键,或者如果 openstack_networks
未定义,这将为您提供 omit
。
有趣的是,Ansible 会接受一些读起来像普通英语的东西:
id: "{{ omit if openstack_networks.id is not defined or openstack_networks.id }}"
这里的好处是没有额外的括号。
我尝试将 omit 与这样的表达式一起使用:
id: "{{ openstack_networks.id | default(omit) }}"
但是当 openstack_networks
变量未定义时,它似乎一直失败并出现异常。
编写这个 jinja2 过滤器的正确方法是什么?
我想省略参数以防 openstack_networks.id 不存在。
不是超级优雅,但 100% 有效的解决方案来处理可能未定义的父指令的键:
id: "{{ (openstack_networks | default({})).id | default(omit) }}"
如果 openstack_networks
已定义但没有 id
键,或者如果 openstack_networks
未定义,这将为您提供 omit
。
有趣的是,Ansible 会接受一些读起来像普通英语的东西:
id: "{{ omit if openstack_networks.id is not defined or openstack_networks.id }}"
这里的好处是没有额外的括号。