--- - name: Terminate instance(s) hosts: localhost connection: local become: no gather_facts: no vars_files: - vars.yml tasks: - add_host: name: "{{ item }}" groups: oo_hosts_to_terminate ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user }}" ansible_become: "{{ deployment_vars[deployment_type].become }}" with_items: "{{ (groups['tag_clusterid_' ~ cluster_id] | default([])) | difference(['localhost']) }}" - name: Unsubscribe VMs hosts: oo_hosts_to_terminate roles: - role: rhel_unsubscribe when: deployment_type in ['atomic-enterprise', 'enterprise', 'openshift-enterprise'] and ansible_distribution == "RedHat" and lookup('oo_option', 'rhel_skip_subscription') | default(rhsub_skip, True) | default('no', True) | lower in ['no', 'false'] - name: Terminate instances hosts: localhost connection: local become: no gather_facts: no tasks: - name: Remove tags from instances ec2_tag: resource: "{{ hostvars[item]['ec2_id'] }}" region: "{{ hostvars[item]['ec2_region'] }}" state: absent tags: environment: "{{ hostvars[item]['ec2_tag_environment'] }}" clusterid: "{{ hostvars[item]['ec2_tag_clusterid'] }}" host-type: "{{ hostvars[item]['ec2_tag_host-type'] }}" sub_host_type: "{{ hostvars[item]['ec2_tag_sub-host-type'] }}" with_items: "{{ groups.oo_hosts_to_terminate }}" when: "'oo_hosts_to_terminate' in groups" - name: Terminate instances ec2: state: absent instance_ids: ["{{ hostvars[item].ec2_id }}"] region: "{{ hostvars[item].ec2_region }}" ignore_errors: yes register: ec2_term with_items: "{{ groups.oo_hosts_to_terminate }}" when: "'oo_hosts_to_terminate' in groups" # Fail if any of the instances failed to terminate with an error other # than 403 Forbidden - fail: msg: "Terminating instance {{ item.ec2_id }} failed with message {{ item.msg }}" when: "'oo_hosts_to_terminate' in groups and item.has_key('failed') and item.failed" with_items: "{{ ec2_term.results }}" - name: Stop instance if termination failed ec2: state: stopped instance_ids: ["{{ item.item.ec2_id }}"] region: "{{ item.item.ec2_region }}" register: ec2_stop when: "'oo_hosts_to_terminate' in groups and item.has_key('failed') and item.failed" with_items: "{{ ec2_term.results }}" - name: Rename stopped instances ec2_tag: resource={{ item.item.item.ec2_id }} region={{ item.item.item.ec2_region }} state=present args: tags: Name: "{{ item.item.item.ec2_tag_Name }}-terminate" with_items: "{{ ec2_stop.results }}" when: ec2_stop | changed