SaltStack自动化运维配置指南

对于刚接触服务器运维的朋友来说,一听到“自动化”三个字可能就觉得复杂。
其实 SaltStack 就是一个帮你批量管理成百上千台服务器的工具,它采用 Master-Minion 的架构:一台“主控端”(Master)通过简单的配置去控制多台“被控端”(Minion),执行命令、同步文件、安装软件等都能自动化完成。
下面我们直接动手搭建一套可用环境,让你直观感受 SaltStack 自动化运维配置的流程。

准备工作:两台能通信的 Linux 服务器

你需要准备两台 Linux 机器,一台作为 Master(主控),一台作为 Minion(被控)。
如果手头只有一台电脑,可以用虚拟机(如 VirtualBox)创建两个 CentOS 7/8 或 Ubuntu 20.04 实例。
关键前提:

  • 两台机器网络互通(能互相 ping 通 IP)。
  • Master 机器开放 4505 和 4506 端口(Salt 通信端口),或者暂时关闭防火墙。
  • 每台机器都能访问软件源(apt/yum)。
  • 记下 Master 的 IP 地址,后面配置 Minion 要用。

安装 SaltStack Master 和 Minion

步骤 1:在 Master 上安装(以 CentOS 为例)

# 添加 SaltStack 官方 yum 源
sudo yum install https://repo.saltproject.io/salt/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm
# 安装 Master
sudo yum install salt-master
# 启动并设置开机自启
sudo systemctl start salt-master
sudo systemctl enable salt-master

步骤 2:在 Minion 上安装

# 同样添加源(版本要一致)
sudo yum install https://repo.saltproject.io/salt/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm
# 安装 Minion
sudo yum install salt-minion

Ubuntu 用户把 yum 换成 apt,源地址换成 Debian 的即可。

配置 Minion 连接 Master

这是新手最容易出错的地方。
编辑 Minion 上的配置文件 /etc/salt/minion

# 找到或添加这一行,把 master 的值改成 Master 的 IP
master: 192.168.1.100   # 替换为你的 Master 实际 IP
# 可选的 minion ID,如果多台 Minion 建议使用有意义的名称
id: web01

保存后重启 Minion 服务:

sudo systemctl restart salt-minion

接着回到 Master 机器,查看 Minion 的密钥请求:

sudo salt-key -L

你会看到类似 Unaccepted Keys: web01
接受密钥:

sudo salt-key -a web01

之后可以用 salt-key -L 确认状态变为 Accepted Keys

编写第一个 State 文件:让 Minion 自动安装 Nginx

SaltStack 的核心是“State”,它描述目标服务器应该达到的状态。
在 Master 上创建 /srv/salt/ 目录(如果不存在),然后新建一个文件 /srv/salt/nginx.sls

nginx:
  pkg.installed:    # 确保安装 Nginx
    - name: nginx
  service.running:  # 确保 Nginx 服务正在运行
    - name: nginx
    - enable: true  # 开机自启

回到命令行,执行这个 State:

sudo salt 'web01' state.apply nginx

如果看到一堆绿色输出的 Result: True,说明 Nginx 已经在 Minion 上自动安装并启动了。
你可以登录 Minion 用 nginx -vsystemctl status nginx 验证。

常见问题与避坑指南

  • 密钥一直显示 Unaccepted:检查 Minion 的 master 配置是否填写准确;Master 的防火墙是否阻挡了端口 4505/4506;尝试在 Minion 上重启 salt-minion 并等待几秒再 salt-key -L
  • state.apply 返回错误“Minion did not return”:通常是因为网络不通或 Minion 服务没启动。先在 Master 上 salt 'web01' test.ping,如果能返回 True,再检查 State 文件语法。
  • YAML 缩进错误:State 文件对缩进极其敏感,必须使用空格(不能用 Tab),且每个层级对齐。建议用 VS Code 或 vim 配合 YAML 插件。
  • ID 冲突:如果多个 Minion 使用了同一个 id,Master 只会保留最后一个连接的 Minion。务必为每台 Minion 设置独一无二的 ID。

动手完成上述步骤后,你已经走通了 SaltStack 自动化运维配置的核心环节。
之后可以扩展 State 文件,管理日志收集、配置文件下发、服务重启等更复杂的场景。
如果遇到卡住的地方,优先检查网络、防火墙和密钥状态——绝大多数新手问题都出在这三点上。

分享到:
上一篇
运维批量管理工具Ansible实操
下一篇
监控大屏Grafana可视化搭建:零基础完整教程
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意