Ansible 模板

2024 年 8 月 29 日 | 阅读 2 分钟

Ansible 用于管理多个服务器和环境的配置。 但是这些配置文件可以针对每个集群或远程服务器而异。 但是,除了少数参数外,所有其他设置都将相同。

为每个配置创建静态文件不是一个有效的解决方案。 这将花费大量时间,并且每次添加新集群时,您都必须添加更多文件。 如果有一种有效的方法来管理这些动态值,那将是有益的。 这就是 Ansible 模板模块发挥作用的地方。

模板是一个包含所有配置参数的文件,但动态值在 Ansible 中作为变量给出。 在剧本执行期间,它取决于条件,例如您使用的是哪个集群,变量将替换为相关值。

借助 Jinj2 模板引擎,您可以执行的操作远不止用变量替换变量。 您可以使用循环、条件语句、编写宏、用于转换数据的过滤器、进行算术计算等。

通常,模板文件的扩展名为 .j2,它表示使用的 Jinja2 模板引擎。

双大括号将表示模板文件中的变量,'{{variables}}'

使用 Ansible 模板模块时,我们需要两个参数,例如

  • src: 模板文件的来源。 它可以是相对路径和绝对路径。
  • dest: dest 是远程服务器上的目标路径。

模板模块属性

以下是可用于更改模板模块的一些默认行为的其他参数

  • Force: 如果目标文件已存在,则 Force 参数将决定是否应替换它。 默认情况下,该值为 yes。
  • Mode: 此参数用于显式设置目标文件的权限。
  • Backup: 如果您希望在目标目录中创建备份文件,则应将 backup 参数的值设置为 yes。 默认情况下,该值为 no。 并且每次目标目录发生更改时都会创建备份文件。
  • Group: 应拥有该目录的组的名称。 它类似于在 Linux 系统中执行文件的 chown 命令。

示例

在下面的示例中,我们正在对 example1.j2 文件使用模板模块,该模块将剧本中给出的值替换为默认变量。

文件:Playbook.yml

文件:example1.j2

文件:output.txt

Hello
No change in this line
My first playbook using the template

您可以看到,它们的值替换了上例中 example1.j2 中的两个变量。


下一个主题Ansible YAML