使用ansible map从json获取值

时间:2016-08-12 08:44:06

标签: json dictionary ansible ansible-playbook mappy

我需要从此结果中获取UserId:

      ok: [localhost] => {"ansible_facts": {"Usernamelis": "", "_raw_params": "\"{u'Users': [{u'UserName': u'reo', u'PasswordLastUsed': u'2016-01-08T14:00:34Z', u'CreateDate': u'2016-01-06T14:34:37Z', u'UserId': u'AIDABBBBBBBZGGASHKPKKYRI4', u'Path': u'/', u'Arn': u'arn:aws:iam::590456900000:user/reo'},{u'UserName': u'rake', u'PasswordLastUsed': u'2016-01-08T14:00:34Z', u'CreateDate': u'2016-01-06T14:34:37Z', u'UserId': u'GIDAJCAZGFFFFFFFFKYRI4', u'Path': u'/', u'Arn': u'arn:aws:iam::590456900000:user/rake'}]}}\""}

这是我的Ansible代码:

register: users_result

- set_fact: Usernamelis= "{{ users_result.stdout | from_json }}"

register: users_result0

- name: simple

debug:
msg: "{{ item }}"
with_items: "{{  users_result0.ansible_facts._raw_params | map(attribute='UserId') | list }}"

由于

1 个答案:

答案 0 :(得分:1)

你的_raw_params中有一个带有序列化python dict的字符串。
我不知道在Ansible中将它转换回对象的简单方法 如果您找到用JSON替换它的方法,可以使用users_result0.ansible_facts._raw_params['Users'] | map(attribute='UserId') | list作为循环。