我对Ansible还是有点陌生,但是我找不到一个很好的例子来说明如何处理以下情况:
在我的vars_file中,向我提供了以下内容...
- users
- name: user_a
age: 18
car: "Datsun"
- name: user_b
age: 20
pens:
- "Zebra F-701"
- "Bic"
- name: user_c
age: 99
car: "Horse and Buggy"
pens:
- "Quill"
- "Fountain Pen"
我的剧本任务如下:
- name: add users
user:
name: "{{ name }}"
age: "{{ age }}"
car: "{{ car }}"
pens: "{{ item.pens | join(',') }}"
with_items: "{{ users }}"
因此,user_a没有笔,user_b没有汽车,并且由于引用的变量不存在,剧本也相应地失败了。
在理想情况下,如果添加user_b时任务未找到“ car”变量,则该任务会继续出现在笔列表中而不会出错,并成功添加了用户。有关如何执行此操作的任何建议将不胜感激。
谢谢!
答案 0 :(得分:2)
添加空的默认值:
- name: add users
user:
name: "{{ name }}"
age: "{{ age }}"
car: "{{ car | default('') }}"
pens: "{{ item.pens | default('') | join(',') }}"
with_items: "{{ users }}"
答案 1 :(得分:1)
一种选择是使用default filter
car: "{{ item.car | default(omit) }}"