Saltstack配置管理
配置管理也叫状态管理
严格意思上讲状态是不可回滚的
参考官方文档
https://www.unixhot.com/docs/saltstack/contents.html
状态模块
https://www.unixhot.com/docs/saltstack/ref/states/all/
Salt State SLS描述文件 YAML
apache-service: #ID声明
service.running: #State声明 状态声明
- name: httpd #选项声明
- enable: True
怎么部署一个LAMP架构
1,安装软件包 pkg
2,修改配置文件 file
3,启动服务 service
pkg.installed 安装
pkg.latest 最新版本
pkg.remove 移除
pkg.purge 同时删除配置文件
pkgs 同时安装多个包
例如
php.packages:
pkg.installed:
- fromrepo: wheezy-php55
- pkgs:
- php5-fpm
- php5-cli
- php5-curl
PS:一个ID声明下面,状态模块不能重复使用。(Python字典里面的key不能重复)
mkdir /srv/salt/lamp
mkdir /srv/salt/lamp/files
拷贝配置文件到这个目录下
cp /etc/my.cnf ./
cp /etc/httpd/conf/httpd.conf ./
/files]# cp /etc/php.ini ./
vim /srv/salt/lamp/lamp.sls
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | lamp - pkg: pkg.installed: - pkgs: - httpd - php - mariadb - mariadb - server - php - mysql - php - cli - php - mbstring apache - config: file .managed: - name: / etc / httpd / conf / httpd.conf - source: salt: / / lamp / files / httpd.conf - user: root - group: root - mode: 644 php - config: file .managed: - name: / etc / php.ini - source: salt: / / lamp / files / php.ini - user: root - group: root - mode: 644 mysql - config: file .managed: - name: / etc / my.cnf - source: salt: / / lamp / files / my.cnf - user: root - group: root - mode: 644 apache - service: service.running: - name: httpd - enable: True - reload : True mysql - service: service.running: - name: mariadb - enable: True - reload : True |
执行安装
salt '10-8-86-172' state.sls lamp.lamp
PS:salt://表示当前环境的根目录,即/srv/salt目录
可以在minion端查看debug查看执行过程及错误
tail -f /var/log/salt/minion
状态间关系
1,我依赖谁
依赖这个安装包和这个配置文件
2,我被谁依赖
和依赖是一样的意思记住一个就行
3,我监控谁
如果apache-config状态发生变化则reload,如果reload不是True则是restart
4,我被谁监控
同理watch_in写在apache-config ,也是两个记住一个即可
5,我引用谁
include:
- lamp.pkg
类似于配置文件的包含,把不同的模块分开来好管理
6,我扩展谁
Jinja2
参考网站
http://docs.jinkan.org/docs/jinja2/
两种分隔符:{% ... %}和 {{ ... }}
三步走
1,告诉File模块 ,你需要使用jinja
- template: jinja
2,要列出变量参数列表
- defaults:
PORT: 88
3,模板引用
修改配置文件 Listen {{ PORT }}
修改lamp.sls
修改httpd.conf
再次执行
模板里面支持 salt grains pillar进行赋值
使用pillar
先获取到
修改httpd配置文件
jinjia模板
修改lamp.sls
修改httpd配置文件
PS:也可以写在sls里面的变量列表中
例如
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!