本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Ansible
  • 自动化运维之Ansible(6)使用template模块实现可变配置

自动化运维之Ansible(6)使用template模块实现可变配置

发布:TangLu2020-3-13 15:49分类: Ansible 标签: 自动化运维 ansible

问题场景:在Ansible服务端配置好了Nginx配置文件,想使用copy模块将文件推送给客户端,但是由于每台服务器cpu数量不一样,没办法来灵活配置Nginx最大进程数。

解决办法:使用Ansible的template模块(该模块只能在playbook中运行,不能使用命令行)。该模块和copy模块作用基本一样,都是把某个文件复制到远端主机上,但是区别在于template模块可以获取变量的值,而copy则是原封不动的把文件内容复制过去


Ansible template模块使用方法

1、首先创建一个存放模板文件的目录,用于存放jinja2模板文件

mkdir templates
cp /etc/conf/httpd.conf templates/httpd.conf.jinja2

2、修改作为模板的配置文件,这里针对端口做不同设置,找到Listen一项做以下修改

vi templates/httpd.conf.jinja2
# Listen 80  #注释掉默认的内容
Listen {{ http_port }}  #这里的端口用自定义变量替代,其他信息也可以通过setup模块获取

3、由于调用了http_port这个变量,所以我们需要在主机列表文件中给每个主机定义这样一个变量(也可以将变量写在playbook中):

vi /etc/ansible/hosts
192.168.100.110 http_port=80
192.168.100.120 http_port=8080
192.168.100.130 http_port=808
192.168.100.140 http_port=8000

 

4、把服务端的配置源文件做以下设置,注意这里用template取代了copy

vi httpd.yml
- host: webservers
  remote_user: root
  vars:
  - package: httpd
  tasks:
  - name: install httpd
    yum: name {{ package }} state=latest
  - name: install configure file
    #copy: src=/root/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
    template: src=/templates/httpd.conf.jinja2 dest=/etc/httpd/conf/httpd.conf
    notify:
      restart httpd
    name: start httpd service
    service: enabled=true name=httpd  state=started
  handlers:
  - name: restart httpd
    service: name=httpf state=restarted

 

5、运行ansible-playbook httpd.yml即可

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《自动化运维之Ansible(6)使用template模块实现可变配置
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-280.html  [生成短网址]

已有 0/6191 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~