Hi,
I’m trying to register the output of a command which returns json.
When I do this as a standalone task (not role) it works fine, for example:
- name: x
 hosts: localhost
 tasks:
- shell: aws iam list-server-certificates
 register: y
- set_fact:
 test: “{{ y.stdout }}”
- debug: msg=“{{ item.Arn }}”
 with_items: test.ServerCertficateMetadataList
Will correctly report the Arn for all my certificates, however, when I perform the same action in a role:
- 
name: x 
 shell: aws iam list-server-certificates
 register: output
- 
name: y 
 set_fact: json=“{{ output.stdout }}”
- 
debug: msg=“{{ json }}” 
- 
debug: msg=“{{ item }}” 
 with_items: json.ServerCertificateMetadataList
it fails with the following message:
debug msg=“{{ json }}”] ***********************************
ok: [127.0.0.1] => {
“msg”: "{u’ServerCertificateMetadataList’: [{u’ServerCertificateId’: …
debug msg=“{{ item }}”] ***********************************
ok: [127.0.0.1] => (item=json.ServerCertificateMetadataList) => {
“item”: “json.ServerCertificateMetadataList”,
“msg”: “json.ServerCertificateMetadataList”
}
Differences in debug output between the task and the role:
tasks: “msg”: "{‘ServerCertificateMetadataList’: [{‘ServerCertificateId’:
role: “msg”: "{u’ServerCertificateMetadataList’: [{u’ServerCertificateId’:
Hope someone can help.
Thanks,
Nico.