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

来源:互联网 发布:c语言基础课程教学视频 编辑:程序博客网 时间:2024/06/08 13:15

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

@(学习)[SaltStack]

  • SaltStack实战之配置管理-Jinja2模板
    • Salt yaml配置文件使用Jinja2模板介绍
      • 1 File状态使用template参数
      • 2 模板文件里面变量使用 名称
      • 3 变量列表
    • 实战应用

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/masterstate_top: top.slsfile_roots:  base:    - /srv/salt  dev:    - /srv/salt/dev  test:    - /srv/salt/test  prod:    - /srv/salt/prodpillar_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:    Truemaster.test.com:    Truenode2.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:            8080node2.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-pdoapache-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-servicemysql-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: Truephp-fpm-service:  service.running:    - name: php-fpm    - enable: True[root@salt-master112 dev]#  

执行结果:

[root@salt-master112 dev]# salt '*' state.highstatemaster.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: 1Failed:    0------------Total states run:     1Total run time:  31.841 msnode1.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:     13Total run time:  929.129 msnode2.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:     13Total 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
原创粉丝点击