将列表变量附加到 Ansible 中的另一个列表
Append list variable to another list in Ansible
是否可以在 ansible 中将变量列表附加到静态列表?
我可以将整个列表定义为一个变量:
my_list:
- 1
- 2
- 3
然后在剧本中使用它作为
something: {{my_list}}
但我似乎找不到如何执行此操作(伪代码):
list_to_append:
- 3
- 4
然后在剧本中:
something:
- 1
- 2
- {{append: list_to_append}}
如果这实际上是不可能的,您对我的用例有什么建议?
我在参数中有一个项目列表,但其中一些是 optional
并且应该可以使用变量进行修改。
换句话说:我有 default values
+ optional values
可以通过变量添加也可以不可以。
optional values
不是事先知道的,我可以添加 1、2 或 100 个,所以它们不是静态的。
我基本上有一个默认的静态列表 ++ 要附加的可配置变量列表。
编辑:
我找到了这个,但它仅适用于 with_items,我需要在普通参数中使用它:
with_flattened:
- "{{list1}}"
- "{{list2}}"
如果你真的想附加到内容,你需要使用 set_fact
模块。但如果你只想使用合并列表,就这么简单:
{{ list1 + list2 }}
set_fact
看起来像这样:
- set_fact:
list_merged: "{{ list1 + list2 }}"
注意:如果您需要对串联列表执行其他操作,请确保将它们分组如下:
- set_fact:
list_merged: "{{ (list1 + list2) | ... }}"
以下对 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}] }}"
您也可以从变量附加项目。
- set_fact:
files: '{{ files + more }}'
vars:
more:
- '{{playbook_dir}}/remote.sh'
- '{{playbook_dir}}/config.yml'
是否可以在 ansible 中将变量列表附加到静态列表?
我可以将整个列表定义为一个变量:
my_list:
- 1
- 2
- 3
然后在剧本中使用它作为
something: {{my_list}}
但我似乎找不到如何执行此操作(伪代码):
list_to_append:
- 3
- 4
然后在剧本中:
something:
- 1
- 2
- {{append: list_to_append}}
如果这实际上是不可能的,您对我的用例有什么建议?
我在参数中有一个项目列表,但其中一些是 optional
并且应该可以使用变量进行修改。
换句话说:我有 default values
+ optional values
可以通过变量添加也可以不可以。
optional values
不是事先知道的,我可以添加 1、2 或 100 个,所以它们不是静态的。
我基本上有一个默认的静态列表 ++ 要附加的可配置变量列表。
编辑: 我找到了这个,但它仅适用于 with_items,我需要在普通参数中使用它:
with_flattened:
- "{{list1}}"
- "{{list2}}"
如果你真的想附加到内容,你需要使用 set_fact
模块。但如果你只想使用合并列表,就这么简单:
{{ list1 + list2 }}
set_fact
看起来像这样:
- set_fact:
list_merged: "{{ list1 + list2 }}"
注意:如果您需要对串联列表执行其他操作,请确保将它们分组如下:
- set_fact:
list_merged: "{{ (list1 + list2) | ... }}"
以下对 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}] }}"
您也可以从变量附加项目。
- set_fact:
files: '{{ files + more }}'
vars:
more:
- '{{playbook_dir}}/remote.sh'
- '{{playbook_dir}}/config.yml'