12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- ---
- - name: Launch instance(s)
- hosts: localhost
- connection: local
- gather_facts: no
- vars:
- inst_region: us-east-1
- atomic_ami: ami-8e239fe6
- user_data_file: user_data.txt
- oo_vpc_subnet_id: # Purposely left blank, these are here to be overridden in env vars_files
- oo_assign_public_ip: # Purposely left blank, these are here to be overridden in env vars_files
- vars_files:
- - vars.yml
- - "vars.{{ oo_env }}.yml"
- tasks:
- - name: Launch instances in VPC
- ec2:
- state: present
- region: "{{ inst_region }}"
- keypair: mmcgrath_libra
- group_id: "{{ oo_security_group_ids }}"
- instance_type: m3.large
- image: "{{ atomic_ami }}"
- count: "{{ oo_new_inst_names | oo_len }}"
- user_data: "{{ lookup('file', user_data_file) }}"
- wait: yes
- assign_public_ip: "{{ oo_assign_public_ip }}"
- vpc_subnet_id: "{{ oo_vpc_subnet_id }}"
- when: oo_vpc_subnet_id
- register: ec2_vpc
- - set_fact:
- ec2: "{{ ec2_vpc }}"
- when: oo_vpc_subnet_id
- - name: Launch instances in Classic
- ec2:
- state: present
- region: "{{ inst_region }}"
- keypair: mmcgrath_libra
- group: ['Libra', '{{ oo_env }}', '{{ oo_env }}_proxy', '{{ oo_env }}_proxy_atomic']
- instance_type: m3.large
- image: "{{ atomic_ami }}"
- count: "{{ oo_new_inst_names | oo_len }}"
- user_data: "{{ lookup('file', user_data_file) }}"
- wait: yes
- when: not oo_vpc_subnet_id
- register: ec2_classic
- - set_fact:
- ec2: "{{ ec2_classic }}"
- when: not oo_vpc_subnet_id
- - name: Add new instances public IPs to the atomic proxy host group
- add_host: "hostname={{ item.public_ip }} groupname=new_ec2_instances"
- with_items: ec2.instances
- - name: Add Name and environment tags to instances
- ec2_tag: "resource={{ item.1.id }} region={{ inst_region }} state=present"
- with_together:
- - oo_new_inst_names
- - ec2.instances
- args:
- tags:
- Name: "{{ item.0 }}"
- - name: Add other tags to instances
- ec2_tag: "resource={{ item.id }} region={{ inst_region }} state=present"
- with_items: ec2.instances
- args:
- tags: "{{ oo_new_inst_tags }}"
- - name: Add new instances public IPs to oo_hosts_to_config
- add_host: "hostname={{ item.0 }} ansible_ssh_host={{ item.1.public_ip }} groupname=oo_hosts_to_config"
- with_together:
- - oo_new_inst_names
- - ec2.instances
- - debug: var=ec2
- - name: Wait for ssh
- wait_for: "port=22 host={{ item.public_ip }}"
- with_items: ec2.instances
- - name: Wait for root user setup
- command: "ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null root@{{ item.public_ip }} echo root user is setup"
- register: result
- until: result.rc == 0
- retries: 20
- delay: 10
- with_items: ec2.instances
- # Apply the configs, seprate so that just the configs can be run by themselves
- - include: config.yml
|