在尝试解析Ansible中的命令结果时,我遇到了同样的挑战。
所以结果是:
{
"changed": true,
"instance_ids": [
"i-0a243240353e84829"
],
"instances": [
{
"id": "i-0a243240353e84829",
"state": "running",
"hypervisor": "xen",
"tags": {
"Backup": "FES",
"Department": "Research"
},
"tenancy": "default"
}
],
"tagged_instances": [],
"_ansible_no_log": false
}
我想将值解析到ansible playbook 中state
的寄存器中。result
我是这样做的:
由于结果是散列数组的散列,即state
在数组的 index ( 0
) 散列中instances
,我修改了我的剧本,使其看起来像这样:
---
- name: Manage AWS EC2 instance
hosts: localhost
connection: local
# gather_facts: false
tasks:
- name: AWS EC2 Instance Restart
ec2:
instance_ids: '{{ instance_id }}'
region: '{{ aws_region }}'
state: restarted
wait: True
register: result
- name: Show result of task
debug:
var: result.instances.0.state
我将命令的值保存register
在一个名为的变量中result
,然后state
使用以下方法获取变量中的值:
result.instances.0.state
这次命令运行时,我得到的结果如下:
TASK [Show result of task] *****************************************************
ok: [localhost] => {
"result.instances.0.state": "running"
}
就这样。
我希望这有帮助