我目前为使用Ansible创建的所有实例启用termination_protection
,以防止控制台意外终止等。现在我想能够终止特定的实例与Ansible,但我不知道如何禁用终止保护对他们。
我认为这样可以达到目的:
- name: Disable termination protection
ec2:
instance_ids: "{{ instance_ids }}"
region: "{{ aws_region }}"
termination_protection: no
当我运行它时,我是如何得到这个错误信息的:
fatal: [localhost]: FAILED! => {
"changed": false,
"failed": true,
"msg": "image parameter is required for new instance"
}
看起来Ansible将我的脚本解释为实例创建请求。
是否有办法改变termination protection
与另一个模块?我能想到的唯一其他方法是使用aws cli通过一个shell
任务在Ansible,但这是一个有点黑客。
让我们看一下源代码。
显示running
和stopped
呼叫startstop_instances()
。
状态restarted
呼叫restart_instances()
。
这两个函数都遵循source_dest_check
和termination_protection
属性值。
你可以调用:
- ec2:
instance_ids: "{{ instance_ids }}"
state: restarted
region: "{{ aws_region }}"
termination_protection: no
如果你不介意你的服务器重新启动。
或者使用ec2_remote_facts
查询当前状态,并使用该状态作为参数调用ec2
模块-这将改变termination_protection
,但将保持实例的状态不变