retrieving facter_ec2_metadata from hostvars - can't get element in macs

I can drill down into hostvars like this:

`

  • debug:
    msg: “looking at interface macs: {{ hostvars[inventory_hostname].facter_ec2_metadata.network.interfaces.macs }}”

`

And I get something like this:

`

ok: [db01.deva.ecm] => {
“msg”: “looking at interface macs: {u’xx:xx:xx:xx:xx:xx’: {u’local-hostname’: u’ip-10-1-1-9.us-west-1.compute.internal’, u’security-groups’: u’sg_me’, u’vpc-ipv4-cidr-blocks’: u’10.1.0.0/16’, u’subnet-id’: u’subnet-009ae259d26e44f23’, u’vpc-ipv4-cidr-block’: u’10.1.0.0/16’, u’interface-id’: u’eni-0f706387a1423f329’, u’mac’: u’xx:xx:xx:xx:xx:xx, u’security-group-ids’: u’sg-034d209d935486e41’, u’local-ipv4s’: u’10.1.1.10’, u’owner-id’: u’784710449476’, u’subnet-ipv4-cidr-block’: u’10.1.1.0/24’, u’device-number’: u’0’, u’vpc-id’: u’vpc-1710943aba582459a’}}”
}

`

I get an error if I try to find the first/only mac address with the [0] approach like this:

`
{{ hostvars[inventory_hostname].facter_ec2_metadata.network.interfaces.macs[0] }}

`

or

`
{{ hostvars[inventory_hostname].facter_ec2_metadata.network.interfaces.macs.0 }}

`

What’s the trick to get to the values within the mac address?

Any tips would be appreciated, thanks,
Chris.

ansible 2.7.1
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/Users/cjefferies/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /Library/Python/2.7/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.10 (default, Aug 17 2018, 17:41:52) [GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)]

macs is a dict and not a list. Therefor using 0 to get the fist list element wont work.

To get information out of a dict you need to use the key which is the mac address in you case.

That’s too bad because I don’t have the mac address before I need to read its attributes. How might a person get a list of the mac addresses associated with the interfaces?

Thanks for the info.
Chris.

You could try using python method to get the keys .....macs.keys() this will return the list of all keys in macs.
So the fist one would be .....macs.keys()[0]

That worked, Kai. Thank you.