Ansible vars文件处理具有不同属性的项



我对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) }}"

最新更新