Как мне преобразовать список объектов в список строк в Ansible? - PullRequest
1 голос
/ 21 февраля 2020

У меня есть переменная в форме:

vars:
  somelist:
    - abc: 1
      def: 'somestring1'
    - abc: 2
      def: 'somestring2'
    - abc: 3
      def: 'somestring3'

, и я хотел бы передать следующий список некоторой переменной роли:

    - import_role:
        name: somerole
      vars:
        somevar:
          - '/somestring1/1/'
          - '/somestring2/2/'
          - '/somestring3/3/'

как я могу сопоставить объекты somelist в строку /{{ def }}/{{ abc }}/ и передать полученный список в somevar?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

В Ansible, задача ниже делает работу

    - set_fact:
        somevar: "{{ somevar|default([]) +
                     [ '/' ~ item.def ~ '/' ~ item.abc ~ '/'] }}"
      loop: "{{ somelist }}"
0 голосов
/ 21 февраля 2020

Вы можете использовать понимание списка.

somevar.extend([f'/{l.def}/{l.abc}/' for l in somelist])

...