如何解决是否可以在同一个剧本中循环进入两个不同的列表Ansible?
我正在写《 Ansible剧本》,我想循环进入两个不同的列表。
现在,我可以使用with_items
循环播放列表,但是我可以在同一本剧本中两次使用with_items
吗?
这就是我想要做的:
- name: Deploy the network in fabric 1 and fabric 2
tags: [merged]
role_network:
config:
- net_name: "{{ networkName }}"
vrf_name: "{{ vrf }}"
net_id: 30010
net_template: "{{ networkTemplate }}"
net_extension_template: "{{ networkExtensionTemplate }}"
vlan_id: "{{ vlan }}"
gw_ip_subnet: "{{ gw }}"
attach: "{{ item }}"
deploy: false
fabric: "{{ item }}"
state: merged
with_items:
- "{{ attachs }}"
"{{ fabric }}"
register: networks
因此,对于第一个通话,我想将剧本与fabric[0]
和attachs[0]
一起使用。
对于第二个通话,我想将剧本与fabric[1]
和attachs[1]
一起使用。
等等...
有人可以帮我吗?
解决方法
您要实现的是with_together
,现在是recommanded,可以通过zip
过滤器来实现。
所以:loop: "{{ attachs | zip(fabric) | list }}"
。
第一个列表(attachs
)的元素为item.0
,第二个列表(fabric
)的元素为item.1
。
- name: Deploy the network in fabric 1 and fabric 2
tags: [merged]
role_network:
config:
- net_name: "{{ networkName }}"
vrf_name: "{{ vrf }}"
net_id: 30010
net_template: "{{ networkTemplate }}"
net_extension_template: "{{ networkExtensionTemplate }}"
vlan_id: "{{ vlan }}"
gw_ip_subnet: "{{ gw }}"
attach: "{{ item.0 }}"
deploy: false
fabric: "{{ item.1 }}"
state: merged
loop: "{{ attachs | zip(fabric) | list }}"
register: networks
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。