我有一个 Jinja2 模板,我想从我的 中将参数传递给它vars/main.yml
。
对于每组变量,我需要在远程服务器上生成一个单独的文件。
我的vars/main.yml
结构如下:
List:
- { src: [
classPath1: xxx,
classPath2: xxx,
contxtHost: xxx,
logDir: xxx,
contxtRegion: xxx,
....
],
dest: xxxx
}
- { src: [
xxxx
],
dest: xxxx
}
在我的剧本中任务定义如下:
- name: testing templates
template: "src=templates/sampletest.j2
dest=/path/in/Server/{{ item.dest }}
owner=app
group=app
mode=0644"
with_items: '{{ List }}'
我如何传递item.src
给我的模板?
注意:我正在尝试根据每组变量生成多个文件,item.src
并且文件名正在item.dest
使用with_items
。
答案1
只需在 中引用它们templates/sampletest.j2
,例如:
# start of the template
classPath1 is {{ item.src[0].classPath1 }}
classPath2 is {{ item.src[1].classPath2 }}
contxtHost is {{ item.src[2].contxtHost }}
...
# end of the template
对于模板上的每个项目,List
都将被解析并保存到中定义的文件中dest
。
现在,问题是您的vars/main.yml
文件定义src
为字典列表(方括号),每个字典包含一个键值对(列表上每个项目中的键的名称不同),因此:
- 首先,您需要按顺序引用列表项(例如
src[1]
) - 然后,您需要引用在该特定项目中定义的键(例如,
classPath2
对于 并且仅适用于src[1]
)。