ansible 之 template(模板)

ansible template 介绍

    可以将带有参数的配置文件传递到目标地址,可以对文件进行属组属主的修改以及备份

Jinja2

    Jinja2是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker和velocity。它能完全支持unicode,并具有集成的沙箱执行环境,应用广泛。jinja2使用BSD授权。

案例:在 node1 节点上安装服务,并将服务配置发送给 node2,通过剧本

(1)node1 节点上安装 apache 服务

[root@node1 ~]# yum -y install httpd

(2)拷贝node1 apache 配置文件到 master 上

[root@master ~]# mkdir httpd
[root@master ~]# scp root@20.0.0.12:/etc/httpd/conf/httpd.conf httpd
[root@master ~]# cd httpd/
[root@master httpd]# ll
总用量 12
-rw-r--r--. 1 root root 11753 1月  10 18:50 httpd.conf

(3)修改需要到其他节点上的配置为变量

[root@master ~]# vi httpd/httpd.conf 
Listen 80    修改     Listen {
          
   {
          
   ip_port}}   # 变量为 ip_port
#ServerName www.example.com:80  修改   ServerName {
          
   {
          
   yuming_port}}
MaxClients {
          
   {
          
   num}}     # 添加最大连接数,变量为 num

(4)将此配置文件修改为模板文件

    修改为 j2 模板文件可以被 template 模块直接识别
[root@master ~]# cd httpd/
[root@master httpd]# mv httpd.conf httpd.conf.j2

(5)在ansible 配置文件中的主机标识添加值(可指定那一台主机)

[root@master ~]# vi /etc/ansible/hosts 
[server2]
20.0.0.13 ip_port=20.0.0.13:80 yuming_port=www.aa.com:80 num=600

(6)编写yaml

[root@master ~]# vi apache.yaml
 - hosts: server2
   remote_user: root
   vars:
   - server: httpd
   tasks:
   - name: install apache
     yum: name={
          
   {
          
   server}} state=latest
   - name: config file
     template: src=/root/httpd/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
     notify:
       - restart httpd
   - name: start httpd
     service: name={
          
   {
          
   server}} state=started
  handlers :
   - name: restart httpd
     service: name={
          
   {
          
   server}} state=restarted enabled=true
[root@master ~]# ansible-playbook apache.yaml

(7)node2 节点验证

    是否安装apache
[root@node2 ~]# rpm -q httpd
httpd-2.4.6-67.el7.centos.x86_64
    服务状态
[root@node2 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2021-01-14 22:45:46 CST; 9min ago
     Docs: man:httpd(8)
           man:apachectl(8)

查看配置文件是否修改

[root@node2 ~]# vi /etc/httpd/conf/httpd.conf

Listen 20.0.0.13:80

ServerName www.aa.com:80

MaxClients 600
经验分享 程序员 微信小程序 职场和发展