我对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"变量,它会毫无错误地继续到笔列表中,并成功添加用户。任何关于如何做到这一点的建议都将不胜感激。
谢谢!
添加空默认值:
- name: add users
user:
name: "{{ name }}"
age: "{{ age }}"
car: "{{ car | default('') }}"
pens: "{{ item.pens | default('') | join(',') }}"
with_items: "{{ users }}"
一个选项是使用默认的过滤器
car: "{{ item.car | default(omit) }}"