如何从Ansible中的stdout json获取特定的属性值

问题描述

instance_tags.stdout 输出看起来像

enter image description here

休闲段的预期输出 App Server开发

- name: get instance tags
  win_shell: aws ec2 --region us-east-1 describe-tags \ --filters "Name=resource-id,Values={{instance_id}}"
  register: instance_tags


- name: echo instance tags
  debug:
    msg: "{{instance_tags.stdout | json_query('Tags[?Key==''AMSPatchGroup''].Value')}}"

但是实际输出

enter image description here

解决方法

您至少想要instance_tags.stdout | from_json | ...,因为.stdout是一个字符串,而不是实际的结构

可以通过一个简单的实验看到这种行为,该实验显示{{ '{"a":"b"}' | json_query("a") }}返回""就像您的经历一样,但是{{ '{"a":"b"}' | from_json | json_query("a") }}会产生"b"