Ansible教程(6)使用template实现灵活配置
一、Ansible template作用
在实际的工作中由于每台服务器的环境配置都可能不同,但是往往很多服务的配置文件都需要根据服务器环境进行不同的配置,比如Nginx最大进程数、Redis最大内存等。为了解决这个问题可以使用Ansible的template模块,该模块和copy模块作用基本一样,都是把管理端的文件复制到客户端主机上,但是区别在于template模块可以通过变量来获取配置值,支持多种判断、循环、逻辑运算等,而copy只能原封不动的把文件内容复制过去。需要注意的是template只能在playbook中运行,不能使用命令行方式。
二、Ansible template使用方法
1、多数情况下都会建立一个templates目录并和playbook同级,这样playbook可以直接引用和寻找这个模板文件,如果在别的路径需要单独指定。模板文件后缀名为.j2
mkdir templates cp /etc/conf/httpd.conf templates/httpd.conf.jinja2 #复制一个原始配置文件进行修改
2、创建playbook并使用template模板
cat test.yml --- - hosts: all remote_user: root vars: - listen_port: 88 #定义变量 tasks: - name: Install Httpd yum: name=httpd state=installed - name: Config Httpd template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf #使用模板 notify: Restart Httpd - name: Start Httpd service: name=httpd state=started handlers: - name: Restart Httpd service: name=httpd state=restarted
3、修改模板文件,配置文件中需要针对端口做不同设置,找到Listen一项做以下修改
vi templates/httpd.conf.jinja2 Listen {{ listen_port }} #这里的端口用变量替代
4、由于调用了listen_port这个变量,所以需要在主机列表文件中给每个主机定义这样一个变量(也可以将变量写在playbook中):
vi /etc/ansible/hosts 192.168.100.110 listen_port=80 192.168.100.120 listen_port=8080 192.168.100.130 listen_port=808 192.168.100.140 listen_port=8000
5、运行ansible-playbook test.yml即可
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论