SaltStack配置管理-状态间关系
include包含
上篇安装LAMP环境是一个个环境安装,可以通过include模块全部安装
lamp.sls
1 2 3 4 | include: - apache.init - php.init - mysql.init |
安装
1 | salt - S '192.168.56.12' state.sls lamp saltenv = prod |
也可以直接写在top.sls里面使用高级状态执行 prod是环境linux-node2.example.com是主机ID
扩展extend
需求:需要在一台主机安装php包并且只在这台主机新安装一个包php-mbstring但是不要修改原sls文件
修改lamp.sls文件增加扩展
1 2 3 4 5 6 7 8 9 | include: - apache.init - php.init - mysql.init extend: php - install: pkg.installed: - name: php - mbstring |
相当于追加了红色部分的安装,在没有修改原文件的情况下追加安装包
require需求依赖
需求:apache安装的时候假如配置文件有错误就不执行启动操作
修改sls文件添加 file是模块名apache-config是模块ID 同理pkg也是
如果把配置文件改错写一个不存在的httpd配置文件执行会报错
报错1 没有发现配置文件
报错2 require失败所以没有启动
require-in我被谁依赖(两个记住一个即可)
watch我观察谁
如果文件修改则重载或者重启
执行状态发现文件变化重载(不加reload就是重启restart)
watch_in我被谁观察(两个记住一个即可)
状态间的条件判断
需求:网页在进入admin文件夹的时候需要输入用户名和密码
修改apache配置文件/etc/httpd/conf/httpd.conf添加需要加密的文件夹
1 2 3 4 5 6 7 8 9 | <Directory "/var/www/html/admin" > AllowOverride All Order allow,deny Allow from all AuthType Basic AuthName "hehe" AuthUserFile / etc / httpd / conf / htpasswd_file Require user admin < / Directory> |
以非交换的方式设置用户名和密码
1 | htpasswd - bc / etc / httpd / conf / htpasswd_file admin admin |
查看
查看设置的需要加密的文件
输入地址访问需要输入刚刚设置的用户名和密码
在sls里面实现编辑apache的init文件
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 | apache - install: pkg.installed: - name: httpd apache - config: file .managed: - name: / etc / httpd / conf / httpd.conf - source: salt: / / apache / files / httpd.conf - user: root - group: root - mode: 644 - watch_in: - service: apache - service apache - auth: pkg.installed: - name: httpd - tools cmd.run: - name: htpasswd - bc / etc / httpd / conf / htpasswd_file admin admin - unless: test - f / etc / httpd / conf / htpasswd_file apache - service: service.running: - name: httpd - enable: True - reload : True |
安装httpd-tools包是htpasswd命令执行需要该包
unless是判断添加如果为真及加密文件存在则不执行以免重复添加
验证
执行第一次添加
再次执行判断条件为真就不添加该密码文件
【推荐】国内首个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代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!