Salt 无 Master 模式快速入门:在单机上应用本地状态

以无 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 的完整说明,请参阅状态教程。

  1. 创建 top.sls 文件:

/srv/salt/top.sls:

base:
  '*':
    - webserver
  1. 创建 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。接下来,可以开始学习编写更复杂的状态。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容