mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Update JSON Query filter examples (#42432)
* Update JSON Query filter examples Correct syntax on one example Add more examples of escaping Change example to show joining list to string
This commit is contained in:
parent
72d7a1eb5c
commit
7b0dea45e9
1 changed files with 23 additions and 12 deletions
|
@ -457,40 +457,51 @@ Now, let's take the following data structure::
|
||||||
To extract all clusters from this structure, you can use the following query::
|
To extract all clusters from this structure, you can use the following query::
|
||||||
|
|
||||||
- name: "Display all cluster names"
|
- name: "Display all cluster names"
|
||||||
debug: var=item
|
debug:
|
||||||
loop: "{{domain_definition|json_query('domain.cluster[*].name')}}"
|
var: item
|
||||||
|
loop: "{{ domain_definition | json_query('domain.cluster[*].name') }}"
|
||||||
|
|
||||||
Same thing for all server names::
|
Same thing for all server names::
|
||||||
|
|
||||||
- name: "Display all server names"
|
- name: "Display all server names"
|
||||||
debug: var=item
|
debug:
|
||||||
loop: "{{domain_definition|json_query('domain.server[*].name')}}"
|
var: item
|
||||||
|
loop: "{{ domain_definition | json_query('domain.server[*].name') }}"
|
||||||
|
|
||||||
This example shows ports from cluster1::
|
This example shows ports from cluster1::
|
||||||
|
|
||||||
- name: "Display all server names from cluster1"
|
- name: "Display all ports from cluster1"
|
||||||
debug: var=item
|
debug:
|
||||||
loop: "{{domain_definition|json_query(server_name_cluster1_query)}}"
|
var: item
|
||||||
|
loop: "{{ domain_definition | json_query(server_name_cluster1_query) }}"
|
||||||
vars:
|
vars:
|
||||||
server_name_cluster1_query: "domain.server[?cluster=='cluster1'].port"
|
server_name_cluster1_query: "domain.server[?cluster=='cluster1'].port"
|
||||||
|
|
||||||
.. note:: You can use a variable to make the query more readable.
|
.. note:: You can use a variable to make the query more readable.
|
||||||
|
|
||||||
Or, alternatively::
|
Or, alternatively print out the ports in a comma separated string::
|
||||||
|
|
||||||
- name: "Display all server names from cluster1"
|
- name: "Display all ports from cluster1 as a string"
|
||||||
debug:
|
debug:
|
||||||
var: item
|
msg: "{{ domain_definition | json_query('domain.server[?cluster==`cluster1`].port') | join(', ') }}"
|
||||||
loop: "{{domain_definition|json_query('domain.server[?cluster=`cluster1`].port')}}"
|
|
||||||
|
|
||||||
.. note:: Here, quoting literals using backticks avoids escaping quotes and maintains readability.
|
.. note:: Here, quoting literals using backticks avoids escaping quotes and maintains readability.
|
||||||
|
|
||||||
|
Or, using YAML `single quote escaping <http://yaml.org/spec/current.html#id2534365>`_::
|
||||||
|
|
||||||
|
- name: "Display all ports from cluster1"
|
||||||
|
debug:
|
||||||
|
var: item
|
||||||
|
loop: "{{ domain_definition | json_query('domain.server[?cluster==''cluster1''].port') }}"
|
||||||
|
|
||||||
|
.. note:: Escaping single quotes within single quotes in YAML is done by doubling the single quote.
|
||||||
|
|
||||||
In this example, we get a hash map with all ports and names of a cluster::
|
In this example, we get a hash map with all ports and names of a cluster::
|
||||||
|
|
||||||
- name: "Display all server ports and names from cluster1"
|
- name: "Display all server ports and names from cluster1"
|
||||||
debug:
|
debug:
|
||||||
var: item
|
var: item
|
||||||
loop: "{{domain_definition|json_query(server_name_cluster1_query)}}"
|
loop: "{{ domain_definition | json_query(server_name_cluster1_query) }}"
|
||||||
vars:
|
vars:
|
||||||
server_name_cluster1_query: "domain.server[?cluster=='cluster2'].{name: name, port: port}"
|
server_name_cluster1_query: "domain.server[?cluster=='cluster2'].{name: name, port: port}"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue