使用Ansible禁用ec2实例终止保护



我目前为使用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,但这是一个有点黑客。

让我们看一下源代码。

显示runningstopped呼叫startstop_instances()
状态restarted呼叫restart_instances()
这两个函数都遵循source_dest_checktermination_protection属性值。

你可以调用:

 - ec2:
     instance_ids: "{{ instance_ids }}"
     state: restarted
     region: "{{ aws_region }}"
     termination_protection: no

如果你不介意你的服务器重新启动。

或者使用ec2_remote_facts查询当前状态,并使用该状态作为参数调用ec2模块-这将改变termination_protection,但将保持实例的状态不变

最新更新