--- # 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 # # The play operates on the local (Ansible control) machine. - name: Stage instance(s) hosts: local connection: local remote_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 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 add_host: hostname={{item.public_ip}} groupname=deploy with_items: ec2.instances - name: Wait for the instances to boot by checking the ssh port 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 ec2_vol: volume_size=20 instance={{item.id}} with_items: ec2.instances # This play targets the new host group - name: Configure instance hosts: deploy remote_user: root # Do some stuff on each instance .... tasks: - name: Ensure NTP is up and running service: name=ntpd state=started - name: Install Apache Web Server yum: pkg=httpd state=latest