arrays - Ansible 解析来自 Register 的 JSON 数组

标签 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 是一个比 with_itemswith_*

更现代的 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 }}"

注意:循环是一个比 with_items 或 with_* 更现代的 Ansible 概念

关于arrays - Ansible 解析来自 Register 的 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51353335/

相关文章:

Sql查询获取json结果中没有列名的数组

javascript - 汇总对象数组并计算每个唯一对象名称的平均值

arrays - 在shell脚本中排序

python - Python urllib 的意外行为

ansible - 使用 Ansible 复制文件夹内容

ssh - 等待提权提示超时

Ansible:如何删除目录中的文件和文件夹?

javascript - 拆分字符串来初始化javascript数组有什么好处?

c++ - 转换和模板类型参数

jquery - 通过 Jquery 获取 jsonString 为空