【问题标题】:Is there any way to terminate all EC2 instances by tags with Ansible?有没有办法通过 Ansible 的标签终止所有 EC2 实例?
【发布时间】:2021-03-01 06:37:58
【问题描述】:

所以我有一个非常简单的 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}}"

脚本运行良好,但是当同一标签中有多个实例时,它只会终止第一个。有没有办法终止这些标签中的每个实例?

【问题讨论】:

    标签: amazon-ec2 ansible yaml ansible-2.x ansible-facts


    【解决方案1】:
    instance_ids: "{{ ec2_web.instances[0].instance_id }}"
    

    这只是一个实例,因此仅终止一个实例。您可以使用count_tag 计算具有特定标签的实例,并使用exact_count 终止实例的确切数量

    本文档末尾的示例

    https://docs.ansible.com/ansible/latest/collections/amazon/aws/ec2_module.html

    【讨论】:

    • 感谢您的帮助!我很尴尬,原来这是一个如此简单的修复。
    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2020-04-13
    • 2021-08-13
    • 2017-06-23
    • 2023-02-23
    • 2020-10-15
    • 2017-10-04
    • 2019-04-04
    相关资源
    最近更新 更多