On 05.08.2019 18:53, Spiro Mitsialis wrote:
> I have the following and there may be several vlans per switch.
>      "cisco_ios.vlans": {
>          "35": {
>              "id": "35",
>              "mtu": "1500",
>              "name": "CC_internal_subnet_35",
>              "ports": [
>                  "GigabitEthernet1/0/1",
>                  "GigabitEthernet1/0/2",
>                  "GigabitEthernet1/0/20"
>              ],
>              "status": "active"
>          },
>          "499": {
>              "id": "499",
>              "mtu": "1500",
>              "name": "Lync_VoIP_Burnside1",
>              "ports": [
>                  ""
>              ],
>              "status": "active"
>          }
>      }

Your vlans are string because of the quotes around 35 and 499.


> I want to be able to reference the data in here.  Example, I am looking to
> loop through al *.ports.  I'm trying to do the following which does not work
> 
>   vars:
>     old_vlan: 35
>     new_vlan: 45

You are here making variables with int.


>    - name: Change vlan old_vlan to new_vlan for all ports in list
>      debug:
>        msg: "Old VLAN is {{ old_vlan }} and port {{ item }} needs to be
> changed"
>      loop: '{{ cisco_ios.vlans["{{ old_vlan }}"].ports }}'

You can't have nested {{ }}, if you are in template mode you are in template 
mode so just loose the inner {{ }}.
But since your data is a string and you variable is a int you would need to 
filter you int's to a string 

  loop: '{{ cisco_ios.vlans[old_vlan | string].ports }}'

Or change old_vlan to a strings and do

  loop: '{{ cisco_ios.vlans[old_vlan].ports }}'


-- 
Kai Stian Olstad

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/acfaf6fb-d6c6-1d34-7ec8-15dd1d4a7da4%40olstad.com.

Reply via email to