--- # 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 local_action: ec2 keypair={{keypair}} group={{security_group}} instance_type={{instance_type}} image={{image}} wait=true count=5 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 local_action: add_host hostname={{item.public_ip}} groupname=deploy with_items: ${ec2.instances} - name: Wait for the instances to boot by checking the ssh port local_action: wait_for host={{item.public_dns_name}} port=22 delay=60 timeout=320 state=started 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 local_action: ec2_vol volume_size=20 instance={{item.id}} 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