Ansible Parse JSON 来自寄存器的数组
Ansible Parse JSON Array from Register
相关Post:
我有一个 Ansible 播放列表,它注册了一个 return 变量:
- 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
我已经尝试了以下所有方法,none 有效:
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
是一个比 with_items
或 with_*
更现代的 Ansible 概念
解决方案
- 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 是一个比 with_items 或 with_*
更现代的 Ansible 概念
相关Post:
我有一个 Ansible 播放列表,它注册了一个 return 变量:
- 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
我已经尝试了以下所有方法,none 有效:
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
是一个比 with_items
或 with_*
解决方案
- 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 是一个比 with_items 或 with_*
更现代的 Ansible 概念