📜  Ansible模板

📅  最后修改于: 2020-12-26 12:28:03             🧑  作者: Mango

Ansible模板

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

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

模板是一个包含所有配置参数的文件,但是动态值在Ansible中作为变量给出。在执行Playbook的过程中,它取决于条件(例如您正在使用的群集),并且变量将被相关值替换。

除了借助Jinj2模板引擎替换变量之外,您还可以做更多的事情。您可以具有循环,条件语句,写入宏,用于转换数据的过滤器,进行算术计算等。

通常,模板文件将具有.j2扩展名,这表示使用的Jinja2模板引擎。

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

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

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

模板模块属性

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

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

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

档案:Playbook.yml

---
- hosts: all
  vars:
    variable1: 'Hello'
    variable2: 'My first playbook using template'
  tasks:
    - name: Basic Template Example
      template:
        src: example1.j2
        dest: /home/knoldus/Documents/Ansible/output.txt

文件:example1.j2

{{variable1}}
No change in this line
{{variable2}}

文件:output.txt

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

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