在Ansible中,可以使用lookup
插件来从另一个列表中检索键的值。以下是一个示例代码:
- name: 定义另一个列表
vars:
my_list:
- { key: 'name', value: 'Alice' }
- { key: 'age', value: 25 }
- { key: 'city', value: 'New York' }
- name: 使用lookup插件检索键的值
debug:
msg: "{{ lookup('dict', my_list | map('extract', 'key') | zip(my_list | map('extract', 'value')) | list) }}"
在上面的示例中,首先定义了一个名为my_list
的列表,其中包含了多个字典元素,每个字典元素都有一个key
和一个value
。然后使用lookup
插件来检索键的值。
在debug
任务中,使用了lookup
插件的dict
函数。my_list | map('extract', 'key')
用于提取my_list
中所有字典元素的key
值,并将它们作为一个列表返回。my_list | map('extract', 'value')
用于提取my_list
中所有字典元素的value
值,并将它们作为一个列表返回。zip
函数将这两个列表合并为一个列表,最后通过list
函数将其转换为Ansible可读的格式。
执行上述代码后,将会输出如下结果:
TASK [使用lookup插件检索键的值] **************************************************
ok: [localhost] => {
"msg": [
[
"name",
"Alice"
],
[
"age",
25
],
[
"city",
"New York"
]
]
}
可以看到,my_list
中的键和值被成功提取出来,并作为一个列表返回。