Ansible объединить массивы в dict - PullRequest
1 голос
/ 02 марта 2020

У меня есть дикт с массивом, подобным этому

tests:
  test01:
    state: 'enabled'
    objects: 
      - 'A111'
      - 'B111'
  test02:
    state: 'enabled'
    objects:
      - 'C222'
      - 'D222'
  test03:
    state: 'enabled'
    objects:
      - 'E333'
      - 'F333'

Как объединить "объекты" массива вместе в одном выводе? Результат должен быть

"msg": "A111,B111,E333,F333,C222,D222"

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Здесь многоуровневый, но без жесткого кодирования элементов

- set_fact:
    tests_dict: "{{ item }}"
  with_dict: "{{ tests }}"
  register: tests_items

- set_fact:
    tests_objects: "{{ tests_objects }} + {{ item.item.value.objects }}"
  with_items: "{{ tests_items.results }}"
  vars:
    tests_objects: []

- debug:
    msg: "{{ tests_objects | join(',') }}"

ok: [127.0.0.1] => {"msg": "C222, D222, E333, F333, A111, B111" }

1 голос
/ 02 марта 2020

Это то, что вам нужно

  - debug:
     msg: "{{(tests.test01.objects,tests.test02.objects,tests.test03.objects)|flatten|join('\n')|replace('\n', ',')}}"

ok: [localhost] => {"msg": "A111, B111, C222, D222, E333, F333"}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...