首页/新闻资讯/正文详情

从零到生产:Salt状态模块(SLS)完全教程

发布时间:2026/9/21 7:18:53 来源:云帆数科 栏目:资讯中心
从零到生产:Salt状态模块(SLS)完全教程
从零到生产Salt状态模块SLS完全教程【免费下载链接】saltSoftware to automate the management and configuration of infrastructure and applications at scale.项目地址: https://gitcode.com/gh_mirrors/sa/saltSalt 状态模块SLSSalt State是开源配置管理工具 Salt 的核心能力帮你用声明式的 YAML 文件定义系统应该长什么样然后一条命令把几十甚至上千台服务器批量推进到目标状态。本教程面向新手带你从零搭建第一个 SLS 状态文件掌握依赖关系、Jinja 模板、多环境发布等关键技巧最终形成一套可上生产环境的自动化配置管理流程。一、为什么选择 Salt 状态管理传统运维靠人肉登录每台机器执行命令而Salt 状态模块SLS把配置写成版本可控的文本文件✅声明式只描述期望状态装好 Apache、服务在运行不关心具体步骤✅幂等性反复执行结果一致已满足的状态会自动跳过✅可追溯SLS 文件可纳入版本控制谁改了什么一目了然✅规模化一条命令salt * state.apply即可覆盖全部主机Salt 由 Master中心管理和 Minion被管节点组成SLS 状态文件存放在 Master 的文件服务器上按需下发到 Minion 执行。整体架构可参考项目文档 doc/_static/salt-architecture.png。二、30 秒理解 SLS 的核心概念SLS SaltLanguageState本质上是一组普通的数据文件默认是 YAML Jinja 格式放在 Master 的文件根目录file_roots默认/srv/salt中。一个典型的状态树结构top.sls ← 总入口决定哪台 Minion 应用哪些状态 ssh.sls ← 普通状态文件 users/init.sls ← init.sls 等价于父目录名users 状态 salt/master.sls ← 点号命名salt.master 状态三个关键规则出自官方参考 doc/ref/states/index.rsttop.sls是调度中枢把 Minion 匹配表达式与 SLS 文件映射起来目录即命名空间users/admin.sls→ 状态名users.admininit.sls代表所在目录web/init.sls→ 状态名web三、快速上手第一个 SLS 状态步骤 1确认文件服务器配置在 Master 配置 conf/master 中确认file_rootsfile_roots: base: - /srv/salt步骤 2编写 top.sls在/srv/salt/top.sls中声明给所有主机应用 webserver 状态base: *: - webserver步骤 3编写 webserver.slsapache: pkg.installed: []步骤 4执行状态salt * state.applyMinion 会自动下载top.sls、匹配表达式、拉取对应 SLS 并执行。完整步骤见官方教程 doc/topics/tutorials/states_pt1.rst。执行成功后目标主机上就保证了 Apache 已安装——这正是 SLS 声明结果而非过程的体现四、状态文件三要素每一行 SLS 都由三部分构成记住ID → 状态 → 函数的口诀apache: # ① ID 声明任意标识符 pkg.installed: [] # ② 状态声明 ③ 函数声明 service.running: # 同一个 ID 可挂多个状态 - require: - pkg: apacheID 声明任意标识符常用作资源名状态声明使用哪个内置状态模块pkg、file、service、user…源码位于 salt/states/130 个现成模块函数声明该状态模块的具体函数installed、managed、running五、依赖关系Requisites让配置按序执行真实场景需要先装包、再放文件、最后起服务。Salt 通过Requisites先决条件表达依赖关键字作用典型场景require必须先成功完成装完包再启服务watch被监视对象变化时触发动作配置文件更新 → 重启服务before/order控制执行顺序精细排序onchanges仅在变化时执行变更联动/etc/nginx/nginx.conf: file.managed: - source: salt://nginx/conf/nginx.conf - watch: - service: nginx nginx: service.running: []官方把这部分称为Requisites示例参考 doc/_incl/requisite_incl.rst完整教程见 doc/topics/tutorials/states_pt2.rst。六、Jinja 模板 Grains/Pillar一份 SLS 适配所有机器不同发行版包名不同、不同角色配置不同——硬编码不可行。SLS 文件默认先经过Jinja2 模板渲染再解析为 YAMLapache: pkg.installed: {% if grains[os_family] RedHat %} - name: httpd {% elif grains[os_family] Debian %} - name: apache2 {% endif %}两大内置数据源Grains主机自身信息OS、内核、CPU静态且自动采集Pillar用户自定义的敏感/角色数据数据库密码、环境参数由 Master 侧下发模板与环境变量的写法详解见 doc/topics/tutorials/states_pt3.rst 和 doc/topics/tutorials/pillar.rst。七、多环境管理从开发到生产file_roots天然支持多环境dev / qa / prod配合top.sls中的环境声明实现状态文件的逐级晋升file_roots: base: - /srv/salt/prod qa: - /srv/salt/qa同一相对路径出现在多个 root 时列表靠前者生效生产环境只从base拉取测试环境可用salt -e qa指定环境执行这是 Salt 实现配置即代码 环境隔离的关键机制详见 doc/topics/tutorials/states_pt4.rst。八、进阶用 SPM 打包共享 SLS 模块当 SLS 状态在团队/公司间共享时可以把 SLS 和 Pillar 文件打包成SPM 包通过仓库系统分发到 Master 的/srv/spm/salt目录SPM 命令与包格式参考 doc/topics/spm/ 目录下的文档。总结你的 Salt SLS 学习路线阶段目标对应资料入门跑通第一个state.applydoc/topics/tutorials/states_pt1.rst进阶掌握 Requisites 与模板doc/topics/tutorials/states_pt2.rst、doc/topics/tutorials/states_pt3.rst生产多环境晋升与编排doc/topics/tutorials/states_pt4.rst、doc/ref/states/index.rst核心记忆点SLS 文件 YAML Jinjatop.sls管分发Requisites 管顺序Grains/Pillar 管差异file_roots多环境管发布。把这五点吃透你就已经具备用 Salt 状态模块管理生产环境的全部基础 【免费下载链接】saltSoftware to automate the management and configuration of infrastructure and applications at scale.项目地址: https://gitcode.com/gh_mirrors/sa/salt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

自制USB-C快充协议分析仪:PD/QC抓包与功率监测实战
自制USB-C快充协议分析仪:PD/QC抓包与功率监测实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:18:53

KubeSphere 中的 JWT 实战指南:基于 golang-jwt/jwt v4 的 Token 签发、解析与安全校验
KubeSphere 中的 JWT 实战指南:基于 golang-jwt/jwt v4 的 Token 签发、解析与安全校验

后端云原生容器编排微服务 【免费下载链接】kubesphere kubesphere/kubesphere: KubeSphere 是一个开源的企业级容器平台,构建于 Kubernetes 之上,提供全栈化容器管理能力,包括服务治理、DevOps、微服务治理、监控告警、日志查询等功能&#… · 2026/9/21 7:18:53

STM32程序结构精讲:从启动文件到主循环模块化设计
STM32程序结构精讲:从启动文件到主循环模块化设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 7:17:53

3步搞定做品管圈网站从零搭建到上线避坑指南
3步搞定做品管圈网站从零搭建到上线避坑指南

3步搞定做品管圈网站从零搭建到上线避坑指南 不会写代码,但想给团队搭个品管圈展示平台?别慌。 很多河南的创业老板都卡在这一步:手里有现成的QCC成果,想做个官网放上去,结果一搜全是“前端开发教程”,看得头大。 做品管圈网站 这事儿,真没你想的那么玄乎。只要路子对,零基础也能 从零搭建… · 2026/9/21 7:45:56

Voyager 資料夾管理指南:為 Gemini 與 AI Studio 的 AI 對話打造真正的「檔案系統」
Voyager 資料夾管理指南:為 Gemini 與 AI Studio 的 AI 對話打造真正的「檔案系統」

AI 应用前端 【免费下载链接】voyager Enhancement suite for Gemini, AI Studio, Claude & ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件;其中的提示词管理器可用… · 2026/9/21 7:41:58

gatsby-source-graphql 插件全解析:将任意第三方 GraphQL API 缝合进 Gatsby 数据层
gatsby-source-graphql 插件全解析:将任意第三方 GraphQL API 缝合进 Gatsby 数据层

前端静态站点Web框架 【免费下载链接】gatsby React-based framework with performance, scalability, and security built in. 项目地址: https://gitcode.com/gh_mirrors/ga/gatsby 点击查看 免费下载 本篇技术指南以 gatsby-source-graphql 插件的 CHANGELOG 版… · 2026/9/21 7:41:58

Lightweight Charts v3 到 v4 迁移指南:破坏性变更逐项分析与实战改造方案
Lightweight Charts v3 到 v4 迁移指南:破坏性变更逐项分析与实战改造方案

Lightweight Charts v3 到 v4 迁移指南:破坏性变更逐项分析与实战改造方案 【免费下载链接】lightweight-charts Performant financial charts built with HTML5 canvas 项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts 本指南以 Lightweig… · 2026/9/21 7:41:58

FoundationDB 存储基准测试上 RAM Disk:mako_storage_bench.sh 在 okteto 开发 Pod 上的 tmpfs 实践指南
FoundationDB 存储基准测试上 RAM Disk:mako_storage_bench.sh 在 okteto 开发 Pod 上的 tmpfs 实践指南

分布式数据库KV存储数据库后端 【免费下载链接】foundationdb FoundationDB - the open source, distributed, transactional key-value store 项目地址: https://gitcode.com/gh_mirrors/fo/foundationdb 点击查看 免费下载 mako_storage_bench.sh 是 FoundationD… · 2026/9/21 7:41:58

Trigger.dev SDK 公共包修改规范:Changesets 发布流程、版本策略与 @trigger.dev/core 子路径导入指南
Trigger.dev SDK 公共包修改规范:Changesets 发布流程、版本策略与 @trigger.dev/core 子路径导入指南

AI Agent后端任务调度开发工具可观测性AI 应用 【免费下载链接】trigger.dev Trigger.dev – build and deploy durable AI agents and workflows 项目地址: https://gitcode.com/gh_mirrors/tr/trigger.dev 点击查看 免费下载 本篇指南围绕仓库内的 .claude/rules… · 2026/9/21 7:41:57

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39

Word表格编号全攻略:从列表编号到题注交叉引用
Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39

从第一个站到第二个站:独立开发者的静态网站选型与落地实践
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41

Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行
Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 0:00:18

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码