我有以下列表和默认变量:
my_list_complex:
- key1: val1
key2: val2
key3: val3
keyN: valN
- key1: val1
key3: val3
keyN: valN
key2: default2
key3: default3
key4: default4
我需要映射my_list_complex
以应用所有默认值。请注意以下事项:
预期输出为:
my_list_complex_default_applied:
- key1: val1
key2: val2
key3: val3
key4: default4
keyN: valN
- key1: val1
key2: default2
key3: val3
key4: default4
keyN: valN
我已查看combine
,map
和with_items
,但我还没有成功完成任务
如何使用Ansible任务或角色执行此操作?
答案 0 :(得分:1)
使用最新版本的Ansible,您可以:
---
- hosts: localhost
gather_facts: no
vars:
my_list_complex:
- key1: val1
key2: val2
key3: val3
keyN: valN
- key1: val1
key3: val3
keyN: valN
my_template:
key2: default2
key3: default3
key4: default4
tasks:
- set_fact:
merged_list: "{{ (merged_list | default([])) + [ my_template | combine(item) ] }}"
with_items: "{{ my_list_complex }}"
- debug:
msg: "{{ merged_list }}"
我不记得,因为您可以使用set_fact
和with_items
成长列出哪个版本,但我认为您应该使用Ansible 2.1 +。