Добавить переменную списка в другой список в 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}}"
Ответы
Ответ 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}] }}"