I need get a field into a json what has been generated wit uri module.
This is my json that contains two hosts colections hc1 y hc2.
I want to get the field id:693 of the host_collection hc1.
"created_at": "2018-10-18 13:29:01 UTC",
"description": null,
"id": 693,
"max_hosts": null,
"name": "hc1",
"organization_id": 1,
"permissions": {
"deletable": true,
"editable": true
},
"total_hosts": 0,
"unlimited_hosts": true,
"updated_at": "2018-10-18 13:29:01 UTC"
},
{
"created_at": "2018-10-18 13:29:04 UTC",
"description": null,
"id": 696,
"max_hosts": null,
"name": "hc2",
"organization_id": 1,
"permissions": {
"deletable": true,
"editable": true
},
"total_hosts": 0,
"unlimited_hosts": true,
"updated_at": "2018-10-18 13:29:04 UTC"
},
My playbook is this, but it fails.
- name: GET consulta api satellite
uri:
url: "https://xxxxxx/katello/api/host_collections/"
user: "{{user}}"
password: "{{password}}"
method: GET
return_content: yes
force_basic_auth: yes
validate_certs: no
headers:
Content-Type: "application/json"
status_code: [200,201,202,204,301,401]
register: hc
- name: GET ID d HC
debug:
var="hc.json.results.[?name=='hc1'].id"
When I execute de playbook, it appears the next error:
TASK [GET ID del HC] *******************************************************************************************************************************************************************************
fatal: []: FAILED! => {}
MSG:
template error while templating string: unexpected char u'?' at 19. String: {{hc.json.results.[?name=='hc1'].id}}
to retry, use: --limit @/awx/scripts/sat_uri/mb_get_host_collection.retry
If I put this option, go OK.
- name: GET ID del HC
debug:
var=hc.json.results[0].id
**TASK [GET ID del HC] *******************************************************************************************************************************************************************************
ok: [] => {
"hc.json.results[0].id": "693"
}**