使用Ansible

时间:2016-10-07 07:06:29

标签: amazon-ec2 ansible

我目前正在为使用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 ,但这有点笨拙。

1 个答案:

答案 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来电stoppedstartstop_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,但会保持实例状态不变。