(Hopefully this comes in after my first reply, since they have to be
approved, the order might be weird!)
I messed up in my earlier response, I forgot that ec2.results.instances is
an array. That's going to be trickier than I thought, since you have an
array of arrays you need to reference.
In the exact example you gave, where there's only once instance per subnet,
you could cheat and do something like:
hostname={{ item.instances[0].private_ip }}
But that's not very helpful if you spin up more than one instance per
subnet.
I'd be curious to see if this syntax works in Ansible (python slices)...
can't think of a quick and easy way to test it, or I'd give a more
confident suggestion of it, but worth a shot:
... hostname={{ item.instances[:].private_ip }} ...
with_items: ec2.results
On Tuesday, December 30, 2014 3:00:36 AM UTC-7, Mark Maas wrote:
>
> Hi List,
>
> I’m trying to create 1 (or more) instances inside different subnet’s where
> each subnet is a different AZ in Amazon. That way of using AZ’s makes for
> some better fail-safes.
>
> So:
>
> ---
> - hosts: localhost
> connection: local
> gather_facts: no
> vars:
> #your region
> region: eu-west-1
> AWS_ACCESS_KEY_ID: snipped
> AWS_SECRET_ACCESS_KEY: snipped
> ceph_nodes:
> 1a:
> subnet: subnet-snippeda
> count: 1
> 1b:
> subnet: subnet-snippedb
> count: 1
> 1c:
> subnet: subnet-snippedc
> count: 1
> tasks:
> - name: Maak 1 Ceph host in elke gekozen AZ
> local_action:
> module: ec2
> aws_access_key: "{{ AWS_ACCESS_KEY_ID }}"
> aws_secret_key: "{{ AWS_SECRET_ACCESS_KEY }}"
> region: "{{ region }}"
> vpc_subnet_id: "{{ item.value.subnet }}"
> key_name: snipped
> instance_type: t2.micro
> image: ami-30ff5c47
> wait: yes
> group: 'backend ceph'
> volumes:
> - device_name: /dev/sdb
> device_type: standard
> volume_size: 128
> delete_on_termination: false
> instance_tags:
> Name: ci.ceph.{{ item.key }}
> group: ceph{{ item.key }}
> environment: development
> exact_count: "{{ item.value.count }}"
> count_tag:
> group: ceph{{ item.key }}
> register: ec2
> with_dict: ceph_nodes
>
> - debug: var=ec2
>
> when that runs, the variable “ec2” contains:
>
> ok: [localhost] => {
> "ec2": {
> "changed": true,
> "msg": "All items completed",
> "results": [
> {
> "changed": true,
> "instance_ids": [
> "i-snipped"
> ],
> "instances": [
> {
> "ami_launch_index": "0",
> "architecture": "x86_64",
> "dns_name": "",
> "ebs_optimized": false,
> "hypervisor": "xen",
> "id": "i-snipped",
> "image_id": "ami-30ff5c47",
> "instance_type": "t2.micro",
> "kernel": null,
> "key_name": "snipped",
> "launch_time": "2014-12-30T09:45:55.000Z",
> "placement": "eu-west-1a",
> "private_dns_name":
> "ip-10-220-225-9.eu-west-1.compute.internal",
> "private_ip": "10.220.225.9",
> "public_dns_name": "",
> "public_ip": null,
> "ramdisk": null,
> "region": "eu-west-1",
> "root_device_name": "/dev/sda1",
> "root_device_type": "ebs",
> "state": "running",
> "state_code": 16,
> "virtualization_type": "hvm"
> }
> ],
> "invocation": {
> "module_args": "",
> "module_name": "ec2"
> },
> "item": {
> "key": "1a",
> "value": {
> "count": 1,
> "subnet": "subnet-snipped"
> }
> },
> "tagged_instances": [
> {
> "ami_launch_index": "0",
> "architecture": "x86_64",
> "dns_name": "",
> "ebs_optimized": false,
> "hypervisor": "xen",
> "id": "i-snipped",
> "image_id": "ami-30ff5c47",
> "instance_type": "t2.micro",
> "kernel": null,
> "key_name": "snipped",
> "launch_time": "2014-12-30T09:45:55.000Z",
> "placement": "eu-west-1a",
> "private_dns_name":
> "ip-10-220-225-9.eu-west-1.compute.internal",
> "private_ip": "10.220.225.9",
> "public_dns_name": "",
> "public_ip": null,
> "ramdisk": null,
> "region": "eu-west-1",
> "root_device_name": "/dev/sda1",
> "root_device_type": "ebs",
> "state": "running",
> "state_code": 16,
> "virtualization_type": "hvm"
> }
> ]
> },
> {
> "changed": true,
> "instance_ids": [
> "i-snipped"
> ],
> "instances": [
> {
> "ami_launch_index": "0",
> "architecture": "x86_64",
> "dns_name": "",
> "ebs_optimized": false,
> "hypervisor": "xen",
> "id": "i-snipped",
> "image_id": "ami-30ff5c47",
> "instance_type": "t2.micro",
> "kernel": null,
> "key_name": "snipped",
> "launch_time": "2014-12-30T09:46:17.000Z",
> "placement": "eu-west-1c",
> "private_dns_name":
> "ip-10-220-227-66.eu-west-1.compute.internal",
> "private_ip": "10.220.227.66",
> "public_dns_name": "",
> "public_ip": null,
> "ramdisk": null,
> "region": "eu-west-1",
> "root_device_name": "/dev/sda1",
> "root_device_type": "ebs",
> "state": "running",
> "state_code": 16,
> "virtualization_type": "hvm"
> }
> ],
> "invocation": {
> "module_args": "",
> "module_name": "ec2"
> },
> "item": {
> "key": "1c",
> "value": {
> "count": 1,
> "subnet": "subnet-snipped"
> }
> },
> "tagged_instances": [
> {
> "ami_launch_index": "0",
> "architecture": "x86_64",
> "dns_name": "",
> "ebs_optimized": false,
> "hypervisor": "xen",
> "id": "i-snipped",
> "image_id": "ami-30ff5c47",
> "instance_type": "t2.micro",
> "kernel": null,
> "key_name": "snipped",
> "launch_time": "2014-12-30T09:46:17.000Z",
> "placement": "eu-west-1c",
> "private_dns_name":
> "ip-10-220-227-66.eu-west-1.compute.internal",
> "private_ip": "10.220.227.66",
> "public_dns_name": "",
> "public_ip": null,
> "ramdisk": null,
> "region": "eu-west-1",
> "root_device_name": "/dev/sda1",
> "root_device_type": "ebs",
> "state": "running",
> "state_code": 16,
> "virtualization_type": "hvm"
> }
> ]
> },
> {
> "changed": true,
> "instance_ids": [
> "i-snipped"
> ],
> "instances": [
> {
> "ami_launch_index": "0",
> "architecture": "x86_64",
> "dns_name": "",
> "ebs_optimized": false,
> "hypervisor": "xen",
> "id": "i-snipped",
> "image_id": "ami-30ff5c47",
> "instance_type": "t2.micro",
> "kernel": null,
> "key_name": "snipped",
> "launch_time": "2014-12-30T09:46:45.000Z",
> "placement": "eu-west-1b",
> "private_dns_name":
> "ip-10-220-226-191.eu-west-1.compute.internal",
> "private_ip": "10.220.226.191",
> "public_dns_name": "",
> "public_ip": null,
> "ramdisk": null,
> "region": "eu-west-1",
> "root_device_name": "/dev/sda1",
> "root_device_type": "ebs",
> "state": "running",
> "state_code": 16,
> "virtualization_type": "hvm"
> }
> ],
> "invocation": {
> "module_args": "",
> "module_name": "ec2"
> },
> "item": {
> "key": "1b",
> "value": {
> "count": 1,
> "subnet": "subnet-snipped"
> }
> },
> "tagged_instances": [
> {
> "ami_launch_index": "0",
> "architecture": "x86_64",
> "dns_name": "",
> "ebs_optimized": false,
> "hypervisor": "xen",
> "id": "i-snipped",
> "image_id": "ami-30ff5c47",
> "instance_type": "t2.micro",
> "kernel": null,
> "key_name": "snipped",
> "launch_time": "2014-12-30T09:46:45.000Z",
> "placement": "eu-west-1b",
> "private_dns_name":
> "ip-10-220-226-191.eu-west-1.compute.internal",
> "private_ip": "10.220.226.191",
> "public_dns_name": "",
> "public_ip": null,
> "ramdisk": null,
> "region": "eu-west-1",
> "root_device_name": "/dev/sda1",
> "root_device_type": "ebs",
> "state": "running",
> "state_code": 16,
> "virtualization_type": "hvm"
> }
> ]
> }
> ]
> }
> }
>
> when I then try to add these new hosts to a group:
>
> - name: Add new instances to group
> add_host: hostname={{ item.instances.value.private_ip }}
> groupname=ceph_launched
> with_items: ec2.results
>
> I’m getting the error:
>
> TASK: [Add new instances to group]
> ********************************************
> fatal: [localhost] => One or more undefined variables: 'list object' has no
> attribute 'value'
>
> FATAL: all hosts have already failed -- aborting
>
> I’ve tried a few different ways of referencing the private_ip, but I’m not
> getting the syntax right.
>
> Can anyone point me in the right direction here?
>
> Thanks!
> Mark
> ...
--
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/4cadfaad-b08d-4de2-83d2-d58777561b07%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.