Hi Barry,
Ansible 2.7 has subelements filter, which makes this rather easy. Given your second struct: vars: vmds: - vlanid: vlan1 vlan: 1 dvs: - DSwitch1 - DSwitch2 numports: 128 - vlanid: vlan2 vlan: 2 dvs: - DSwitch2 numports: 128 You can loop over the vswitches with the help of the subelements filter: - debug: var: vlans vars: vlans: "{{ vmds | subelements('dvs', skip_missing=True) }}" So, you should be able to create the port groups like this:? - name: Create DVS portgroup vmware_dvs_portgroup: hostname: "{{secret.vcenter}}" username: "{{secret.vcusername}}" password: "{{secret.vcpassword}}" validate_certs: no portgroup_name: "{{ item.0.vlanid }}" vlan_id: "{{item.0.vlan}}" portgroup_type: earlyBinding num_ports: "{{item.0.numports}}" state: present switch_name: "{{item.1}}" loop: "{{ vmds | subelements('dvs', skip_missing=True) }}" -- Eino Tuominen ________________________________ From: Barry Obie <barry.o...@gmail.com> Sent: Friday, November 9, 2018 18:23 To: Ansible Project Subject: [ansible-project] VMware dvs portgroup Hi. I'm trying to use the VMware module to configure my vCenters. I have over 100 vlans and roughly 30 dv switches that I'm trying to configure. The dvs switches could have any combination of the vlans. I could do something like - vlanid: vlan1 vlan: 1 dvs: DSwitch1 numports: 128 - vlanid: vlan2 vlan: 2 dvs: DSwitch1 numports: 128 - vlanid: vlan1 vlan: 1 dvs: DSwitch2 numports: 128 - vlanid: vlan2 vlan: 2 dvs: DSwitch2 numports: 128 But then I end up having a ridiculous list that has stuff duplicated all over the place. Is there a way to do something like: - vlanid: vlan1 vlan: 1 dvs: - DSwitch1 - DSwitch2 numports: 128 - vlanid: vlan2 vlan: 2 dvs: -DSwitch2 numports: 128 Or another way to be able to do that? This is an issue all over my vCenter config playbook, not just vlans. So finding a better way than building a long dictionary would be ideal. I imagine I'd need to change the way the loop works, but I'm not sure what road to go down. Playbook.yml - name: Create DVS portgroup vmware_dvs_portgroup: hostname: "{{secret.vcenter}}" username: "{{secret.vcusername}}" password: "{{secret.vcpassword}}" validate_certs: no portgroup_name: "{{item.vlanid}}" vlan_id: "{{item.vlan}}" portgroup_type: earlyBinding num_ports: "{{item.numports}}" state: present switch_name: "{{item.dvs}}" loop: "{{config.vlans}}" Thanks! Barry -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com<mailto:ansible-project+unsubscr...@googlegroups.com>. To post to this group, send email to ansible-project@googlegroups.com<mailto:ansible-project@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/da811cb6-9cd0-4011-8c8d-f293124c731a%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/da811cb6-9cd0-4011-8c8d-f293124c731a%40googlegroups.com?utm_medium=email&utm_source=footer>. For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com. To post to this group, send email to ansible-project@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/1542006905175.50802%40utu.fi. For more options, visit https://groups.google.com/d/optout.