I have the same issue, need to instantiate multiple instances in different 
configuration, possibly more than one instance per configuration. 
Provisioning the instances works file but I don't know how to iterate over 
the result which is an array of hashes and I need to iterate over 
var[x].instances.

Is this possible with ansible?

On Friday, September 5, 2014 at 6:33:37 PM UTC-7, Tim Van de Walle wrote:
>
> I have a role that launches ec2 instances, registers them in a group and 
> waits for the ssh port to respond before continuing on in provisioning. The 
> play works as expected, however for reliability reasons we have to launch 
> instances in more than one availability zone. This requires executing the 
> ec2 module multiple times with different definitions. We can't use count to 
> launch multiple instances. The standard task for the role is listed below 
> (this only launches one instance definition at a time):
>
> - name: Launch image(s)
>   local_action:
>     module: ec2
>     region: "{{item.ec2_region}}"
>     zone: "{{item.ec2_zone}}"
>     instance_type: "{{item.ec2_instance_type}}"
>     image: "{{item.ec2_image}}"
>     key_name: "{{item.ec2_keypair}}"
>     exact_count: "{{item.ec2_exact_count}}"
>     group: "{{item.ec2_security_groups}}"
>     instance_tags: "{{item.ec2_tags}}"
>     count_tag: "{{item.ec2_tags}}"
>     vpc_subnet_id: "{{item.ec2_vpc_subnet_id}}"
>     instance_profile_name: "{{item.ec2_instance_profile_name}}"
>     wait: true
>   register: ec2
>
> - name: Add new servers to group for configuration
>   local_action: add_host hostname={{item.public_dns_name}} groupname={{
> ec2_groupname}}
>   with_items: ec2.instances
>   when: ec2.changed
>
>
> - name: Wait for the instances to boot by checking the ssh port
>   local_action: wait_for host={{item.public_dns_name}} port=22 delay=60 
> timeout=320 state=started
>   with_items: ec2.instances
>   when: ec2.changed
>
>
> To simplify the calling playbook I decided to pass in a list of ec2 
> definitions and use with_items to launch them. The launching of the 
> instances works fine, but I can't seem to find the right way to use the 
> registered result. The playbook and a slightly edited version of the 
> registered result is listed below. I need to be able to loop through the 
> instances in the results list, but it doesn't seem like the looping 
> constructs work in this situation. Anybody run into this kind of pattern 
> and solve it in a different way? I feel like maybe I'm just coming at it 
> from the wrong direction.
>
> - name: Launch image(s)
>   local_action:
>     module: ec2
>     region: "{{item.ec2_region}}"
>     zone: "{{item.ec2_zone}}"
>     instance_type: "{{item.ec2_instance_type}}"
>     image: "{{item.ec2_image}}"
>     key_name: "{{item.ec2_keypair}}"
>     exact_count: "{{item.ec2_exact_count}}"
>     group: "{{item.ec2_security_groups}}"
>     instance_tags: "{{item.ec2_tags}}"
>     count_tag: "{{item.ec2_tags}}"
>     vpc_subnet_id: "{{item.ec2_vpc_subnet_id}}"
>     instance_profile_name: "{{item.ec2_instance_profile_name}}"
>     wait: true
>   register: ec2
>   with_items: ec2_defs
>
> The registered result looks like this:
>
> ok: [localhost] => {
>     "ec2": {
>         "changed": true, 
>         "msg": "All items completed", 
>         "results": [
>             {
>                 "changed": true, 
>                 "instance_ids": [
>                     "i-85170f6a"
>                 ], 
>                 "instances": [
>                     {
>                         "ami_launch_index": "0", 
>                         "architecture": "x86_64", 
>                         "ebs_optimized": false, 
>                         "hypervisor": "xen", 
>                     }
>                 ], 
>                 ]
>             }, 
>             {
>                 "changed": true, 
>                 "instance_ids": [
>                     "i-9c18cf77"
>                 ], 
>                 "instances": [
>                     {
>                         "ami_launch_index": "0", 
>                         "architecture": "x86_64", 
>                         "ebs_optimized": false, 
>                         "hypervisor": "xen", 
>                     }
>                 ], 
>                 ]
>             }
>         ]
>     }
>
> Thanks.
>
> Tim
>
>
>

-- 
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/eeca4802-bbbd-42e7-a307-09d45a8f6eae%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to