有没有办法通过 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