Ansible Parse Json Array from Register

Ansible Parse Json Array from Register

Related Post: ansible parse json array reply from api

I have an Ansible playlist which registers a return variable:

- 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

So the details is a JSON object like this:

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

All I want to do is write a text file with each instance_id in there:

i-1111abcde

I've tried all of the following, none working:

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...

Solution

- 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 }}"

Note: loop is a more modern Ansible concept that with_items or with_*

1

1 Answer

Solution

- 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 }}"

Note: loop is a more modern Ansible concept that with_items or with_*

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Robert Thorne
Author

Robert Thorne

Robert Thorne covers electric vehicle innovations, autonomous driving systems, global mobility trends, and automotive engineering developments.