我正在寻找一个变量列表。我让它使用with_items遍历变量的变量,但是要注意的是,该变量列表中有一个列表,该列表也需要具有不同的子集/数量,我也需要对其进行迭代。
我尝试了不同的过滤器以包括with_nested,with_subelements和with_items。我知道,随着主要驱动程序的不断前进,它们正朝着循环前进,因此任何解决方案在理想情况下都可以利用向前发展的明智之路。我正在寻找一个“内部”循环或一个外部任务,它将遍历vlans_list并输入该数据作为该点。
组变量
vnic_templates:
- name: vNIC-A
fabric: A
mac_pool: testmac1
mtu: 1500
org_dn: org-root
redundancy_type: none
state: present
template_type: initial-template
vlans_list: ### THE PROBLEM CHILD
- name: vlan2
native: 'no'
state: present
- name: vlan3
native: 'no'
state: present
实际任务-当我必须输入多个VLAN时遇到问题。 vnic模板将具有一对一的关系,但是vlans_list对于许多vlan可能是1个vnic_template。
ucs_vnic_template:
hostname: "{{ ucs_manager_hostname }}"
username: "{{ ucs_manager_username }}"
password: "{{ ucs_manager_password }}"
name: "{{ item.name }}"
fabric: "{{ item.fabric }}"
mac_pool: "{{ item.mac_pool }}"
mtu: "{{ item.mtu }}"
org_dn: "{{ item.org_dn }}"
redundancy_type: "{{ item.redundancy_type }}"
state: "{{ item.state }}"
template_type: "{{ item.template_type }}"
vlans_list:
- name: "{{ item.1.name }}"
native: "{{ item.1.native }}"
state: "{{ item.1.present }}"
# loop: "{{ vnic_templates | subelements('vlans_list') }}"
with_items:
- "{{ vnic_templates }}"
我正在开始在此任务之外添加include vlan_list.yml,但对此并不熟悉。
实际结果是
The task includes an option with an undefined variable. The error was: 'item' is undefined\n\n
我需要使用该列表中定义的多个VLAN创建单个vnic模板。
答案 0 :(得分:0)
与我一起工作的另一位工程师能够解决这个问题。通过布置变量的方式,我们能够轻松地更改代码
更改此:
vlans_list:
- name: "{{ item.1.name }}"
native: "{{ item.1.native }}"
state: "{{ item.1.present }}"
对此:
vlans_list: "{{ item.vlans_list }}"
下面列出的完整代码。
- name: Add vNIC Templates
ucs_vnic_template:
hostname: "{{ ucs_manager_hostname }}"
username: "{{ ucs_manager_username }}"
password: "{{ ucs_manager_password }}"
name: "{{ item.name }}"
fabric: "{{ item.fabric }}"
mac_pool: "{{ item.mac_pool }}"
mtu: "{{ item.mtu }}"
org_dn: "{{ item.org_dn }}"
redundancy_type: "{{ item.redundancy_type }}"
state: "{{ item.state }}"
template_type: "{{ item.template_type }}"
vlans_list: "{{ item.vlans_list }}"
with_items:
- "{{ vnic_templates }}"