我有一个名为prop.yml的var文件,其中包含:
var1:
- 'a'
- 'b'
var2:
- 'blah'
- 'blab'
现在,我的剧本如下所示:
task:
- name: including a variety file
include_vars:
file: prop.yml
name: property
- set_fact:
project: "{{ lookup ('vars', 'property') }}"
- debug:
msg: "{{ project }}"
现在,我的输出是
var1[
"a"
"b"]
var2[ "blah" , "blab"]
我想要的输出是
["a", "b", "blah", "blab"]
只需添加列表即可。
- debug:
msg: "{{ project.var1 + project.var2 }}"
以下内容应该让你开始:
task:
- name: including a variety file
include_vars:
file: prop.yml
name: property
- set_fact:
project: "{{ property.var1 + property.var2 }}"
- debug:
msg: "{{ project }}"
我们可以通过将set_fact任务替换为以下任务来连接包含的 vars 文件中的所有列表,而不是静态使用 vars。仅当文件中的所有声明的 var 都是列表时,这才有效。请注意使用default
过滤器来确保始终定义我们的结果 var。这也使用字典上的循环
- name: Iteratively concatenate our lists
set_fact:
project: "{{ project | default([]) + item.value }}"
loop: "{{ property | dict2items }}"