千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,SaltStack实战之配置管理-Jinja2模板学习 SaltStackSaltStack实战之配置管理-Jinja2模板1. Salt yaml配置文件使用Jinja2模板介绍1.1 File状态
千家信息网最后更新 2026年11月01日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
配置 模板 文件 变量 实战 管理 参数 名称 状态 应用 主机 位置 内容 官方 官方网站 端口 结果 网站 变化 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 广州百单互联网科技有限公司 科技创新与互联网经济 工业互联网科技新基建 互联网最新的科技有限公司 深圳互联网科技公司 互联网科技公司发展 互联网金融和金融科技 银川新华互联网科技学校地址 开启互联网科技时代小说 科技与互联网的利与弊 温州喔噻互联网科技有限公司 汽车互联网创新科技园 苏州铭阳互联网科技有限公司 华夏恒生互联网科技013171 威龙国际互联网科技公司 烟台灵鸽互联网科技有限公司 珠海东科互联网科技有限公司 互联网科技对化妆品行业 亚光科技低轨卫星互联网 深圳市人人互联网科技有限公司 科技金融是不是互联网金融 唐信互联网科技 极限挑战互联网科技 联恩商钥互联网科技有限公司 无锡溥仪互联网科技有限公司 卫星互联网科技股票 科技互联网大厂 洛阳共同富裕互联网科技有限公司 黑科技 体验场景 互联网大会
0