将列表变量追加到Ansible

时间:2015-06-25 08:32:50

标签: jinja2 ansible ansible-playbook

是否可以将变量列表附加到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}}"

2 个答案:

答案 0 :(得分:36)

如果您确实要附加到内容,则需要使用Thread.Sleep()模块。但是如果你只是想使用合并列表,那么就像这样简单:

set_fact

使用{{ list1 + list2 }} ,它看起来像这样:

set_fact

注意:如果您需要对连接列表执行其他操作,请务必按以下方式对其进行分组:

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

答案 1 :(得分:3)

以下内容适用于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}] }}"