Ansible 查找:显示为列表时出现问题



我有一个名为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 }}"

最新更新