【发布时间】:2020-04-22 16:30:48
【问题描述】:
我正在使用 Ansible,在我的剧本中我正在运行以下任务,其中我有多个循环以便从特定 xml 中检索不同的标签:
- name: Retrieve multiple xml tags valuei
xml:
xmlstring: "{{ item.string }}"
xpath: "{{ item.path }}"
content: text
loop:
- { path: "/rpc-reply/vlan-instance-information/vlan-instance-group/vlan-member/vlan-tag", string: "{{topology.xml}}" }
- { path: "/rpc-reply/vlan-instance-information/vlan-instance-group/vlan-member/vlan-member-interface", string: "{{topology.xml}}" }
register: tags_value
- debug:
msg: "{{ item.matches }}"
loop: "{{ tags_value.results }}"
loop_control:
label: "{{ item.matches }}"
所以我得到以下信息:
ok: [sss-sd1-02] => (item=[{u'vlan-member-interface': u'et-0/0/0.0*'}, {u'vlan-member-interface': u'et-0/0/1.0*'}]) => {
"msg": [
{
"vlan-member-interface": "et-0/0/0.0*"
},
{
"vlan-member-interface": "et-0/0/1.0*"
}
]
}
还有这个
ok: [sss-sd1-02] => (item=[{u'vlan-tag': u'4071'}, {u'vlan-tag': u'4072'}]) => {
"msg": [
{
"vlan-tag": "4071"
},
{
"vlan-tag": "4072"
}
]
}
有没有办法将 "vlan-member-interface": "et-0/0/0.0*" 和 "vlan-tag": "4071" 分组到 1 个结果中,无论是在这个任务中还是在另一个结果中?还有一种方法可以创建一个只有 {4071, 4072} 的列表吗?因为我不能像现在这样处理它!!!
【问题讨论】: