SaltStack 大多数时候被用在 Linux 集群的管理上,但它对 Windows 的支持同样成熟。要在 Windows Server 上纳入 Salt 体系,核心工作就是部署 Minion 端并完成与 Master 的对接。整个流程并不复杂,主要分为安装软件包、修改配置文件、启动服务、验证通信四个步骤,下面逐一展开。

一、获取安装包并完成安装
Windows 版本的 Salt Minion 由官方提供独立的 MSI 安装包,可以在 SaltStack 官方仓库的 windows 目录下找到,文件名通常形如 Salt-Minion-3005-Py3-AMD64-Setup.exe。下载时注意选择与系统架构匹配的版本,64 位系统选择 AMD64,32 位老系统选择 x86。
安装方式有两种:图形界面双击安装,或者用命令行做无人值守部署。在批量场景下推荐命令行方式,直接在 PowerShell 中执行:
# 无人值守安装,指定 Master 地址和 Minion ID Salt-Minion-3005-Py3-AMD64-Setup.exe /S /master=192.168.0.10 /minion-id=win-web-01
其中 /S 表示静默安装,/master 指定 Salt Master 的地址,/minion-id 指定该 Minion 的唯一标识。如果不在安装时指定,后面也可以通过修改配置文件来设置。安装完成后,程序默认会落在 C:\Program Files\Salt\Salt-Minion 目录,同时系统服务列表中会出现 Salt Minion 服务。
二、修改 minion 配置文件
如果不使用安装参数,或者后续需要调整配置,就要编辑配置文件。Windows 下的默认路径是 C:\ProgramData\Salt\Conf\minion(注意 ProgramData 是隐藏目录,需要在资源管理器中开启显示隐藏文件,或直接在地址栏输入路径访问)。
该文件是 YAML 格式,需要注意缩进必须用空格而不能用 Tab。最核心的两项配置如下:
# 指定 Salt Master 的地址,可以是 IP 或主机名 master: 192.168.0.10 # 指定本 Minion 的 ID,不设置则默认使用主机名 id: win-web-01
如果 Master 使用了非默认端口,或启用了多 Master,可以进一步配置 master 参数为列表形式。另外,如果 Master 端口有变更,还需调整 publish_port 和 retina_port 相关项。对于域环境中的服务器,建议将 id 设置为 FQDN 全名,便于在 Salt 中按域名定位主机。
修改配置后记得保存为 UTF-8 无 BOM 格式,避免中文注释导致的解析失败。这也是 Windows 下常见的坑之一。
三、启动服务并接受密钥
配置完成后,以管理员身份打开 PowerShell,启动服务并设置为自动运行:
# 启动 Salt Minion 服务 Start-Service -Name "salt-minion" # 设置为开机自启 Set-Service -Name "salt-minion" -StartupType Automatic
Minion 启动后会主动连接 Master 并发送自己的公钥,此时 Master 端还无法识别它,需要在 Master 上执行 salt-key 查看待接受的主机:
# 查看 Minion 密钥请求 salt-key -L # 接受指定 Minion salt-key -a win-web-01 -y # 或一次性接受全部 salt-key -A -y
密钥接受后,主从双方的信任关系就建立起来了。可以用 salt-key -L 再次确认,win-web-01 应出现在 Accepted Keys 列表中。
四、验证通信与常见问题排查
回到 Master 端执行一条简单的测试命令,验证链路是否通畅:
# 远程执行测试命令 salt 'win-web-01' test.ping # 查看 Windows Minion 的系统信息 salt 'win-web-01' grains.item os osversion
如果返回 True,说明通信正常。Windows 上的 grains 会显示 os 为 Windows,osversion 为具体版本号,例如 2019Server 或 2022Server。
如果 test.ping 没有响应,可以从几个方向排查:第一,确认 Windows 防火墙没有拦截出站连接,Salt Minion 默认主动连接 Master 的 4505 和 4506 端口,属于出站流量,一般默认放行,但有些安全策略严格的机器需要检查;第二,确认 Master 端的密钥是否已接受,密钥未接受的 Minion 不会响应任何命令;第三,检查配置文件中 master 地址是否正确,以及 YAML 缩进是否合规。
查看 Minion 日志是最直接的定位手段,日志文件位于 C:\ProgramData\Salt\Logs\minion.log。连接失败、配置解析错误、密钥不匹配等都会在日志中留下明确记录。遇到服务启动失败的情况,也可以先手动运行 C:\Program Files\Salt\Salt-Minion\salt-minion.exe 观察前台输出的报错信息,比看服务状态码更直观。
五、Windows 下的常用管理操作
Minion 正常接入后,就可以用 Salt 管理 Windows 服务器了。Windows 下有专门的模块,例如通过 pkg 模块安装软件、service 模块管理服务、win_update 模块打补丁:
# 安装 7zip salt 'win-web-01' pkg.install 7zip # 管理 Windows 服务 salt 'win-web-01' service.status wuauserv salt 'win-web-01' service.restart wuauserv # 安装系统补丁(Windows Update) salt 'win-web-01' win_wua.list
日常批量操作中,还可以结合 grains 对所有 Windows 主机做分组匹配,例如 salt -G 'os:Windows' cmd.run 'systeminfo',一次性获取全部 Windows 服务器的系统信息。配合 State 文件和 SLS 模块,就能把 Windows 服务器的初始化配置、软件安装、补丁更新全部纳入自动化流水线,这也是在混合平台环境中引入 Salt 的最大价值所在。
SaltStack MinionWindows Server自动化运维修改时间:2026-09-13 15:36:44