Reputation: 3715
I am trying to access an object key of the current node
pkgs:
pkg1:
package_description: xzy
owner: node1
pkg2:
package_description: desc2
owner: node2
What I need is an object that looks like this
- name: pkgs1
package_description: xyz
owner: node1
- name: pkg
package_description: desc2
owner: node2
This is the query I created but am not sure how to access the "key"
- debug:
msg: "{{ clusters.json | json_query(qry) | flatten }}"
verbosity: 2
vars:
qry: '[*].pkgs.*.{"package_description": package_description, "ower": owner, "name": ??}'
Upvotes: 1
Views: 873
Reputation: 68189
The query below does the job
- set_fact:
pkgl: "{{ pkgs|
dict2items|
json_query('[].{name: key,
package_description: value.package_description,
owner: value.owner}') }}"
- debug:
var: pkgl
gives
"pkgl": [
{
"name": "pkg2",
"owner": "node2",
"package_description": "desc2"
},
{
"name": "pkg1",
"owner": "node1",
"package_description": "xzy"
}
]
The same result gives the task without json_query
- set_fact:
pkgl: "{{ pkgl|default([]) +
[{'name': item.key,
'package_description': item.value.package_description,
'owner': item.value.owner}] }}"
loop: "{{ pkgs|dict2items }}"
Upvotes: 1