我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SaltStack实战之配置管理-Jinja2模板

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SaltStack实战之配置管理-Jinja2模板

SaltStack实战之配置管理-Jinja2模板


学习 SaltStack



  • SaltStack实战之配置管理-Jinja2模板
  • 1. Salt yaml配置文件使用Jinja2模板介绍

    • 1.1 File状态使用template参数

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

    • 1.3 变量列表

  • 2. 实战应用


1. Salt yaml配置文件使用Jinja2模板介绍

jinja2官方网站: 
http://jinja.pocoo.org/

1.1 File状态使用template参数

- template: jinja

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

` PORT `

1.3 变量列表

- defaults:
 PORT: 8080

2. 实战应用

添加监听主机和端口变量

vim /srv/salt/devfiles/httpd.conf

Listen ` HOST `:` PORT `

# ` MAC `

配置salt master配置文件、pillar配置文件、lamp.sls添加jinja模板:

[root@salt-master112 dev]# egrep -v '^$|^[#]' /etc/salt/master
state_top: top.sls
file_roots:
 base:
   - /srv/salt
 dev:
   - /srv/salt/dev
 test:
   - /srv/salt/test
 prod:
   - /srv/salt/prod
pillar_roots:
 base:
   - /srv/salt/pillar
 dev:
   - /srv/salt/dev/pillar
[root@salt-master112 dev]# cat /srv/salt/pillar/top.sls
dev:
 'node*.test.com':
   - apache
[root@salt-master112 dev]# cat /srv/salt/dev/pillar/apache.sls
apache:
 HOST: {{ grains['fqdn_ip4'][0] }}
 PORT: 8080
 MAC: {{ salt['network.hw_addr']('eth0') }}
[root@salt-master112 dev]# salt '*' saltutil.refresh_pillar
node1.test.com:
   True
master.test.com:
   True
node2.test.com:
   True
[root@salt-master112 dev]# salt '*' pillar.items            
master.test.com:
   ----------
node1.test.com:
   ----------
   apache:
       ----------
       HOST:
           10.1.0.109
       MAC:
           00:50:56:a4:44:7a
       PORT:
           8080
node2.test.com:
   ----------
   apache:
       ----------
       HOST:
           10.1.0.110
       MAC:
           00:50:56:a4:44:7a
       PORT:
           8080
[root@salt-master112 dev]# cat /srv/salt/dev/lamp.sls
lamp-pkg-install:
 pkg.installed:
   - names:
     - php
     - php-fpm
     - mysql
     - 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
   - defaults:
     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-server
   - require_in:
     - file: 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

php-fpm-service:
 service.running:
   - name: php-fpm
   - enable: True
[root@salt-master112 dev]#  

执行结果:

[root@salt-master112 dev]# salt '*' state.highstate
master.test.com:
----------
         ID: /etc/resolv.conf
   Function: file.managed
     Result: True
    Comment: File /etc/resolv.conf is in the correct state
    Started: 17:54:00.390576
   Duration: 31.841 ms
    Changes:  

Summary for master.test.com
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time:  31.841 ms
node1.test.com:
----------
         ID: /etc/resolv.conf
   Function: file.managed
     Result: True
    Comment: File /etc/resolv.conf is in the correct state
    Started: 09:56:43.761673
   Duration: 34.809 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-fpm
     Result: True
    Comment: Package php-fpm is already installed
    Started: 09:56:44.225287
   Duration: 630.568 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-pdo
     Result: True
    Comment: Package php-pdo is already installed
    Started: 09:56:44.856050
   Duration: 0.522 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php
     Result: True
    Comment: Package php is already installed
    Started: 09:56:44.856677
   Duration: 0.366 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-mysql
     Result: True
    Comment: Package php-mysql is already installed
    Started: 09:56:44.857143
   Duration: 0.386 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: mysql
     Result: True
    Comment: Package mysql is already installed
    Started: 09:56:44.857623
   Duration: 0.349 ms
    Changes:  
----------
         ID: apache-service
   Function: pkg.installed
       Name: httpd
     Result: True
    Comment: Package httpd is already installed
    Started: 09:56:44.858061
   Duration: 0.343 ms
    Changes:  
----------
         ID: apache-service
   Function: file.managed
       Name: /etc/httpd/conf/httpd.conf
     Result: True
    Comment: File /etc/httpd/conf/httpd.conf updated
    Started: 09:56:44.858780
   Duration: 34.022 ms
    Changes:  
             ----------
             diff:
                 ---  
                 +++  
                 @@ -133,9 +133,9 @@
                  # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                  #
                  #Listen 12.34.56.78:80
                 -Listen 0.0.0.0:8080
                 -
                 -# 00:50:56:a4:7a:70
                 +Listen 10.1.0.109:8080
                 +
                 +# 00:50:56:a4:44:7a
                  # Dynamic Shared Object (DSO) Support
                  #
                  # To be able to use the functionality of a module which was built as a DSO you
----------
         ID: apache-service
   Function: service.running
       Name: httpd
     Result: True
    Comment: Service reloaded
    Started: 09:56:44.950689
   Duration: 87.451 ms
    Changes:  
             ----------
             httpd:
                 True
----------
         ID: mysql-service
   Function: pkg.installed
       Name: mysql-server
     Result: True
    Comment: Package mysql-server is already installed
    Started: 09:56:45.038390
   Duration: 0.739 ms
    Changes:  
----------
         ID: mysql-service
   Function: file.managed
       Name: /etc/my.cnf
     Result: True
    Comment: File /etc/my.cnf is in the correct state
    Started: 09:56:45.039596
   Duration: 17.182 ms
    Changes:  
----------
         ID: mysql-service
   Function: service.running
       Name: mysqld
     Result: True
    Comment: The service mysqld is already running
    Started: 09:56:45.057008
   Duration: 68.422 ms
    Changes:  
----------
         ID: php-fpm-service
   Function: service.running
       Name: php-fpm
     Result: True
    Comment: The service php-fpm is already running
    Started: 09:56:45.125649
   Duration: 53.97 ms
    Changes:  

Summary for node1.test.com
-------------
Succeeded: 13 (changed=2)
Failed:     0
-------------
Total states run:     13
Total run time:  929.129 ms
node2.test.com:
----------
         ID: /etc/resolv.conf
   Function: file.managed
     Result: True
    Comment: File /etc/resolv.conf is in the correct state
    Started: 09:56:44.357709
   Duration: 56.916 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-fpm
     Result: True
    Comment: Package php-fpm is already installed
    Started: 09:56:45.634382
   Duration: 1721.668 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-pdo
     Result: True
    Comment: Package php-pdo is already installed
    Started: 09:56:47.356467
   Duration: 1.34 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php
     Result: True
    Comment: Package php is already installed
    Started: 09:56:47.358095
   Duration: 1.359 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-mysql
     Result: True
    Comment: Package php-mysql is already installed
    Started: 09:56:47.359721
   Duration: 1.553 ms
    Changes:  
----------
         ID: lamp-pkg-install
   Function: pkg.installed
       Name: mysql
     Result: True
    Comment: Package mysql is already installed
    Started: 09:56:47.361541
   Duration: 1.361 ms
    Changes:  
----------
         ID: apache-service
   Function: pkg.installed
       Name: httpd
     Result: True
    Comment: Package httpd is already installed
    Started: 09:56:47.363199
   Duration: 1.377 ms
    Changes:  
----------
         ID: apache-service
   Function: file.managed
       Name: /etc/httpd/conf/httpd.conf
     Result: True
    Comment: File /etc/httpd/conf/httpd.conf updated
    Started: 09:56:47.365880
   Duration: 84.28 ms
    Changes:  
             ----------
             diff:
                 ---  
                 +++  
                 @@ -133,9 +133,9 @@
                  # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                  #
                  #Listen 12.34.56.78:80
                 -Listen 0.0.0.0:8080
                 -
                 -# 00:50:56:a4:00:5c
                 +Listen 10.1.0.110:8080
                 +
                 +# 00:50:56:a4:44:7a
                  # Dynamic Shared Object (DSO) Support
                  #
                  # To be able to use the functionality of a module which was built as a DSO you
----------
         ID: apache-service
   Function: service.running
       Name: httpd
     Result: True
    Comment: Service reloaded
    Started: 09:56:47.617560
   Duration: 236.903 ms
    Changes:  
             ----------
             httpd:
                 True
----------
         ID: mysql-service
   Function: pkg.installed
       Name: mysql-server
     Result: True
    Comment: Package mysql-server is already installed
    Started: 09:56:47.855453
   Duration: 6.781 ms
    Changes:  
----------
         ID: mysql-service
   Function: file.managed
       Name: /etc/my.cnf
     Result: True
    Comment: File /etc/my.cnf is in the correct state
    Started: 09:56:47.865735
   Duration: 72.983 ms
    Changes:  
----------
         ID: mysql-service
   Function: service.running
       Name: mysqld
     Result: True
    Comment: The service mysqld is already running
    Started: 09:56:47.939601
   Duration: 169.518 ms
    Changes:  
----------
         ID: php-fpm-service
   Function: service.running
       Name: php-fpm
     Result: True
    Comment: The service php-fpm is already running
    Started: 09:56:48.109622
   Duration: 157.914 ms
    Changes:  

Summary for node2.test.com
-------------
Succeeded: 13 (changed=2)
Failed:     0
-------------
Total states run:     13
Total run time:    2.514 s
[root@salt-master112 dev]#

node1和node2的apache配置文件,Listen位置内容也有相应变化。

[root@im109 ~]# vim /etc/httpd/conf/httpd.conf 
Listen 10.1.0.109:8080

# 00:50:56:a4:44:7a
[root@im110 ~]# vim /etc/httpd/conf/httpd.conf 
Listen 10.1.0.110:8080

# 00:50:56:a4:44:7a

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SaltStack实战之配置管理-Jinja2模板

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

kubernetes实践之三十五:Pod配置管理ConfigMap

一:简介很多生产环境中的应用程序配置较为复杂,可能需要多个config文件、命令行参数和环境变量的组合。使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性。ConfigMap是用来存储配置文件的kubernetes资源
2023-06-04

python内置模块之怎么实现上下文管理contextlib

这篇文章主要介绍“python内置模块之怎么实现上下文管理contextlib”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python内置模块之怎么实现上下文管理contextlib”文章能帮助大
2023-07-02

利用C++单例模式实现高性能配置管理器

这篇文章主要为大家详细介绍了如何利用C++单例模式实现高性能配置管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
2023-05-16

Python配置文件管理之ini和yaml文件读取的实现

本文主要介绍了Python配置文件管理之ini和yaml文件读取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-28

编程热搜

目录