AnsibleでAWSの任意のNATゲートウェイを削除する

NATゲートウェイは、存在するだけで1時間ごとに課金される模様(料金 - Amazon VPC | AWS)。
不要になったら簡単に削除できるように、Ansible化しておきたい。

環境

  • Ansible 2.8

方針

  1. ec2_vpc_nat_gateway_factsモジュールのfiltersオプションを使用して、削除したいゲートウェイのnat_gateway_idを取得する。
  2. ec2_vpc_nat_gatewayモジュールのnat_gateway_idオプションに、取得したidを指定して削除する。合わせて紐づくElasticIPも削除されるように指定する。

Playbook

---
- hosts: localhost
  connection: local
  gather_facts: no

  vars:
    aws_vpc_nat_gateway_absent:
      profile: your_profile
      region: ap-northeast-1
      filters:
        tag:Name: anonymous
      wait: yes
      wait_timeout: 300

  tasks:
    - name: Find nat gateway to want to absent
      ec2_vpc_nat_gateway_facts:
        profile: "{{ aws_vpc_nat_gateway_absent.profile }}"
        region: "{{ aws_vpc_nat_gateway_absent.region }}"
        filters: "{{ aws_vpc_nat_gateway_absent.filters }}"
      register: found_nat_gateways
    
    - name: Delete found nat gateways
      ec2_vpc_nat_gateway:
        state: absent
        release_eip: yes
        nat_gateway_id: "{{ item.nat_gateway_id }}"
        wait: "{{ aws_vpc_nat_gateway_absent.wait }}"
        wait_timeout: "{{ aws_vpc_nat_gateway_absent.wait_timeout }}"
      with_items: "{{ found_nat_gateways.result }}"
      when: item.state != 'deleted'