如何使用Ansible更新带有屏蔽参数的CloudFormation堆栈?

时间:2019-02-21 17:22:54

标签: ansible amazon-cloudformation ansible-template

我有一个使用Ansible cloudformation module创建的CloudFormation堆栈,然后有一些被掩盖的参数,这些参数是由一个单独的运营团队手动更新的。

现在,我想更新堆栈以执行版本升级,尽管这可以在AWS控制台中和通过AWS CLI轻松完成,但我似乎找不到通过Ansible模块执行此操作的方法。

根据另一篇here,有人指出不可能进行升级,唯一的方法就是根本不使用Ansible。

我尝试使用Ansible cloudformation_facts module尝试获取参数无济于事。还有其他方法可以从CloudFormation提取此数据,还是我必须接受我不能使用Ansible的信息?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Ansbile从cloudformation中获取所有参数,如下所示:

---
- name: Get CloudFormation stats
  cloudformation_facts:
    stack_name: "{{ stack_name }}"
    region: "{{ region }}"
  register: my_stack

如果您有一个名为“ subnet-id”的参数,则可以查看返回的内容:

---
- name: Get CloudFormation stats
  cloudformation_facts:
    stack_name: "{{ stack_name }}"
    region: "{{ region }}"
  register: my_stack

- debug: msg="{{ my_stack.ansible_facts.cloudformation[stack_name].stack_parameters.subnet-id }}"

返回看起来像这样:

ok: [localhost] => {
    "msg": "subnet12345"
}

但是,如果值被散列,则您将无法看到它们的值-因此答案是,在这种情况下,如果您尝试移至Ansbile,则不应直接更新cloudformation 。而是在源代码管理的加密文件中更新值,然后使用Ansible从那里构建。