在Ansible(oneliner)中将一个列表附加到另一个列表

时间:2017-06-02 05:55:21

标签: variables ansible

我想在Ansible中将一个列表附加到另一个列表中。在那时,我发现,使用

tasks:
    set_fact:
    my_list: "{{ my_list + my_append_list }}"

有效,但它需要3行代码,这似乎很麻烦。问题是,使用

my_list: "{{ my_list + my_append_list }}"

以无限递归结束。这种类型的赋值仅在涉及第三个列表名称时才起作用(类似于my_third_list: "{{ my_list + my_append_list }}"

问题是:有没有办法如何使用一行代码将列表附加到另一个列表而不使用另一个变量?

提前致谢,P。

1 个答案:

答案 0 :(得分:1)

没有。因为在Ansible中,大多数情况下你不会分配变量,而是定义模板。

分配:

- set_fact:
    my_list: "{{ my_list + my_append_list }}"

这是一种:模板右侧的内容并将结果分配给左侧,模板(评估)在set_fact执行时完成。

别名(我发明了这个术语,你不会在Ansible docs中找到它):

vars:
  my_list1: "{{ my_list + my_append_list }}"

这是一种:在右侧为模板化字符串定义名称为my_list1的别名(在左侧)。当您在某个任务中使用my_list1变量时,右侧将被临时模板化(评估)。

如果您在左侧和右侧表达式内使用相同的名称,则会获得无限递归..