【发布时间】:2019-10-14 19:16:00
【问题描述】:
我有一个 Ansible playbook 可以在环境中自动更改网络。 Play one touches Cisco Nexus 端口通道,需要将多个 vlan 从一个端口通道移动到另一个,play 2 touches Cisco ACI 通过在所需的 ACI 租户中创建新的 vlan(创建 BD 和 EPG) 我的剧本和关联 vars 文件、角色等按预期为 单个 vlan 执行此操作,在端口通道之间移动并进行 ACI 创建,但是当我有我需要的 vlan ID 列表时要迁移,我不需要在 Nexus 上进行所有 vlan 转换,然后以线性方法在 ACI 中创建所有 vlan。我需要像执行单个 vlan 一样执行每个 vlan 移动和创建,然后循环(我假设为 for 循环)到列表中的下一项(vlan)并再次执行。
变量 sn-p
vlan_id:
- 78
- 79
- 80
- 81
- 82
任务sn-p
- name: Remove VLAN from port-channel 1
nxos_l2_interface:
name: "{{ item[0] }}"
mode: "{{ mode }}"
trunk_vlans: "{{ item[1] }}"
state: "{{ INTERFACE_REMOVE_state | default('absent') }}"
with_nested:
- "{{ INTERFACE_REMOVE_interface }}"
- "{{ vlan_id }}"
- name: Add VLAN to port-channel 20
nxos_l2_interface:
name: "{{ item[0] }}"
mode: "{{ mode }}"
trunk_vlans: "{{ item[1] }}"
state: "{{ INTERFACE_ADD_state | default('present') }}"
with_nested:
- "{{ INTERFACE_ADD_interface }}"
- "{{ vlan_id }}"
当我执行 playbook 时,所有 vlan_id 的任务 1 都完成了,然后所有 vlan_id 的任务 2 都完成了。 我想尝试为第一个 vlan_id 完成任务 1 和任务 2,然后为第二个 vlan_id 完成任务 1 和任务 2,然后为第三个 vlan_id 完成任务 1 和任务 2,等等。
有人有我可以使用的解决方案吗?
【问题讨论】:
标签: loops for-loop ansible nested-loops