如何防止“字典对象”没有任务选项的属性

时间:2019-10-08 09:51:20

标签: ansible ansible-facts

给出以下配置

---
my_items:
  my_item:
    folder: '/tmp'

以及使用自定义restore_info

的任务
- name: Restore info
  restore_info:
    folder: '{{ my_items[item]["folder"] }}'   
  with_items: '{{ my_items }}'

“文件夹属性”是可选的。因此可能是该配置仅包含

---
my_items:
  my_item:

问题在于,如果不存在“文件夹”,设置将失败。要解决此问题

- name: Restore info
  restore_info:
    folder: '{{ my_items[item]["folder"] if my_items[item]["folder"] is not defined }}'   
  with_items: '{{ my_items }}'

但这也会使任务在文件夹中失败

是否可以有条件地向任务添加参数,以便在不存在“ folder”属性的情况下任务不会失败?

1 个答案:

答案 0 :(得分:0)

您应该使用default(omit)

- name: Restore info
  restore_info:
    folder: '{{ my_items[item]["folder"] | default(omit) }}'   
  with_items: '{{ my_items }}'