Hi all,
I’ve been looking for the best way to achieve what is mentioned in the title of the message but haven’t found any. At least not one that will produce a satisfactory result which can be used further down in the same playbook.
For example I’ve been testing the following loop:
- name: create instance
ec2: image=“{{ images[item.0.region] }}”
keypair={{ keypair }}
instance_type={{ instance_type }}
instance_tags=“{{ tags }}”
vpc_subnet_id={{ item.1.subnet }}
region={{ item.0.region }}
group_id={{ group_id }}
assign_public_ip=yes
wait=true
wait_timeout={{ wait_timeout }}
with_subelements: - vpc
- subnets
when: item.0.name == ec2_env
register: ec2_info
which does what I want, launches one instance per AZ in the chosen region, but the output registered is way too complicated to be of any use:
TASK: [debug var=ec2_info] ****************************************************
ok: [localhost] => {
“var”: {
“ec2_info”: {
“changed”: true,
“msg”: “All items completed”,
“results”: [
{
“changed”: false,
“skipped”: true
},
{
“changed”: false,
“skipped”: true
},
{
“changed”: false,
“skipped”: true
},
{
“changed”: false,
“skipped”: true
},
{
“changed”: false,
“skipped”: true
},
{
“changed”: false,
“skipped”: true
},
{
“changed”: false,
“skipped”: true
},
{
“changed”: true,
“instance_ids”: [
“i-xxxxxxxx”
],
“instances”: [
{
“ami_launch_index”: “0”,
“architecture”: “x86_64”,
“dns_name”: “xxxxxxxx.eu-west-1.compute.amazonaws.com”,
“ebs_optimized”: false,
“groups”: {
“sg-xxxxxxxx”: “sg-xxxxxxxx”
},
“hypervisor”: “xen”,
“id”: “i-xxxxxxxx”,
“image_id”: “ami-47a23a30”,
“instance_type”: “t2.micro”,
“kernel”: null,
“key_name”:“xxxxxxxx”,
“launch_time”: “2015-06-05T02:48:14.000Z”,
“placement”: “eu-west-1a”,
“private_dns_name”: “xxxxxxxx.eu-west-1.compute.internal”,
“private_ip”: “xxxxxxxx”,
“public_dns_name”: “xxxxxxxx.eu-west-1.compute.amazonaws.com”,
“public_ip”: “xxxxxxxx”,
“ramdisk”: null,
“region”: “eu-west-1”,
“root_device_name”: “/dev/sda1”,
“root_device_type”: “ebs”,
“state”: “running”,
“state_code”: 16,
“tags”: {},
“tenancy”: “default”,
“virtualization_type”: “hvm”
}
],
“invocation”: {
“module_args”: “image="ami-47a23a30" keypair=xxxxxxxx instance_type=t2.micro instance_tags="{‘Environment’: u’xxxxxxxx’, ‘Role’: u’server’, ‘Type’: ‘type’, ‘Name’: u’ec2-type-xxxxxxxx’, ‘Datacenter’: u’xxxxxxxx’}" vpc_subnet_id=subnet-xxxxxxxx region=eu-west-1 group_id=sg-xxxxxxxx assign_public_ip=yes wait=true wait_timeout=300”,
“module_name”: “ec2”
},
“item”: [
{
“cidr”: “xxxxxxxx”,
“name”: “xxxxxxxx”,
“region”: “eu-west-1”,
“subnets_app”: [
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1a”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1b”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1c”
}
],
“subnets_db”: [
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1a”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1b”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1c”
}
]
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1a”
}
],
“tagged_instances”:
},
{
“changed”: true,
“instance_ids”: [
“i-xxxxxxxx”
],
“instances”: [
{
“ami_launch_index”: “0”,
“architecture”: “x86_64”,
“dns_name”: “xxxxxxxx.eu-west-1.compute.amazonaws.com”,
“ebs_optimized”: false,
“groups”: {
“sg-xxxxxxxx”: “sg-xxxxxxxx”
},
“hypervisor”: “xen”,
“id”: “i-xxxxxxxx”,
“image_id”: “ami-47a23a30”,
“instance_type”: “t2.micro”,
“kernel”: null,
“key_name”:“xxxxxxxx”,
“launch_time”: “2015-06-05T02:48:46.000Z”,
“placement”: “eu-west-1b”,
“private_dns_name”: “xxxxxxxx.eu-west-1.compute.internal”,
“private_ip”: “xxxxxxxx”,
“public_dns_name”: “xxxxxxxx.eu-west-1.compute.amazonaws.com”,
“public_ip”: “xxxxxxxx”,
“ramdisk”: null,
“region”: “eu-west-1”,
“root_device_name”: “/dev/sda1”,
“root_device_type”: “ebs”,
“state”: “running”,
“state_code”: 16,
“tags”: {},
“tenancy”: “default”,
“virtualization_type”: “hvm”
}
],
“invocation”: {
“module_args”: “image="ami-47a23a30" keypair=xxxxxxxx instance_type=t2.micro instance_tags="{‘Environment’: u’xxxxxxxx’, ‘Role’: u’server’, ‘Type’: ‘type’, ‘Name’: u’ec2-type-xxxxxxxx’, ‘Datacenter’: u’xxxxxxxx’}" vpc_subnet_id=subnet-xxxxxxxx region=eu-west-1 group_id=sg-xxxxxxxx assign_public_ip=yes wait=true wait_timeout=300”,
“module_name”: “ec2”
},
“item”: [
{
“cidr”: “xxxxxxxx”,
“name”: “xxxxxxxx”,
“region”: “eu-west-1”,
“subnets_app”: [
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1a”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1b”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1c”
}
],
“subnets_db”: [
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1a”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1b”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1c”
}
]
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1b”
}
],
“tagged_instances”:
},
{
“changed”: true,
“instance_ids”: [
“i-xxxxxxxx”
],
“instances”: [
{
“ami_launch_index”: “0”,
“architecture”: “x86_64”,
“dns_name”: “xxxxxxxx.eu-west-1.compute.amazonaws.com”,
“ebs_optimized”: false,
“groups”: {
“sg-xxxxxxxx”: “sg-xxxxxxxx”
},
“hypervisor”: “xen”,
“id”: “i-xxxxxxxx”,
“image_id”: “ami-47a23a30”,
“instance_type”: “t2.micro”,
“kernel”: null,
“key_name”:“xxxxxxxx”,
“launch_time”: “2015-06-05T02:49:14.000Z”,
“placement”: “eu-west-1c”,
“private_dns_name”: “xxxxxxxx.eu-west-1.compute.internal”,
“private_ip”: “xxxxxxxx”,
“public_dns_name”: “xxxxxxxx.eu-west-1.compute.amazonaws.com”,
“public_ip”: “xxxxxxxx”,
“ramdisk”: null,
“region”: “eu-west-1”,
“root_device_name”: “/dev/sda1”,
“root_device_type”: “ebs”,
“state”: “running”,
“state_code”: 16,
“tags”: {},
“tenancy”: “default”,
“virtualization_type”: “hvm”
}
],
“invocation”: {
“module_args”: “image="ami-47a23a30" keypair=xxxxxxxx instance_type=t2.micro instance_tags="{‘Environment’: u’xxxxxxxx’, ‘Role’: u’server’, ‘Type’: ‘type’, ‘Name’: u’ec2-type-xxxxxxxx’, ‘Datacenter’: u’xxxxxxxx’}" vpc_subnet_id=subnet-xxxxxxxx region=eu-west-1 group_id=sg-xxxxxxxx assign_public_ip=yes wait=true wait_timeout=300”,
“module_name”: “ec2”
},
“item”: [
{
“cidr”: “xxxxxxxx”,
“name”: “xxxxxxxx”,
“region”: “eu-west-1”,
“subnets_app”: [
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1a”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1b”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1c”
}
],
“subnets_db”: [
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1a”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1b”
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1c”
}
]
},
{
“subnet”: “subnet-xxxxxxxx”,
“zone”: “eu-west-1c”
}
],
“tagged_instances”:
},
{
“changed”: false,
“skipped”: true
},
{
“changed”: false,
“skipped”: true
}
]
}
}
}
So, any idea how to make this usable? Or maybe share your experience if you have already done it?
Thanks,
Igor