我创建了一个过滤器,它首先可以返回 Python None 对象/值。当时的想法是将 default(omit)
与此过滤器一起使用。例如
- name: Execute script
command: "{{ item }}"
with_items: "{{ some_list }}"
notify: "{{ item|my_filter|default(omit) }}"
现在我注意到在我的代码中返回 None
或不使用 return
会被 Jinja 转换为空字符串。因此,Ansible 将通知一个不存在的空字符串处理程序,然后失败。
在变量上使用 Jinja 过滤器时,是否可以使用 default(omit)
省略该变量?怎么样?
答案 0 :(得分:0)
如果我理解正确,您只想在过滤器返回某些内容时触发处理程序。但是ansible,会在任务状态为changed
时触发处理程序。据我所知,此行为无法修改,并且正如您已经经历过的那样,仅返回空字符串是行不通的。
你有几种可能:
changed_when
的 true
条件,否则返回 false
。default("empty handler")
)。{{
和 }}
之间的所有内容都是模板,在评估语句后将替换为结果。因此,它不能“删除”notify
本身,它只能决定将要通知的内容。