json_query - 获取当前节点的对象键
json_query - Get object key of current node
我正在尝试访问当前节点的对象键
pkgs:
pkg1:
package_description: xzy
owner: node1
pkg2:
package_description: desc2
owner: node2
我需要的是一个像这样的对象
- name: pkgs1
package_description: xyz
owner: node1
- name: pkg
package_description: desc2
owner: node2
这是我创建的查询,但不确定如何访问 "key"
- debug:
msg: "{{ clusters.json | json_query(qry) | flatten }}"
verbosity: 2
vars:
qry: '[*].pkgs.*.{"package_description": package_description, "ower": owner, "name": ??}'
下面的查询可以完成工作
- set_fact:
pkgl: "{{ pkgs|
dict2items|
json_query('[].{name: key,
package_description: value.package_description,
owner: value.owner}') }}"
- debug:
var: pkgl
给予
"pkgl": [
{
"name": "pkg2",
"owner": "node2",
"package_description": "desc2"
},
{
"name": "pkg1",
"owner": "node1",
"package_description": "xzy"
}
]
相同的结果给出了没有json_query
的任务
- set_fact:
pkgl: "{{ pkgl|default([]) +
[{'name': item.key,
'package_description': item.value.package_description,
'owner': item.value.owner}] }}"
loop: "{{ pkgs|dict2items }}"
我正在尝试访问当前节点的对象键
pkgs:
pkg1:
package_description: xzy
owner: node1
pkg2:
package_description: desc2
owner: node2
我需要的是一个像这样的对象
- name: pkgs1
package_description: xyz
owner: node1
- name: pkg
package_description: desc2
owner: node2
这是我创建的查询,但不确定如何访问 "key"
- debug:
msg: "{{ clusters.json | json_query(qry) | flatten }}"
verbosity: 2
vars:
qry: '[*].pkgs.*.{"package_description": package_description, "ower": owner, "name": ??}'
下面的查询可以完成工作
- set_fact:
pkgl: "{{ pkgs|
dict2items|
json_query('[].{name: key,
package_description: value.package_description,
owner: value.owner}') }}"
- debug:
var: pkgl
给予
"pkgl": [
{
"name": "pkg2",
"owner": "node2",
"package_description": "desc2"
},
{
"name": "pkg1",
"owner": "node1",
"package_description": "xzy"
}
]
相同的结果给出了没有json_query
- set_fact:
pkgl: "{{ pkgl|default([]) +
[{'name': item.key,
'package_description': item.value.package_description,
'owner': item.value.owner}] }}"
loop: "{{ pkgs|dict2items }}"