这篇文章主要介绍了使用template实现灵活配置的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
一、Ansible template作用
在实际的工作中由于每台服务器的环境配置都可能不同,但是往往很多服务的配置文件都需要根据服务器环境进行不同的配置,比如Nginx最大进程数、Redis最大内存等。为了解决这个问题可以使用Ansible的template模块,该模块和copy模块作用基本一样,都是把管理端的文件复制到客户端主机上,但是区别在于template模块可以通过变量来获取配置值,支持多种判断、循环、逻辑运算等,而copy只能原封不动的把文件内容复制过去。需要注意的是template只能在playbook中运行,不能使用命令行方式。
二、Ansible template使用方法
1、多数情况下都会建立一个templates目录并和playbook同级,这样playbook可以直接引用和寻找这个模板文件,如果在别的路径需要单独指定。模板文件后缀名为.j2
2 |
cp /etc/conf/httpd.conf templates/httpd.conf.jinja2 #复制一个原始配置文件进行修改 |
2、创建playbook并使用template模板
06 |
- listen_port: 88 #定义变量 |
10 |
yum: name=httpd state=installed |
12 |
template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf #使用模板 |
15 |
service: name=httpd state=started |
19 |
service: name=httpd state=restarted |
3、修改模板文件,配置文件中需要针对端口做不同设置,找到Listen一项做以下修改
1 |
vi templates/httpd.conf.jinja2 |
2 |
Listen {{ listen_port }} #这里的端口用变量替代 |
4、由于调用了listen_port这个变量,所以需要在主机列表文件中给每个主机定义这样一个变量(也可以将变量写在playbook中):
2 |
192.168.100.110 listen_port=80 |
3 |
192.168.100.120 listen_port=8080 |
4 |
192.168.100.130 listen_port=808 |
5 |
192.168.100.140 listen_port=8000 |
5、运行ansible-playbook test.yml即可