在Ansible中,可以使用combine
过滤器来合并复杂字典。以下是一个示例代码:
- hosts: localhost
vars:
dict1:
key1: value1
key2: value2
dict2:
key2: new_value2
key3: value3
tasks:
- name: 合并字典
set_fact:
merged_dict: "{{ dict1 | combine(dict2) }}"
- name: 打印合并后的字典
debug:
var: merged_dict
在上面的示例中,我们有两个字典dict1
和dict2
。使用combine
过滤器将它们合并为merged_dict
变量。merged_dict
将包含两个字典的键值对,如果键重复,则后一个字典的值将覆盖前一个字典的值。
运行上述代码将输出如下结果:
TASK [合并字典] ****************************************************
ok: [localhost]
TASK [打印合并后的字典] ************************************************
ok: [localhost] => {
"merged_dict": {
"key1": "value1",
"key2": "new_value2",
"key3": "value3"
}
}
可以看到,merged_dict
包含了两个字典的键值对,并且在重复的键key2
上,后一个字典的值new_value2
覆盖了前一个字典的值value2
。