设为首页收藏本站

追梦Linux

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 741|回复: 0

【Saltstack系列】12、Saltstack配置管理--使用Jinja2模版

[复制链接]

482

主题

485

帖子

16万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
169037

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2016-6-7 16:09:20 | 显示全部楼层 |阅读模式
Salt yaml配置文件使用Jinja2模板介绍
jinja2官方网站:
http://jinja.pocoo.org/

F
[AppleScript] 纯文本查看 复制代码
ile状态使用template参数

        - template: jinja



模板文件里面变量使用{{ 名称 }}

        {{ PORT }}



变量列表

        - defaults:

          PORT: 8080

实战需求:在lamp基础上对不同机器的apache配置文件不一样,通过变量传递进去
1)修改apache监听端口为8080
修改源文件/srv/salt/dev/files/httpd.conf 为一个模版文件
[AppleScript] 纯文本查看 复制代码
修改 Listen 80 为 Listen {{PORT}}


2)添加监听host:192.168.2.192、端口80
[AppleScript] 纯文本查看 复制代码
修改源文件/srv/salt/dev/files/httpd.conf

修改  Listen {{ PORT }} 为  Listen {{ HOST }}:{{ PORT }}


修改lamp.sls文件
修改/srv/salt/dev/lamp.sls为如下
[AppleScript] 纯文本查看 复制代码
lamp-pkg-install:

  pkg.installed:

    - names:

      - httpd

      - mysql-community-client

      - mysql-community-server

      - php

      - php-cli

      - php-common

      - php-mysql

      - php-pdo





apache-service:

  pkg.installed:

    - name: httpd

  file.managed:

    - name: /etc/httpd/conf/httpd.conf

    - source: salt://files/httpd.conf

    - user: root

    - group: root

    - mode: 644

    - template: jinja   ##使用jinja模版

    - defaults:

      PORT: 8080        ##监听8080端口

      HOST: 192.168.2.192  ##监听host 

    - require:

      - pkg: apache-service

  service.running:

    - name: httpd

    - enable: True

    - reload: True

    - watch:

      - file: apache-service



mysql-service:

  pkg.installed:

    - name: mysql-community-server

    - require_in:

      - file: mysql-service

    - watch_in:

      - service: mysql-service

  file.managed:

    - name: /etc/my.cnf

    - source: salt://files/my.cnf

    - user: root

    - group: root

    - mode: 644

    - watch_in:

      - service: mysql-service

  service.running:

    - name: mysqld

    - enable: True 


模版文件里面变量使用{{名称}}
  • 变量使用grains:{{grains['fqdn_ip4']}}
  • 变量使用执行模块:{{salt['network.hw_addr']('eth0')}}
  • 变量使用pillar:{{pillar['apache']['PORT']}}


1)查看发现已经监听8080
2)发现httpd配置文件Listen 80 已改为Listen 192.168.2.192:80  
1)查看发现已经监听8080
2)发现httpd配置文件Listen 80 已改为Listen 192.168.2.192:80  
3)ip地址通过从grains获取,不将其写死
4)grains不写在lamp文件中,直接去掉HOST,写入模版文件httpd.conf中
将Listen {{ HOST }}:{{ PORT }}修改为{{ grains['fqdn_ip4'][0] }}:{{ PORT }}
5)使用变量执行模块,比如要获取MAC地址
在模版文件中httpd.conf的Listen下添加一段注释
#{{ MAC }}
在lamp.sls文件中添加一段
MAC: {{ salt['network.hw_addr']('eth0') }}
[AppleScript] 纯文本查看 复制代码
lamp-pkg-install:
  pkg.installed:
    - names:
      - httpd
      - mysql-community-client
      - mysql-community-server
      - php
      - php-cli
      - php-common
      - php-mysql
      - php-pdo


apache-service:
  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja   ##使用jinja模版
    - defaults:
          HOST: {{ grains['fqdn_ip4'][0] }}  ##利用grains获取IP,取得列表中第一个值 
        # HOST: {{ grains['fqdn_ip4'][0] }}  ##删除此处,在模版文件中修改
      PORT: 80        ##监听80端口
       MAC: {{ salt['network.hw_addr']('eth0') }}
           ###将上边几行改为用pillar获取####
       HOST: {{ pillar['apache']['HOST'] }}
       PORT: {{ pillar['apache']['PORT '] }}
       MAC: {{ pillar['apache']['MAC'] }}
    - require:
      - pkg: apache-service
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: apache-service

mysql-service:
  pkg.installed:
    - name: mysql-community-server
    - require_in:
      - file: mysql-service
    - watch_in:
      - service: mysql-service
  file.managed:
    - name: /etc/my.cnf
    - source: salt://files/my.cnf
    - user: root
    - group: root
    - mode: 644
    - watch_in:
      - service: mysql-service
  service.running:
    - name: mysqld
    - enable: True 

再执行salt '*' state.highstate 查看apache配置文件中已经写入MAC地址

6)变量里面使用pillar
修改如上部分,打开master端配置文件,搜索pillar_roots,在其下面添加
[AppleScript] 纯文本查看 复制代码
  dev:
    - /srv/salt/dev/pillar

并重启maste
编写pillar的apachede file
/srv/salt/dev/pillar/apache.sls
[AppleScript] 纯文本查看 复制代码
apache:
   HOST: {{ grains['fqdn_ip4'][0] }}
   PORT: 80
   MAC: {{ salt['network.hw_addr']('eth0') }}

编写pillar的topfile
[AppleScript] 纯文本查看 复制代码
dev:
'*':
    - apache





小黑屋|手机版|Archiver|追梦Linux    点击这里给我发消息

GMT+8, 2021-6-20 06:12 , Processed in 0.559486 second(s), 29 queries .

Powered by 追梦Linux! X3.3 Licensed

© 2015-2017 追梦Linux!.

快速回复 返回顶部 返回列表