要从列表中形成字典,或将字典分解为列表,可以使用Ansible的循环和过滤器功能。
以下是一个示例,演示如何从列表中形成字典:
- hosts: localhost
gather_facts: false
vars:
my_list:
- key1: value1
key2: value2
- key3: value3
key4: value4
tasks:
- name: Form dictionary from list
set_fact:
my_dict: "{{ my_dict | default({}) | combine(item) }}"
loop: "{{ my_list }}"
- name: Print dictionary
debug:
var: my_dict
在上面的示例中,我们有一个名为my_list
的列表,其中包含两个字典。我们通过循环列表的每个元素,并使用Ansible的combine
过滤器将它们合并到一个新的字典中。最终,我们将新的字典存储在my_dict
变量中,并通过debug
任务打印它。
如果要将字典分解为列表,可以使用Ansible的dict2items
过滤器。以下是一个示例:
- hosts: localhost
gather_facts: false
vars:
my_dict:
key1: value1
key2: value2
key3: value3
key4: value4
tasks:
- name: Split dictionary into list
set_fact:
my_list: "{{ my_dict | dict2items }}"
- name: Print list
debug:
var: my_list
在上面的示例中,我们有一个名为my_dict
的字典。我们使用Ansible的dict2items
过滤器将字典转换为列表,并将结果存储在my_list
变量中。最后,我们通过debug
任务打印列表。
这些示例可以帮助您理解如何在Ansible中从列表中形成字典,或将字典分解为列表。根据您的具体需求,您可以根据这些示例进行修改和调整。