Hi Will,
Updated changes but see an error, could you please let me know what is
missing? Inserted code for your reference.
fatal: [localhost]: FAILED! => {"changed": false, "msg": "argument
instance_tags is of type <type 'str'> and we were unable to convert to
dict: dictionary requested, could not parse JSON or key=value"}
---
- name: Create a sandbox instance
hosts: localhost
connection: local
gather_facts: True
vars:
aws_access_key: aabbccdd
aws_secret_key: aabbccddeeffgghhiijjkk
key_name: mykeypair
ec2_instance_count: 5
ec2_instance_tag:
name:webserver
instance_type: 't2.micro'
# instance_type: 'c4.2xlarge'
security_group: my_securitygroup
group: default
image: ami-00000000
# region: us-west-2a
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 }}"
count_tag: "{{ ec2_instance_tag }}"
ec2_url: "{{ ec2_url }}"
exact_count: "{{ ec2_instance_count }}"
group: "{{ security_group }}"
key_name: "{{ key_name }}"
image: "{{ image }}"
instance_type: "{{ instance_type }}"
instance_tags: "{{ ec2_instance_tag }}"
wait: true
# region: "{{ region }}"
vpc_subnet_id: subnet-buiuuyyt
# vpc_id: vpc-iuuytgfxds
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 }}"
On Sun, Apr 22, 2018 at 9:26 AM, Will McDonald <[email protected]> wrote:
> 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/ms
>> gid/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 a topic in the
> Google Groups "Ansible Project" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/ansible-project/4twB7g9pdNk/unsubscribe.
> To unsubscribe from this group and all its topics, 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
> <https://groups.google.com/d/msgid/ansible-project/CAKtKohSbX8%2B-1b0HmpUFkW-BksE4teRnSyvBbKCcoeu%3D4zUEzg%40mail.gmail.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/CALSWnawmPCBboRPvBSd4-6Ra%2Bkh76ajZonxd%3DQq%2Bs%3D%3Da4dxEsg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.