Hi Navid, what version of Ansible are you running? You might try using
jinja2 braces around the ec2.instances variable in the with_items list, as
there was a bug recently about variables like that not expanding properly
(which should be fixed in 1.8.2).

On Thu, Dec 11, 2014 at 8:36 AM, Navid Paya <[email protected]> wrote:

> Hi all
> I'm trying to make some kind of automation to create an AMI out of an EC2
> instance. So I have this chunk that creates the instance:
>
> - name: Launch an Ubuntu 14.04 EC2 instance
>   hosts: localhost
>   connection: local
>   gather_facts: no
>   tasks:
>   - name: Find the latest Ubuntu AMI
>     ec2_ami_search: distro=ubuntu release=trusty region=ap-southeast-1
> store=ebs-ssd virt=hvm
>     register: ubuntu_image
>   - name: Start the new EC2 instance
>     ec2:
>       image: "{{ ubuntu_image.ami }}"
>       region: ap-southeast-1
>       zone: ap-southeast-1b
>       instance_type: t2.small
>       vpc_subnet_id: xxxxxxxxxxxxxxxx
>       group_id: ['sg-xxxxxxxx', 'sg-xxxxxxx']
>       key_name: random_key
>       wait: yes
>       wait_timeout: 500
>     register: ec2
>   - name: Add the new instance to host group
>     add_host: hostname={{ item.private_ip }} groupname=launched
>     with_items: ec2.instances
>   - name: Wait for SSH to come up on the new instance
>     wait_for: host={{ item.private_ip }} port=22 delay=60 timeout=320
> state=started
>     with_items: ec2.instances
>
> Then I try to use the instance and generate an AMI out of that:
>
> - name: Create an AMI from the provisioned instance
>   hosts: localhost
>   connection: local
>   gather_facts: no
>   tasks:
>   - ec2_ami: region=ap-southeast-1 instance_id={{ item.id }} wait=no
> name=basebox-2000000
>     with_items:
>       - ec2.instances
>
> - name: Delete the instance now that the AMI is created
>   hosts: localhost
>   connection: local
>   gather_facts: no
>   tasks:
>   - ec2:
>       region: ap-southeast-1
>       instance_ids: "{{ item.id }}"
>       state: 'absent'
>     with_items:
>       - ec2.instances
>
> But I get errors like this:
>
>
> TASK: [ec2_ami region=ap-southeast-1 instance_id={{ item.id }} wait=no
> name=basebox-2000000] ***
> fatal: [localhost] => One or more undefined variables: 'str object' has no
> attribute 'id'
>
> I guess I'm missing something with iterating over a hash but can't figure
> what. Any ideas?
>
>  --
> 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/cc359c02-afd3-4c71-931d-7c5db8fde6a6%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/cc359c02-afd3-4c71-931d-7c5db8fde6a6%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CAMFyvFip1qw%2B_bFSB2YrOqHoMYPwEL%2B4%2Bgckj18Y_CnWkE3J5g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to