无法从 Ansible 中的嵌套数组中提取数据



我试图为数组列表中的每个项提取vs_name的值,但看起来我做错了什么,但无法解决。

这是我想要解析的输出

ok: [localhost] => {
"msg": {
"AV-FAS": {
"vs_name": "AV-FAS",
"vs_type": "admin"
},
"AV-FAS-01": {
"vs_name": "AV-FAS-01",
"vs_type": "node"
},
"AV-FAS-02": {
"vs_name": "AV-FAS-02",
"vs_type": "node"
}

这是我的代码:

- name: populate vs list
set_fact: 
vs_list: "{{ vs_list|default([]) }} + [ '{{ item.vs_name }}' ]"
with_items: "{{ output }}"

Q:">提取vs_name的值">

A: 使用过滤器json_query。例如

- set_fact:
vs_list: "{{ output|json_query('*.vs_name') }}"

给出

"vs_list": [
"AV-FAS",
"AV-FAS-01",
"AV-FAS-02"
]

下一个选项是属性的映射。需要过滤器dict2items将字典转换为列表。例如,下面的任务给出了相同的结果

- set_fact:
vs_list: "{{ output|dict2items|
map(attribute='value.vs_name')|
list }}"

Q:">当vs_type='admin'时列出vs_name">

A: 将过滤器selectattr添加到管道中。例如

- set_fact:
vs_list: "{{ output|dict2items|
selectattr('value.vs_type', 'eq', 'admin')|
map(attribute='value.vs_name')|
list }}"

给出

"vs_list": [
"AV-FAS"
]

相关内容

  • 没有找到相关文章

最新更新