我想将相同的 Ansible 模板写入两个不同的文件,其中一个文件中的值设置为 True,另一个文件中的值设置为 False。
最好的方法是什么?我的直觉是尝试在
template:
指令中传递一个值。然而,这似乎令人不悦。
一种方法是拥有两个不同的 jinja 文件,其内容几乎完全相同;一个的值设置为 True,另一个的值设置为 False。
另一种方法是定义一个变量,编写一个模板,然后使用
set_fact
更改变量的值,然后编写第二个文件。这似乎也有点麻烦。
另一种方法是让模板检测它正在渲染的文件名,不知何故?并基于此在模板中进行分支。
我一定错过了一些明显的东西。
使用 Ansible 2.x,您可以将
vars:
与任务一起使用:
---
- hosts: localhost
tasks:
- template: src=my_template.j2 dest=out1.txt
vars:
name: John
- template: src=my_template.j2 dest=out2.txt
vars:
name: Jane
您可以像这样使用循环:
- Name: Name
template:
src: template
dest: "{{item.name}}"
loop:
- { name: one.txt, value: one }
- { name: two.txt, value: two }
模板将如下所示:
KEY={{ item.value }}