2013-02-18 15:44:34 +00:00
---
# This playbook is an example for deploying multiple instances into EC2/Euca and "doing something" with them.
# - uses the ec2 and ec2_vol module.
#
# Run this with ansible-playbook and supply the private key for your EC2/Euca user (to access the instance in the second play), e.g:
# ansible-playbook eucalyptus-ec2-deploy.yml -v --private-key=/path/to/ec2/pri/key
- name : Stage instance(s)
hosts : local
connection : local
user : root
gather_facts : false
vars :
keypair : mykeypair
instance_type : m1.small
security_group : default
image : emi-048B3A37
# Launch 5 instances with the following parameters. Register the output.
tasks :
- name : Launch instance
2013-05-05 17:34:29 +00:00
local_action : ec2 keypair={{keypair}} group={{security_group}} instance_type={{instance_type}} image={{image}} wait=true count=5
2013-02-18 15:44:34 +00:00
register : ec2
# Use with_items to add each instances public IP to a new hostgroup for use in the next play.
- name : Add new instances to host group
2013-05-05 17:34:29 +00:00
local_action : add_host hostname={{item.public_ip}} groupname=deploy
2013-02-18 15:44:34 +00:00
with_items : ${ec2.instances}
# Use the ec2_vol module to create volumes for attachment to each instance. Use with_items to attach to each instance (by returned id) launched previously.
- name : Create a volume and attach
2013-05-05 17:34:29 +00:00
local_action : ec2_vol volume_size=20 instance={{item.id}}
2013-02-18 15:44:34 +00:00
with_items : ${ec2.instances}
# This play targets the new host group
- name : Configure instance
hosts : deploy
user : root
gather_facts : True
# Do some stuff on each instance ....
tasks :
- name : Ensure NTP is up and running
action : service name=ntpd state=started
- name : Install Apache Web Server
action : yum pkg=httpd state=latest