Ansible中的嵌套循环

Ansible中的嵌套循环,ansible,ansible-2.x,ansible-inventory,Ansible,Ansible 2.x,Ansible Inventory,我知道这里有嵌套循环文档: 我有3台服务器:比如说服务器1、服务器2、服务器3。 我需要以这种方式运行命令: 在服务器1上运行命令 在服务器1上运行命令,在服务器2上运行命令 在服务器1上运行命令,在服务器2上运行命令,在服务器3上运行命令 你知道我如何在ansible中使用循环来实现这一点吗?我知道如何使用循环和产品过滤器运行嵌套循环。但我不知道如何使用Ansible处理我的特殊情况 这取决于数据的结构。例如,剧本就可以完成这项工作 -主机:服务器1、服务器2、服务器3 变量: batch00

我知道这里有嵌套循环文档: 我有3台服务器:比如说服务器1、服务器2、服务器3。 我需要以这种方式运行命令:

在服务器1上运行命令
在服务器1上运行命令,在服务器2上运行命令
在服务器1上运行命令,在服务器2上运行命令,在服务器3上运行命令


你知道我如何在ansible中使用循环来实现这一点吗?我知道如何使用循环和产品过滤器运行嵌套循环。但我不知道如何使用Ansible处理我的特殊情况

这取决于数据的结构。例如,剧本就可以完成这项工作

-主机:服务器1、服务器2、服务器3
变量:
batch001:
-命令:“foo”
主机:[server1]
-命令:“bar”
主机:[服务器1,服务器2]
-命令:“baz”
主机:[服务器1、服务器2、服务器3]
任务:
-命令:“{item.command}}”
循环:“{batch001}”
时间:在item.hosts中清点\u主机名
下一个选项是创建一个包含嵌套命令列表的服务器字典。比如说,

-主机:服务器1、服务器2、服务器3
变量:
批次002:
服务器1:
命令:[“foo”、“bar”、“baz”]
服务器2:
命令:[“foo”,“bar”]
服务器3:
命令:[“foo”]
任务:
-命令:“{item}}”
循环:“{{batch002[inventory_hostname]['commands']}”

Play1目标服务器1,play2目标服务器1-2,Play3目标服务器1-3?正确。这是可行的,但我只是好奇Ansible是否会支持这样的东西。它确实支持,在我的评论中有上述命题:)据我所知,这实际上不是一个嵌套循环:例如主服务器上的播放命令集1,主服务器上的播放命令集2,从服务器上的播放命令集3,从属和负载平衡器…这是同一个命令,运行六次(在服务器1上运行三次,在服务器2上运行两次,在服务器3上运行一次)还是不同的命令?