I think this is because you've defined the desired count in your vars but
not actually in the invocation of the ec2 module.

Something like this should work as you expect:

- name: create webserver instances
  hosts: localhost
  connection: local
  gather_facts: false

  vars:
    ec2_instance_count: 2
    ec2_instance_tag:
      name: webserver

  tasks:
    - name: provision ec2 webserver instances
      ec2:
        aws_access_key: "{{ aws_access_key }}"
        aws_secret_key: "{{ aws_secret_key }}"
        count_tag: "{{ ec2_instance_tag }}"
        ec2_url: "{{ ec2_url }}"
        exact_count: "{{ ec2_instance_count }}"
        groups: "{{ ec2_security_group }}"
        key_name: "{{ ec2_key_name }}"
        image: "{{ ec2_image }}"
        instance_tags: "{{ ec2_instance_tag }}"
        instance_type: "{{ ec2_instance_type }}"
        region: "{{ ec2_region }}"
        wait: true
      register: ec2

Cheers,

Will.



On 22 April 2018 at 16:12, Love <[email protected]> wrote:

> Dear Experts,
>
>
>
> How to launch multiple EC2 instances using ansible?
>
> I want to create an environment in AWS using below playbook but I see only
> one instance is being created when I execute below playbook.
>
>
> Could you please help with missing code/syntax here?
>
>
> Note: I'm using free account with AWS.
>
>
>
>
> ---
>
> - name: Create sandbox instances
>
>   hosts: localhost
>
>   gather_facts: True
>
>   vars:
>
>     aws_access_key: aabbccddeeffgghh
>
>     aws_secret_key: aabbccddeeffgghhiijjkkllmmnnoopp
>
>     key_name: mykeypair
>
>     count: 5
>
>     exact_count: 'count_tag'
>
>     instance_type: 't2.micro'
>
>     security_group: my_securitygroup
>
>     group: default
>
>     image: ami-00125160
>
>     ec2_url: https://ec2.us-west-2.amazonaws.com
>
>   tasks:
>
>     - name: Launch instance
>
>       ec2:
>
>          aws_access_key: "{{ aws_access_key }}"
>
>          aws_secret_key: "{{ aws_secret_key }}"
>
>          key_name: "{{ key_name }}"
>
>          group: "{{ security_group }}"
>
>          instance_type: "{{ instance_type }}"
>
>          count_tag: "{{ exact_count }}"
>
>          image: "{{ image }}"
>
>          wait: true
>
>          ec2_url: "{{ ec2_url }}"
>
>          vpc_subnet_id: subnet-edcf00db
>
>          assign_public_ip: yes
>
>       register: ec2
>
>
>     - name: Add new instance to host group
>
>       add_host:
>
>         hostname: "{{ item.public_ip }}"
>
>         groupname: launched
>
>       with_items: "{{ ec2.instances }}"
>
>
>     - name: Wait for SSH to come up
>
>       wait_for:
>
>         host: "{{ item.public_dns_name }}"
>
>         port: 22
>
>         delay: 60
>
>    timeout: 320
>
>         state: started
>
>       with_items: "{{ ec2.instances }}"
>
> --
> 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/51b431bb-e0dd-4765-9051-cf5dbc8d624c%40googlegroups.
> com
> <https://groups.google.com/d/msgid/ansible-project/51b431bb-e0dd-4765-9051-cf5dbc8d624c%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/CAKtKohSbX8%2B-1b0HmpUFkW-BksE4teRnSyvBbKCcoeu%3D4zUEzg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to