本文概述
Ansible用于管理多个服务器和环境的配置。但是,对于每个群集或远程服务器,这些配置文件可能会有所不同。但是除了一些参数外,所有其他设置都是相同的。
为这些配置中的每一个创建静态文件都不是有效的解决方案。这将花费大量时间,并且每次添加新群集时,都必须添加更多文件。如果有一种有效的方法来管理这些动态值,那将是有益的。这是Ansible模板模块发挥作用的地方。
模板是一个包含所有配置参数的文件,但是动态值在Ansible中作为变量给出。在执行剧本期间,它取决于条件(例如你正在使用的群集),并且变量将被相关值替换。
除了借助Jinj2模板引擎替换变量之外,你还可以做更多的事情。你可以具有循环,条件语句,写入宏,用于转换数据的过滤器,进行算术计算等。
通常,模板文件将具有.j2扩展名,这表示使用的Jinja2模板引擎。
双花括号将指示模板文件“ {{variables}}”中的变量。
使用Ansible Template模块时,我们需要有两个参数,例如:
- src:模板文件的源。它可以是相对和绝对路径。
- dest:Dest是远程服务器上的目标路径。
模板模块属性
以下是一些其他参数,可用于更改模板模块的某些默认行为:
- Force:如果目标文件已经存在,则Force参数将决定是否应替换它。默认情况下,该值为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中的两个变量。
评论前必须登录!
注册