📅  最后修改于: 2020-12-26 12:28:03             🧑  作者: Mango
Ansible用于管理多个服务器和环境的配置。但是,对于每个群集或远程服务器,这些配置文件可能会有所不同。但是除了一些参数外,所有其他设置都是相同的。
为这些配置中的每一个创建静态文件都不是有效的解决方案。这将花费大量时间,并且每次添加新群集时,都必须添加更多文件。如果有一种有效的方法来管理这些动态值,那将是有益的。这是Ansible模板模块发挥作用的地方。
模板是一个包含所有配置参数的文件,但是动态值在Ansible中作为变量给出。在执行Playbook的过程中,它取决于条件(例如您正在使用的群集),并且变量将被相关值替换。
除了借助Jinj2模板引擎替换变量之外,您还可以做更多的事情。您可以具有循环,条件语句,写入宏,用于转换数据的过滤器,进行算术计算等。
通常,模板文件将具有.j2扩展名,这表示使用的Jinja2模板引擎。
双花括号将表示模板文件'{{variables}}'中的变量。
使用Ansible Template模块时,我们需要有两个参数,例如:
以下是一些其他参数,可用于更改模板模块的某些默认行为:
在下面的示例中,我们在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中的两个变量。