Here is my debug output from an ansible playbook:
"msg": {
"changed": false,
"failed": false,
"instances": [
{
.........
"private_dns_name": "ip-10-XXX-XXX-XX.ec2.internal",
"private_ip_address": "10.XXX.XXX.XX",
"product_codes": [],
"public_dns_name": "",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"security_groups": ["...."],
"source_dest_check": true,
......
"private_dns_name": "ip-10.XXX.XXX.XX.ec2.internal",
"private_ip_address": "10.XXX.XXX.XX",
"product_codes": [],
"public_dns_name": "",
"root_device_name": "/dev/sda1",
"root_device_type": "ebs",
"security_groups": ["...."],
"source_dest_check": true,
}
]
}
}
I want to do partition of disks from the created EC2 instances. output
variable consists of IP addresses
in JSON format where I want to loop through each IP address and get the disk information of the server, then I do partition using parted
module as per below.
- name: Collect Disk Information
setup:
gather_subset:
- hardware
delegate_to: "{{ output.instances[0].private_ip_address }}"
- name: Print disks Details
debug:
var: hostvars[inventory_hostname].ansible_devices.keys()|list
- name: Create Partition
parted:
device: "/dev/{{ item }}"
number: 1
part_type: 'primary'
state: present
delegate_to: "{{ output.instances[0].private_ip_address }}"
with_items: "{{ hostvars[inventory_hostname].ansible_devices.keys() }}"
This task can only do partition on the instances[0]
array, I want to loop through all the private_ip_address
in the output variable. How to achieve this?
I tried with below as well
Try 1:
delegate_to: "{{ item.private_ip_address }}"
loop: "{{ output.instances }}"