使用Ansible终止基于标签的EC2实例

使用Ansible终止基于标签的EC2实例

问题描述:

我很努力使这项工作没有成功..在这里,我的剧本。使用Ansible终止基于标签的EC2实例

首先按标签搜索我的机器,然后尝试终止它们。运行这样

- name: EC2 Facts 
    ec2_instance_facts: 
     region: us-east-1 
     filters: 
     "tag:Type": "staging" 
     aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
     aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 
    register: ec2 

    - name: Kill EC2 Instance 
    ec2: 
    instance_ids: "{{ item.instance_id }}" 
    state: "{{ state }}" 
    region: "{{ lookup('env', 'AWS_REGION') }}" 
    aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
    aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 
    with_items: "{{ ec2.instances }}" 

ansible-playbook ec2_id_kill.yml --extra-vars "state=absent" 

看起来ansible找不到INSTANCE_ID从我使用这个终止单个实例的事实

+0

什么是错误信息?你能修复代码缩进吗? – helloV

+0

“味精”:“图像参数是新实例所必需的”看起来可能无法获得正确的** instance_id **。我正在使用ansible-2.4 – lnx0101

+0

这可能是传递的'state'值不被使用/兑现。它使用'present'的默认值并尝试创建一个实例。如果您不修复缩进,则无法提供帮助。 – helloV

,你可以调整这个终止多例如:

- name: EC2 Facts 
    ec2_instance_facts: 
    region: us-east-1 
    filters: 
     "tag:Type": "staging" 
    aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
    aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 
    register: ec2 

- name: Kill EC2 Instance 
    ec2: 
    instance_ids: "{{ ec2.instances[0].id }}" 
    state: "{{ state }}" 
    region: "{{ lookup('env', 'AWS_REGION') }}" 
    aws_access_key: "{{ lookup('env', 'AWS_ACCESS_KEY_ID') }}" 
    aws_secret_key: "{{ lookup('env', 'AWS_SECRET_ACCESS_KEY') }}" 

Hope tha t帮助你

+0

仍然不工作...错误:致命:[localhost]:失败! => {“changed”:false,“failed”:true,“msg”:“图像参数是新实例所必需的”} – lnx0101

+0

它显示您正试图创建新实例而不是终止旧实例。请分享你的完整剧本 –