【发布时间】:2019-01-23 19:56:29
【问题描述】:
我已经阅读和搜索了很多,但无法解决这个问题。你能帮忙吗?
使用下面的内容,我需要提取属性“ipAddress”并推送到一个列表。实际数据是对象的字典,例如“host01”,但对于示例,我将数据减少到一个主机。
{
"host01": {
"fqdn": "host01.mydomain",
"interface": {
"Bundle-Ether1001": {
"ipAddress": "10.20.30.41",
"subnetMask": "255.255.255.252"
},
"Bundle-Ether1002": {
"ipAddress": "10.20.30.45",
"subnetMask": "255.255.255.252"
}
},
"timestamp": 1545420334
}
}
我的剧本如下:
---
- name : myplaybook
hosts: localhost
vars:
myjson: "{{ lookup('file', 'api.json') | from_json }}"
tasks:
- name: debug
debug:
msg: "{{myjson}}"
- name: debugallip
when: item.value.interface is defined
debug:
msg: "{{ item | selectattr('ipAddress', 'defined') | map('value.ipAddress') | list }}"
with_dict: "{{ myjson }}"
返回一个空列表? :(
任务 [调试] ******************************************* *********************************************** ok: [localhost] => (item={'value': {u'interface': {u'Bundle-Ether1001': {u'subnetMask': u'255.255.255.252', u'ipAddress': u'10.20 .30.41'}, u'Bundle-Ether1002': {u'subnetMask': u'255.255.255.252', u'ipAddress': u'10.20.30.45'}}, u'timestamp': 1545420334, u'fqdn' : u'host01.mydomain'}, 'key': u'host01'}) => { “味精”:[] }
我做错了什么??
【问题讨论】:
标签: loops dictionary filter ansible