将相同的模板写入两个不同的文件,更改一个值

问题描述 投票:0回答:2

我想将相同的 Ansible 模板写入两个不同的文件,其中一个文件中的值设置为 True,另一个文件中的值设置为 False。

最好的方法是什么?我的直觉是尝试在

template:
指令中传递一个值。然而,这似乎令人不悦

一种方法是拥有两个不同的 jinja 文件,其内容几乎完全相同;一个的值设置为 True,另一个的值设置为 False。

另一种方法是定义一个变量,编写一个模板,然后使用

set_fact
更改变量的值,然后编写第二个文件。这似乎也有点麻烦。

另一种方法是让模板检测它正在渲染的文件名,不知何故?并基于此在模板中进行分支。

我一定错过了一些明显的东西。

templates ansible
2个回答
0
投票

使用 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

0
投票

您可以像这样使用循环:

- Name: Name
  template:
    src: template
    dest: "{{item.name}}"
  loop:
    - { name: one.txt, value: one }
    - { name: two.txt, value: two }

模板将如下所示:

KEY={{ item.value }}
© www.soinside.com 2019 - 2024. All rights reserved.