因此,使用Cisco提供的Ansible ACI网络模块来实现某些网络配置时遇到麻烦。 我想使用Ansible在EndPointGroups上自动化静态路径绑定的部署,但是我似乎无法让剧本在正确的时间使用正确的变量。
我正在使用“主”变量/清单文件,在其中声明我的所有配置都可以在剧本本身中使用。看起来如下,(为了便于阅读,将其缩短了一点)
endpoints:
# First Endpoint
- tenant: Some_Tenant
ap: Some_Ap
deploy_immediacy: Some_Immediacy
interface_mode: Some_Mode
interface_type: Som_Type
pod_id: 1
leafs: 20
interface: '1/1'
epg:
- EPG_1
- EPG_2
#Second Endpoint
- tenant: Some_Tenant
ap: Some_Ap
deploy_immediacy: Some_Immediacy
interface_mode: Some_Mode
interface_type: Som_Type
pod_id: 1
leafs: 20
interface: '1/2'
epg:
- EPG_1
- EPG_3
如您目前所见,我有两个“端点”,其中包含一些由网络模块用来执行配置的参数。除此之外,您还看到每个“端点”都有一个“ epg”,我要在其上配置所提供的端点。换句话说,请使用提供的参数配置EPG 1和2,并使用其他端点参数配置EPG 1和3。
当然,如果没有剧本,您什么也做不了,所以这就是我的样子(为了便于阅读,将其缩短了一点)
---
- name: Deploy endpoint static path bindings
aci_static_binding_to_epg:
tenant: '{{ endpoints.0.tenant }}'
ap: '{{ endpoints.0.ap }}'
epg: '{{ item.1 }}'
encap_id: '{{ item.1 | regex_replace(''^|_EPG$'', '''') | int }}'
deploy_immediacy: '{{ endpoints.0.deploy_immediacy }}'
interface_mode: '{{ endpoints.0.interface_mode }}'
interface_type: '{{ endpoints.0.interface_type }}'
pod_id: '{{ endpoints.0.pod_id }}'
leafs: '{{ endpoints.0.leafs }}'
interface: '{{ endpoints.0.interface }}'
state: present
delegate_to: localhost
loop: "{{ endpoints|subelements('epg') }}"
现在,剧本实际上可以运行并且在功能上可以正确执行所有操作,但事实是他没有在正确的时间使用正确的变量。 例如,当我运行剧本时,第一个端点将按照清单中的定义进行部署(端口1将在EPG 1和2上进行配置)。但是在第二个问题开始。当他想配置第二个EPG时,当他应该使用第二个端点的参数时,他使用第一个的参数。在Verbose中运行剧本时,此行为清晰可见。
任何可以帮助我或知道他为什么这样做的人?我使用循环或子元素的方式吗?