1

我有多个 clouformation 堆栈,并将它们的名称作为列表存储在CF_TEMPLATE_ITEMS

现在我正在尝试收集有关所有这些的信息(最后我想拥有所有这些的 stack_output):

- name: Get all facts for all cf stacks
  cloudformation_facts:
    stack_name: "{{ item }}"
  with_items: "{{ CF_TEMPLATE_ITEMS }}"

不幸的是,之后cloudformation只包含最后一个堆栈的信息。其他人的信息似乎被覆盖了。

我可以以某种方式从堆栈名称列表中找出所有 cloudformation 堆栈的事实吗?

4

1 回答 1

4

是的,每次运行都会cloudformation_facts覆盖事实。cloudformation

要从每次运行中收集数据,register循环结果并将其重新格式化为干净的 dict,如下所示:

- cloudformation_facts:
    stack_name: "{{ item }}"
  with_items: "{{ CF_TEMPLATE_ITEMS }}"
  register: cf_tmp
- set_fact:
    cf: "{{ dict(cf_tmp.results | map(attribute='ansible_facts.cloudformation') | map('dictsort') | sum(start=[])) }}"

此代码未经测试。这应该为您cf提供以所有堆栈事实为键的 dict。

于 2016-11-18T07:08:41.497 回答