77 lines
2.1 KiB
YAML
77 lines
2.1 KiB
YAML
- name: Remove the oldest AMI and associated snapshots
|
|
hosts: localhost
|
|
connection: local
|
|
gather_facts: True
|
|
|
|
vars:
|
|
enable_debug: False
|
|
aws_profile: aws-ansible
|
|
log_destination: /tmp/ansible-ami-cleanup.log
|
|
ami_tag:
|
|
"tag:DestroyImage": 'true'
|
|
|
|
tasks:
|
|
- name: Register the AWS_REGION environment variable.
|
|
set_fact:
|
|
aws_region_env_var: "{{ lookup('env', 'AWS_REGION') }}"
|
|
register: aws_region_env_var
|
|
|
|
- name: Fail if the AWS_REGION environment var is not set
|
|
fail:
|
|
msg: "The AWS_REGION environment variable is not set"
|
|
when: not aws_region_env_var
|
|
|
|
- name: Gather facts about all AMIs with given tag.
|
|
ec2_ami_info:
|
|
profile: "{{ aws_profile }}"
|
|
owners: self
|
|
filters: "{{ ami_tag }}"
|
|
register: ami_list
|
|
|
|
- name: Check if log file already exists
|
|
stat:
|
|
path: "{{ log_destination }}"
|
|
register: logfile
|
|
|
|
- name: Create log file
|
|
file:
|
|
state: touch
|
|
path: "{{ log_destination }}"
|
|
when: logfile.stat.exists == False
|
|
|
|
- name: debug
|
|
debug:
|
|
msg: "{{ ami_list }}"
|
|
when: enable_debug
|
|
|
|
- name: oldest ami
|
|
set_fact:
|
|
oldest_ami: "{{ ami_list.images | sort(attribute='creation_date') | first}}"
|
|
when: ami_list.images
|
|
|
|
- name: debug
|
|
debug:
|
|
msg: "{{ oldest_ami }}"
|
|
when: enable_debug and ami_list.images
|
|
|
|
- name: Deregister AMI.
|
|
ec2_ami:
|
|
profile: "{{ aws_profile }}"
|
|
image_id: "{{ oldest_ami.image_id }}"
|
|
state: absent
|
|
delete_snapshot: yes
|
|
when: ami_list.images
|
|
|
|
- name: LOG action
|
|
lineinfile:
|
|
line: "{{ ansible_date_time.iso8601 }} AMI CLEANUP - Deregistered AMI: {{ oldest_ami.image_id }}"
|
|
dest: "{{ log_destination }}"
|
|
when: ami_list.images
|
|
|
|
- name: LOG action
|
|
lineinfile:
|
|
line: "{{ ansible_date_time.iso8601 }} AMI CLEANUP - Removed snapshots: {{ item.ebs.snapshot_id }}"
|
|
dest: "{{ log_destination }}"
|
|
with_items: "{{ oldest_ami.block_device_mappings }}"
|
|
when: ami_list.images
|