有没有办法通过 Ansible 标签终止所有 EC2 实例?
Is there any way to terminate all EC2 instances by tags with Ansible?
所以我有一个非常简单的 ansible 脚本来终止我使用标签过滤的 EC2 实例。
- name: Destroy Web Instance.
hosts: localhost
connection: local
vars_files:
- group_vars/all
tasks:
- name: Gather Web Instance EC2 Facts.
ec2_instance_info:
region: "{{ region }}"
filters:
"tag:Type": "web"
aws_access_key: "{{ec2_access_key}}"
aws_secret_key: "{{ec2_secret_key}}"
register: ec2_web
- name: Kill EC2 Instance
ec2:
instance_ids: "{{ ec2_web.instances[0].instance_id }}"
state: absent
region: "{{ region }}"
aws_access_key: "{{ec2_access_key}}"
aws_secret_key: "{{ec2_secret_key}}"
脚本运行良好,但当同一标签中有多个实例时,它只会终止第一个。有什么方法可以终止这些标签中的每个实例吗?
instance_ids: "{{ ec2_web.instances[0].instance_id }}"
这只是一个实例,因此只会终止一个实例。您可以使用 count_tag
来计算具有特定标签的实例并使用 exact_count
终止实例的确切数量
本文档末尾的示例
https://docs.ansible.com/ansible/latest/collections/amazon/aws/ec2_module.html
所以我有一个非常简单的 ansible 脚本来终止我使用标签过滤的 EC2 实例。
- name: Destroy Web Instance.
hosts: localhost
connection: local
vars_files:
- group_vars/all
tasks:
- name: Gather Web Instance EC2 Facts.
ec2_instance_info:
region: "{{ region }}"
filters:
"tag:Type": "web"
aws_access_key: "{{ec2_access_key}}"
aws_secret_key: "{{ec2_secret_key}}"
register: ec2_web
- name: Kill EC2 Instance
ec2:
instance_ids: "{{ ec2_web.instances[0].instance_id }}"
state: absent
region: "{{ region }}"
aws_access_key: "{{ec2_access_key}}"
aws_secret_key: "{{ec2_secret_key}}"
脚本运行良好,但当同一标签中有多个实例时,它只会终止第一个。有什么方法可以终止这些标签中的每个实例吗?
instance_ids: "{{ ec2_web.instances[0].instance_id }}"
这只是一个实例,因此只会终止一个实例。您可以使用 count_tag
来计算具有特定标签的实例并使用 exact_count
本文档末尾的示例
https://docs.ansible.com/ansible/latest/collections/amazon/aws/ec2_module.html