从寄存器解析Ansible JSON数组

时间:2018-07-16 00:43:29

标签: arrays json ansible ansible-inventory

相关帖子:ansible parse json array reply from api

我有一个Ansible播放列表,其中记录了一个返回变量:

- name: Create Instance
ec2_instance:
  aws_access_key: "{{access_key}}"
  aws_secret_key: "{{secret_key}}"
  key_name: ***
  instance_type: t2.micro
  security_group: ***
  image_id: ami-39f8215b
  region: ***
register: details

因此details是这样的JSON对象:

{
"details": {
    "changed": false, 
    "changes": [], 
    "failed": false, 
    "instance_ids": [
        "i-1111abcde"
    ],
...
}

我要做的就是编写一个文本文件,其中每个instance_id

i-1111abcde

我尝试了以下所有方法,但均无效果:

debug:
  var: item
with_items: details['instance_ids']

debug:
  var: item.item
with_items: details['instance_ids']

debug:
  var: details.instance_ids
with_items: details
# This works, but prints the entire JSON array...

解决方案

- name: Debug Info
debug:
  var: item
loop: "{{details.instance_ids}}"

- name: Write Temp File
lineinfile:
  path: /tmp/temp.txt
  line: "{{ item }}"
loop: "{{ details.instance_ids }}"

注意:loop是一个更现代的Ansible概念,它是with_itemswith_*

1 个答案:

答案 0 :(得分:0)

解决方案

- name: Debug Info
  debug:
    var: item
  loop: "{{details.instance_ids}}"

- name: Write Temp File
lineinfile:
  path: /tmp/temp.txt
  line: "{{ item }}"
loop: "{{ details.instance_ids }}"

注意:循环是更现代的Ansible概念,它具有with_items或with _ *