我目前正在为使用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
?我能想到的唯一另一种方法是通过Ansible中的shell
任务使用 aws cli ,但这有点笨拙。
答案 0 :(得分:5)
我们来看看source code。
国家public async static Task<string> ConvertFiles(string s1, string s2, string webAddress)
{
using(HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Cleare();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
List<KeyValuePair<string,string>> formFields = new List<KeyValuePair<string,string>>();
formFields.Add(new KeyValuePair<string,string>("s1", s1));
formFields.Add(new KeyValuePair<string,string>("s2", s2));
var formContent = new FormUrlEncodedContent(formFields);
HttpResponseMessage response = await client.PostAsync(webAddress, formContent);
string content = await response.Content.ReadAsStringAsync();
Console.WriteLine("Result: " + content);
return content;
}
}
[HttpPost("/mshdf/import")]
public string ConvertFiles(FormDataCollection data)
{
Console.WriteLine(data.Get("s1"));
Console.WriteLine(data.Get("s2"));
return "woo";
}
和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
,但会保持实例状态不变。