получить cloudformation_facts для нескольких стеков облачной информации с with_items в доступе

У меня есть несколько стеков облачности, и я сохранил их имена в виде списка в CF_TEMPLATE_ITEMS

Теперь я пытаюсь собрать информацию обо всех из них (в конце я хочу получить stack_output всех из них):

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

К сожалению, впоследствии cloudformation содержит информацию только для последней стека. Похоже, что информация для остальных перезаписана.

Могу ли я каким-то образом собрать факты для всех стеков облачной информации из списка имен стеков?


person Nathan    schedule 17.11.2016    source источник
comment
Это вся пьеса? Я не вижу register   -  person helloV    schedule 18.11.2016
comment
cloudformation_facts отображает результат в облачных формах без использования регистра   -  person Nathan    schedule 18.11.2016
comment
Хорошо, спасибо, но как мне подключиться к этому стеку или любому экземпляру EC2?   -  person Illusionist    schedule 28.11.2016


Ответы (1)


Да, 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 со всеми вашими фактами стека в качестве ключей.

person Konstantin Suvorov    schedule 18.11.2016
comment
Как бы вы сделали это с amazon.aws.cloudformation_info? Теперь, когда cloudformation_facts устарел - person tepez; 15.06.2021