如何从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"

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...