AnsibleでAWSの任意のNATゲートウェイを削除する
NATゲートウェイは、存在するだけで1時間ごとに課金される模様(料金 - Amazon VPC | AWS)。
不要になったら簡単に削除できるように、Ansible化しておきたい。
環境
- Ansible 2.8
方針
- ec2_vpc_nat_gateway_factsモジュールのfiltersオプションを使用して、削除したいゲートウェイのnat_gateway_idを取得する。
- 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'