在Ansible中,我们可以使用subelements将循环嵌套使用,从而实现多重循环。以下示例展示了如何使用subelements来实现一个以客户机为主机组的Ansible Playbook:
- name: Loop through host and port lists
hosts: localhost
gather_facts: no
vars:
addresses:
- name: client1
port: [8080, 8081]
- name: client2
port: [8888, 9999]
tasks:
- name: Print address and port
debug:
msg: "Connecting to client {{item.0.name}} on port {{item.1}}"
with_subelements:
- "{{addresses}}"
- port
在这个示例中,我们定义了一个名为addresses的变量,在其下有两个客户端名为client1和client2。每个客户端有两个端口号。然后我们使用with_subelements循环遍历这些数据。在每次循环中,item.0表示客户端名称,item.1表示端口号。
此方法非常灵活且易于使用,可以用于大多数常见的循环需求。