使用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从我使用这个终止单个实例的事实
答
,你可以调整这个终止多例如:
- 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
它显示您正试图创建新实例而不是终止旧实例。请分享你的完整剧本 –
什么是错误信息?你能修复代码缩进吗? – helloV
“味精”:“图像参数是新实例所必需的”看起来可能无法获得正确的** instance_id **。我正在使用ansible-2.4 – lnx0101
这可能是传递的'state'值不被使用/兑现。它使用'present'的默认值并尝试创建一个实例。如果您不修复缩进,则无法提供帮助。 – helloV