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.