在Ansible中,可以使用循环遍历列表,并将输出收集到一个列表中。以下是一个示例解决方法:
- name: Loop through list and collect output
hosts: localhost
gather_facts: false
vars:
my_list:
- item1
- item2
- item3
tasks:
- name: Run command and collect output
command: echo "{{ item }}"
loop: "{{ my_list }}"
register: command_output
- name: Collect output into a list
set_fact:
output_list: "{{ output_list | default([]) + [item.stdout] }}"
loop: "{{ command_output.results }}"
- name: Print output list
debug:
var: output_list
在这个示例中,我们首先定义了一个变量my_list
,它是一个包含三个元素的列表。然后,我们使用command
模块在每个循环迭代中运行一个命令,并将输出注册到command_output
变量中。
接下来,我们使用set_fact
模块将每个命令的输出收集到名为output_list
的列表中。在每次循环迭代中,我们使用output_list | default([])
来初始化一个空列表(如果output_list
还不存在),然后使用+ [item.stdout]
将当前命令的输出追加到列表中。
最后,我们使用debug
模块打印output_list
变量的内容,以验证输出是否正确收集到列表中。
运行以上代码示例后,你将看到类似以下的输出:
ok: [localhost] => {
"output_list": [
"item1",
"item2",
"item3"
]
}
这表明循环遍历列表并将输出成功收集到output_list
列表中。
上一篇:ansible循环遍历列表