*Same way another looping issue is as follow (actual code):*
- name: "Task 2: Fetch EC2 details"
ec2_remote_facts:
aws_access_key: '{{ AwsAccesskey }}'
aws_secret_key: '{{ AwsSecretkey }}'
region: '{{ region }}'
filters:
instance_id: '{{ item }}'
register: ec2_hosts
with_items: "{{ awsec2id }}"
- debug: var=ec2_hosts
- debug: var=ec2_hosts.results[0].instances[0].private_ip_address
- debug: var=ec2_hosts.results[1].instances[0].private_ip_address
*with_items: Looping for the above:*
- name: looping
shell: 'printf "{{ item.instance[0].private_ip_address }}"'
with_items: "{{ ec2_hosts.results }}"
*Error:*
TASK [awsAtachEBSvolume : looping]
*************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"failed": true, "msg": "the field 'args'
has an invalid value, which appears to include a variable that is
undefined. The error was: 'dict object' has no attribute 'instance'\n\nThe
error appears to have been in
'/home/ansible/playbooks/roles/awsAtachEBSvolume/tasks/main.yml': line 30,
column 5, but may\nbe elsewhere in the file depending on the exact syntax
problem.\n\nThe offending line appears to be:\n\n - debug: var=awsec2id\n
- name: looping\n ^ here\n"}
to retry, use: --limit @/home/ansible/playbooks/rol.retry
*Output registered variable ec2_hosts, follow:*
ok: [localhost] => {
"changed": false,
"ec2_hosts": {
"changed": false,
"msg": "All items completed",
"results": [
{
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": false,
"instances": [
{
"ami_launch_index": "0",
"architecture": "x86_64",
"block_device_mapping": [
{
"attach_time": "2017-03-17T08:02:13.000Z",
"delete_on_termination": false,
"device_name": "/dev/xvda",
"status": "attached",
"volume_id": "vol-0573516d4320XXXXX"
},
{
"attach_time": "2017-03-21T08:32:27.000Z",
"delete_on_termination": false,
"device_name": "/dev/xvdl",
"status": "attached",
"volume_id": "vol-07556df02e90XXXXX"
}
],
"client_token": "IQNIH14887952XXXXX",
"ebs_optimized": false,
"groups": [
{
"id": "sg-dbcXXXXX",
"name": "launch-wizard-14"
}
],
"hypervisor": "xen",
"id": "i-0003df8d26bXXXXX",
"image_id": "ami-0b33XXXXX",
"instance_profile": null,
"interfaces": [
{
"id": "eni-8fdfbXXXXX",
"mac_address": "0e:df:73:4c:67:e6"
}
],
"kernel": null,
"key_name": "XXXXX",
"launch_time": "2017-03-21T04:02:10.000Z",
"monitoring_state": "disabled",
"persistent": false,
"placement": {
"tenancy": "default",
"zone": "us-east-1c"
},
"private_dns_name": "ip-XXXXX.ec2.internal",
"private_ip_address": "172.XXXXX",
"public_dns_name":
"ec2-XXXXX-156.compute-1.amazonaws.com",
"public_ip_address": "54.89.XXXXX",
"ramdisk": null,
"region": "us-east-1",
"requester_id": null,
"root_device_type": "ebs",
"source_destination_check": "true",
"spot_instance_request_id": null,
"state": "running",
"tags": {
"Name": "XXXXX"
},
"virtualization_type": "hvm",
"vpc_id": "vpc-76XXXXX"
}
],
"invocation": {
"module_args": {
"aws_access_key": "AKIAIGKMK7EXXXXX",
"aws_secret_key": "VALUE_SPECIFIED_IN_NOXXXXX",
"ec2_url": null,
"filters": {
"instance_id": "i-0003df8d26XXXXX"
},
"profile": null,
"region": "us-east-1",
"security_token": null,
"validate_certs": true
}
},
"item": "i-0003df8d26b5XXXXX"
},
{
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": false,
"instances": [
{
"ami_launch_index": "0",
"architecture": "x86_64",
"block_device_mapping": [
{
"attach_time": "2017-03-21T08:32:38.000Z",
"delete_on_termination": false,
"device_name": "/dev/xvdl",
"status": "attached",
"volume_id": "vol-0118435137XXXXX"
},
{
"attach_time": "2017-03-22T08:28:47.000Z",
"delete_on_termination": false,
"device_name": "/dev/sda1",
"status": "attached",
"volume_id": "vol-0e0516ea96XXXXX"
}
],
"client_token": "CrBZB1489737XXXXX",
"ebs_optimized": false,
"groups": [
{
"id": "sg-13d8076c",
"name": "launch-wizard-19"
}
],
"hypervisor": "xen",
"id": "i-04452f010e4cXXXXX",
"image_id": "ami-2051XXXXX",
"instance_profile": null,
"interfaces": [
{
"id": "eni-4c0efXXXXX",
"mac_address": "0e:d9:48:XXXXX"
}
],
"kernel": null,
"key_name": "bparmaXXXXX",
"launch_time": "2017-03-22T10:23:26.000Z",
"monitoring_state": "disabled",
"persistent": false,
"placement": {
"tenancy": "default",
"zone": "us-east-1c"
},
"private_dns_name": "ip-172-31-XXXXX.ec2.internal",
"private_ip_address": "172.31XXXXX",
"public_dns_name":
"ec2-34-207-XXXXX.compute-1.amazonaws.com",
"public_ip_address": "34.207.XXXXX",
"ramdisk": null,
"region": "us-east-1",
"requester_id": null,
"root_device_type": "ebs",
"source_destination_check": "true",
"spot_instance_request_id": null,
"state": "running",
"tags": {
"Name": "XXXXX"
},
"virtualization_type": "hvm",
"vpc_id": "vpc-76b6XXXXX"
}
],
"invocation": {
"module_args": {
"aws_access_key": "AKIAIGKMK7E3O2RXXXXX",
"aws_secret_key": "VALUE_SPECIFIED_IN_NO_XXXXX",
"ec2_url": null,
"filters": {
"instance_id": "i-04452f010XXXXX"
},
"profile": null,
"region": "us-east-1",
"security_token": null,
"validate_certs": true
}
},
"item": "i-04452f010e4cXXXXX"
}
]
}
}
On Wednesday, March 22, 2017 at 11:14:10 PM UTC+5:30, Bhavin Parmar wrote:
>
> The output (i.e. module: ec2_snapshot) of a registered variable (i.e.
> ec2_snap) returns multiple members.
>
> Playbook is:
> --- # Take Snapshot of EC2s
> - name: Take snapshot of EC2s
> hosts: local
> become: no
> connection: local
> gather_facts: yes
> vars:
> region: "us-east-1"
> awsec2id: ["i-037b596065189XXXXX","i-04452f010e4cXXXXX"]
> devname: "/dev/sda1"
> date: "{{ lookup('pipe', 'date +%Y/%m/%d-%H:%M') }}"
> tasks:
> - name: Create Root snapshots
> ec2_snapshot:
> region: '{{ region }}'
> instance_id: '{{ item }}'
> device_name: '{{ devname }}'
> description: 'snapshot of /dev/sda1 from {{ item }} taken {{ date
> }}'
> state: present
> snapshot_tags:
> frequency: daily
> source: '{{ devname }}'
> register: ec2_snap
> with_items: '{{ awsec2id }}'
> - debug: var=ec2_snap
> - debug: var=ec2_snap.results[0].invocation.module_args.device_name
> - debug: var=ec2_snap.results[0].item
> - debug: var=ec2_snap.results[0].volume_id
> - debug: var=ec2_snap.results[0].snapshot_id
> - name: "Task 2: Create files for each instance"
> command: touch /home/ansible/playbooks/common/variables/'{{ item
> }}.yml'
> with_items: "{{ awsec2id }}"
>
> - name: "Task 3: Add string instance_id to file for each instance"
> shell: 'printf "{{ item.volume_id }}" >
> /home/ansible/playbooks/common/variables/"{{ item.item }}"'
> with_items: "{{ ec2_snap.results }}"
> ...
>
> *Error making code:*
> - name: "Task 3: Add string instance_id to file for each instance"
> shell: 'printf "{{ item.volume_id }}" >
> /home/ansible/playbooks/common/variables/"{{ item.item }}"'
> with_items: "{{ ec2_snap.results }}"
>
> ec2_snap registered variable is having details of each of two snapshots in
> a relevant array element. How to create loop on them?
>
>
>
> *Short Output is as follow:*
>
> {
> "changed":false,
> "ec2_snap":{
> "changed":true,
> "msg":"All items completed",
> "results":[
> { },
> { }
> ]
> }
> }
>
> *The extended output is as follow:*
> ok: [localhost] => {
> "changed": false,
> "ec2_snap": {
> "changed": true,
> "msg": "All items completed",
> "results": [
> {
> "_ansible_item_result": true,
> "_ansible_no_log": false,
> "_ansible_parsed": true,
> "changed": true,
> "invocation": {
> "module_args": {
> "aws_access_key": null,
> "aws_secret_key": null,
> "description": "snapshot of /dev/sda1 from
> i-037b5960651XXXXX taken 2017/03/22-17:19",
> "device_name": "/dev/sda1",
> "ec2_url": null,
> "instance_id": "i-037b59606518XXXXX",
> "last_snapshot_min_age": 0,
> "profile": null,
> "region": "us-east-1",
> "security_token": null,
> "snapshot_id": null,
> "snapshot_tags": {
> "frequency": "daily",
> "source": "/dev/sda1"
> },
> "state": "present",
> "validate_certs": true,
> "volume_id": null,
> "wait": true,
> "wait_timeout": 0
> }
> },
> "item": "i-037b59606518XXXXX",
> "snapshot_id": "snap-08d7aeda75dbXXXXX",
> "tags": {
> "frequency": "daily",
> "source": "/dev/sda1"
> },
> "volume_id": "vol-09aec429dfcfXXXXX",
> "volume_size": 8
> },
> {
> "_ansible_item_result": true,
> "_ansible_no_log": false,
> "_ansible_parsed": true,
> "changed": true,
> "invocation": {
> "module_args": {
> "aws_access_key": null,
> "aws_secret_key": null,
> "description": "snapshot of /dev/sda1 from
> i-04452f010e4XXXXX taken 2017/03/22-17:20",
> "device_name": "/dev/sda1",
> "ec2_url": null,
> "instance_id": "i-04452f010e4cXXXXX",
> "last_snapshot_min_age": 0,
> "profile": null,
> "region": "us-east-1",
> "security_token": null,
> "snapshot_id": null,
> "snapshot_tags": {
> "frequency": "daily",
> "source": "/dev/sda1"
> },
> "state": "present",
> "validate_certs": true,
> "volume_id": null,
> "wait": true,
> "wait_timeout": 0
> }
> },
> "item": "i-04452f010e4caXXXXX",
> "snapshot_id": "snap-0f8cb9b9d7b4XXXXX",
> "tags": {
> "frequency": "daily",
> "source": "/dev/sda1"
> },
> "volume_id": "vol-0e0516ea9623XXXXX",
> "volume_size": 15
> }
> ]
> }
> }
>
>
>
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/d402a476-992a-4f10-a3c9-40facb6c4f97%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.