Подтвердить что ты не робот

Добавить переменную списка в другой список в Ansible

Можно ли добавить список переменных в статический список в недоступном?

Я могу определить весь список как переменную:

my_list:
  - 1
  - 2
  - 3

а затем используйте его в playbook как

something: {{my_list}}

Но я не могу найти, как это сделать (псевдокод):

list_to_append: 
  - 3
  - 4

а затем в playbook:

something:
  - 1
  - 2
  - {{append: list_to_append}}

Если это на самом деле невозможно, что бы вы предложили для моего варианта использования?

У меня есть список элементов в параметре, но некоторые из них optional и должны быть модифицируемы с использованием переменных.

Другими словами: у меня есть default values + optional values, который может или не может быть добавлен через переменные.

optional values не известны заранее, я мог бы добавить 1, 2 или 100 из них, поэтому они не являются статическими.

В основном у меня есть статический список по умолчанию ++, список настраиваемых переменных для добавления.

изменить: Я нашел это, но это только для with_items, и мне это нужно в обычном параметре:

  with_flattened:
   - "{{list1}}"
   - "{{list2}}"
4b9b3361

Ответ 1

Если вы действительно хотите добавить к контенту, вам нужно будет использовать модуль set_fact. Но если вы просто хотите использовать объединенные списки, это так же просто:

{{ list1 + list2 }}

С set_fact он будет выглядеть так:

- set_fact:
    list_merged: "{{ list1 + list2 }}"

ПРИМЕЧАНИЕ. Если вам нужно выполнить дополнительные операции над конкатенированными списками, обязательно группируйте их так:

- set_fact:
    list_merged: "{{ (list1 + list2) | ... }}"

Ответ 2

Следующее работало для меня с Ansible 2.1.2.0:

- name: Define list of mappings
  set_facts:
    something:
      - name: bla
        mode: 1

- name: Append list with additional mapping
  set_facts:
    something: "{{ something + [{'name': 'blabla', 'mode': 1}] }}"