我已经执行了创建aws实例的简单任务。
实例创建之后,我从AWS Web控制台终止了ec2实例。稍后,我向其中添加了更多任务,但是无法使用这些任务创建ec2实例。
我一直收到以下错误消息:
致命:[localhost]:失败! => {“已更改”:false,“ msg”:“具有id ['i-0f513aec91787e83d']的实例是先前创建的,但此后已终止-使用(可能不同)'instance-id'参数”}
它将不断报告以前的实例ID。我可以看到我的AWS控制台中没有这样的实例。
有人可以向我解释为什么会这样吗?
- name: get any running ec2 instance
ec2_instance_info:
aws_access_key: "{{ec2_access_key}}"
aws_secret_key: "{{ec2_secret_key}}"
region: "{{region}}"
filters:
instance-state-name: ['running']
register: ec2_list
- name: Display ec2_list
debug: msg="{{item.instance_id}}"
with_items: "{{ec2_list.instances}}"
- name: Terminate Any running Instances
ec2:
state: 'absent'
instance_ids: "{item.instance_id}"
with_items: "{{ec2_list.instances}}"
- name: Create new ec-2 instance
ec2:
aws_access_key: "{{ec2_access_key}}"
aws_secret_key: "{{ec2_secret_key}}"
key_name: "{{key_name}}"
id: "{{id}}"
instance_type: t2.micro
image: "{{image}}"
region: "{{region}}"
vpc_subnet_id: "{{vpc_subnet_id}}"
wait: yes
count: 1
assign_public_ip: yes
register: ec2
- name: Wait for ssh to come up
delegate_to: "{{ item.public_dns_name }}"
wait_for_connection:
delay: 60
timeout: 320
loop: "{{ ec2.instances }}"
- name: Terminate currently running Instances
ec2:
state: 'absent'
instance_ids: "{{ec2.instance_ids}}"
答案 0 :(得分:1)
当您删除EC2时,AWS不会立即删除它。您必须等待几分钟,然后AWS才能删除VM。此外,您不能创建两个具有相同实例ID的虚拟机。
您应该避免手动定义自己的实例ID。例如,您可以使用标签来选择您的EC2(您可以将多个具有相同标签的虚拟机)
示例:
ec2:
instance_tags:
tag1: "tag1"
tag2: "tag2"
....
然后,您可以选择或删除具有相同标签的虚拟机
答案 1 :(得分:1)
ec2 ansible模块的文档说:
id:此标识符在实例终止后至少24小时内有效,以后不应再用于其他呼叫。
您更改了此ID吗?