| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- - name: Launch EC2 instances
- amazon.aws.ec2_instance:
- availability_zone: "{{ ec2_launch_zone | default(omit) }}"
- exact_count: "{{ ec2_launch_count }}"
- filters: '{ "tag:{{ ec2_launch_tag_name }}": "{{ ec2_launch_tag_value }}", "instance-state-name": [ "running" ] }'
- image_id: "{{ ec2_launch_ami }}"
- instance_type: "{{ ec2_launch_ec2type }}"
- key_name: "{{ ec2_launch_key }}"
- network:
- assign_public_ip: "{{ ec2_launch_pub_ip }}"
- interfaces: "{{ ec2_launch_eni is defined and [ { 'id': ec2_launch_eni } ] or omit }}"
- region: "{{ ec2_launch_region }}"
- security_groups: "{{ ec2_launch_sec_groups is defined and ec2_launch_sec_groups | split(';') or omit }}"
- tags: '{ "{{ ec2_launch_tag_name }}": "{{ ec2_launch_tag_value }}" }'
- volumes:
- - device_name: "{{ ec2_launch_vol_dev }}"
- ebs:
- delete_on_termination: "{{ ec2_launch_vol_del }}"
- encrypted: True
- volume_size: "{{ ec2_launch_vol_size }}"
- volume_type: "{{ ec2_launch_vol_type }}"
- vpc_subnet_id: "{{ ec2_launch_subnet | default(omit) }}"
- wait: True
- register: ec2_launch_instances
- notify: known_hosts
- delegate_to: localhost
- - name: Wait a few ticks for AWS to settle
- ansible.builtin.pause:
- seconds: 7
- when: ec2_launch_instances.changed
- - name: Find tagged instances
- amazon.aws.ec2_instance_info:
- region: "{{ ec2_launch_region }}"
- filters: '{ "tag:{{ ec2_launch_tag_name }}": "{{ ec2_launch_tag_value }}",
- "instance-state-name": [ "running" ] }'
- register: ec2_launch_tagged
- when: ec2_launch_sec_groups is defined
- delegate_to: localhost
- - name: Update instance security groups
- amazon.aws.ec2_instance:
- instance_ids: [ "{{ ec2_launch_tagged.instances[0].instance_id }}" ]
- security_groups: "{{ ec2_launch_sec_groups | split(';') }}"
- vpc_subnet_id: "{{ ec2_launch_subnet }}"
- when: ec2_launch_sec_groups is defined and ec2_launch_subnet is defined
- delegate_to: localhost
- - name: Update ENI security groups
- amazon.aws.ec2_eni:
- eni_id: "{{ ec2_launch_tagged.instances[0].network_interfaces[0].network_interface_id }}"
- security_groups: "{{ ec2_launch_sec_groups | split(';') }}"
- subnet_id: "{{ ec2_launch_subnet }}"
- when: ec2_launch_sec_groups is defined
- delegate_to: localhost
- - name: Grab our local and global addresses
- include_role:
- name: ec2_hosts
- vars:
- ec2_hosts_tag: "{{ ec2_launch_tag_name }}"
- - name: Update route53 A record
- include_role:
- name: route53
- vars:
- route53_record: "{{ item.key }}.{{ ec2_launch_domain }}"
- route53_value: "{{ item.value }}"
- loop: "{{ ec2_hosts | dict2items }}"
- register: ec2_launch_A
- - name: Update route53 AAAA record
- include_role:
- name: route53
- vars:
- route53_type: AAAA
- route53_record: "{{ item.key }}.{{ ec2_launch_domain }}"
- route53_value: "{{ item.value }}"
- loop: "{{ ec2_hosts_v6 | dict2items }}"
- register: ec2_launch_AAAA
- - name: Trigger keys update
- debug: msg="IP addresses changed"
- when: ec2_launch_A.changed or ec2_launch_AAAA.changed
- notify: known_hosts
- - name: Find tagged instances
- amazon.aws.ec2_instance_info:
- region: "{{ ec2_launch_region }}"
- filters: '{
- "tag:{{ ec2_launch_tag_name }}": "{{ ec2_launch_tag_value }}",
- "instance-state-name": [ "running" ]
- }'
- register: ec2_launch_tagged
- delegate_to: localhost
- when: ec2_launch_ebs_match
- - name: Find tagged EBS volumes
- amazon.aws.ec2_vol_info:
- region: "{{ ec2_launch_region }}"
- filters: '{ "tag:{{ ec2_launch_tag_name }}": "{{ ec2_launch_tag_value }}" }'
- register: ec2_launch_ebs
- delegate_to: localhost
- when: ec2_launch_ebs_match
- - name: Attach matching volumes
- amazon.aws.ec2_vol:
- region: "{{ ec2_launch_region }}"
- id: "{{ ec2_launch_ebs.volumes[0].id }}"
- instance: "{{ ec2_launch_tagged.instances[0].instance_id }}"
- delegate_to: localhost
- when: ec2_launch_ebs_match
|