Creating dynamic hosts using ec2 module

37 views
Skip to first unread message

ori stoliar

unread,
Jan 11, 2016, 8:40:58 AM1/11/16
to Ansible Project
Hi,

I am new with using the dynamic hosts option. I am creating ec2 instances and creating a dynamic host group so I could run several different roles on them after the instances are created.

My issue is that after the instances are created my other roles are being ran only on the first host in the inventory.

site.yml
- name: Spin up EC2 servers
hosts: ec2_instances
connection: local
gather_facts: true
roles:
- ec2
tags:
- ec2

- hosts: dynamic_hosts
gather_facts: false
tasks:
- ping:
- debug: var=hostvars[inventory_hostname]
- debug: msg=dynamic_hosts
roles:
- ping
tags:
- ec2

Tasks file:
- name: Launch Instance
ec2:
group_id: "{{ hostvars[inventory_hostname].group_id }}"
count: 1
instance_type: 't2.nano'
image: '{{ hostvars[inventory_hostname].image }}'
wait: true
region: 'region'
keypair: keypair
instance_tags: "{{ hostvars[inventory_hostname].tags }}"
profile: profile_name
register: ec2

- name: Add hosts group temporary inventory group 
add_host:
name: "{{ item.public_ip }}"
groups: dynamic_hosts
ansible_ssh_host: "{{ item.public_ip }}"
ansible_ssh_private_key_file: file.pem
ansible_ssh_user: user
ec2_instance_ids: "{{ ec2.instance_ids }}"
with_items: ec2.instances

inventory file
[ec2_instances]
ec2test1 image="image_id" tags="{ 'env': 'test', 'Name': 'test1' }" group_id='group'
ec2test2 image="image_id" tags="{ 'env': 'test', 'Name': 'test2' }" group_id='group'

I run the playbook like this:
ansible-playbook --tags=ec2 -i inventory site.yml

The outcome is both ec2test1\2 instances are created but the ping role is being run only on the first instance in the inventory file(ec2test1).
It seems that the dynamic_hosts group that I am creating will not assign more than 1 object there.

Please assist.
Ori.




ori stoliar

unread,
Jan 17, 2016, 11:18:48 AM1/17/16
to Ansible Project
Anyone?

Its version 1.9.4. 
 
Reply all
Reply to author
Forward
0 new messages