以无 Master 模式运行 salt-minion,就能在单台机器上使用 Salt 的配置管理功能,而不必联系另一台机器上的 Salt Master。
Salt Minion 本身包含丰富的功能,因此单独运行它也很有用。独立运行的 Minion 可以用于完成多种任务:
-
通过状态(States)搭建一台 Master 服务器,也就是用 Salt 来配置 Salt Master。
-
在无法连接 Master 的系统上使用
salt-call命令。 -
执行无 Master 状态,完全使用 Minion 本地的文件运行状态。
在将状态树部署到生产环境之前,这种方式也适合用来进行测试。
引导安装 Salt Minion
对于具有 Bourne shell 的操作系统,salt-bootstrap 脚本能够简化在服务器上引导安装 Salt 的过程:
curl -L https://github.com/saltstack/salt-bootstrap/releases/latest/download/bootstrap-salt.sh -o bootstrap_salt.sh
sudo sh bootstrap_salt.sh
执行脚本之前,先校验下载文件的校验和是一种良好做法。可以运行以下命令,使用 SHA256 进行校验:
test $(sha256sum bootstrap_salt.sh | awk '{print $1}') \
= $(curl -sL https://github.com/saltstack/salt-bootstrap/releases/latest/download/bootstrap-salt.sh.sha256 | cat -) \
&& echo "OK" \
|| echo "File does not match checksum"
注意
前面先下载脚本的方式是首选,因为这样可以检查引导脚本的内容,也便于日后再次使用。另一种方式是下载 Bash 脚本后立即执行,命令如下:
curl -L https://github.com/saltstack/salt-bootstrap/releases/latest/download/bootstrap-salt.sh | sudo sh -s --
其他单行命令示例请参阅 salt-bootstrap 文档。使用 Vagrant 测试 Salt 时,Vagrant 的 Salt provisioner 会为你配置虚拟机。
让 Salt 以无 Master 模式运行
要让 Minion 不去寻找 Master,需要在 Minion 配置文件中设置 file_client 配置选项。默认情况下,file_client 的值为 remote,Minion 会从 Salt Master 获取文件服务器数据和 Pillar 数据。将 file_client 设为 local 后,Minion 就不会再从 Master 获取这些数据。
file_client: local
此时,Salt Minion 不会寻找 Master,而是假定本地系统已经具备全部文件资源和 Pillar 资源。
原先位于 Master 配置中的配置,例如 /etc/salt/master 中的配置,应移到 Minion 配置中,因为 Minion 不会读取 Master 的配置。
注意
以无 Master 模式运行 Salt 时,不要运行 salt-minion 守护进程。否则,它会尝试连接 Master,并因连接失败而报错。salt-call 命令可以独立工作,不需要 salt-minion 守护进程。
创建状态树
成功安装 salt-minion 后,下一步是创建状态树。状态树用于存放 SLS 文件,这些文件定义了 Minion 可以应用的状态。
下面的示例将逐步创建一棵状态树,确保服务器已经安装 Apache Web 服务器。
注意
有关 Salt States 的完整说明,请参阅状态教程。
-
创建
top.sls文件:
/srv/salt/top.sls:
base:
'*':
- webserver
-
创建
webserver状态树:
/srv/salt/webserver.sls:
apache: # ID declaration
pkg: # state declaration
- installed # function declaration
注意
Apache 软件包在不同平台上的名称不同。例如,在 Debian/Ubuntu 上叫作 apache2,在 Fedora/RHEL 上叫作 httpd,在 Arch 上叫作 apache。
接下来,只需使用 salt-call 为 Minion 应用配置。
使用 salt-call
salt-call 命令用于在 Minion 本地运行远程执行函数,而不是由 Master 发起执行。通常,salt-call 会联系 Master,以获取文件服务器数据和 Pillar 数据;但在独立运行时,需要明确告诉 salt-call 不要向 Master 获取这些数据:
salt-call --local state.apply
--local 标志告诉 salt-minion 从本地文件系统查找状态树,而不要联系 Salt Master 获取指令。
要获得详细输出,请使用 -l debug:
salt-call --local state.apply -l debug
Minion 首先检查 top.sls 文件,确定自己属于通配模式 * 匹配的组,因此应当应用 webserver SLS。
然后,它检查 webserver.sls 文件,找到用于安装 Apache 软件包的 apache 状态。
此时,Minion 所在的机器上应该已经安装 Apache。接下来,可以开始学习编写更复杂的状态。
原文署名:Salt Project 贡献者。原页面保留的版权标注为“© Copyright 2026.”。原文版权归原权利人所有;本页明确标注的译者说明为中文整理时补充,不属于原文正文。












暂无评论内容