Salt 捆绑包
1. 什么是 Salt 捆绑包?
Salt 捆绑包是单个二进制软件包,包含 Salt 受控端、Python 3、必需的 Python 模块以及库。
Salt 捆绑包随附 Python 3 以及运行 Salt 所需满足的所有条件。因此 Salt 捆绑包不会将客户端上安装的 Python 版本用作系统软件。Salt 捆绑包可以安装在不满足指定 Salt 版本的要求的客户端上。
此外,还可以在所运行 Salt 受控端连接到 SUSE Manager Salt 主控端以外的 Salt 主控端的系统上使用 Salt 捆绑包。
2. 使用 Salt 捆绑包将客户端注册为受控端
建议的注册方法是使用 Salt 捆绑包进行注册。本节介绍当前实现的优点和局限性。Salt 捆绑包以 venv-salt-minion
的形式提供,其中包含 Salt、Python 3 以及 Salt 依赖的 Python 模块。通过 Web UI 引导时使用的也是 Salt 捆绑包,因此通过 Web UI 引导不依赖 Python 来进行。借助 Salt 捆绑包,客户端不再需要提供任何 Python 解释器或模块。
如果您引导新客户端,默认的注册方法是使用 Salt 捆绑包注册。您可以将现有客户端切换为使用 Salt 捆绑包方法。如果切换,将会安装 salt-minion
软件包及其依赖项。
2.1. 将 Salt 捆绑包与 Salt 受控端结合使用
可以同时使用 Salt 捆绑包与由 SUSE Manager 服务器以外的 Salt 主控端管理的 Salt 受控端。如果将 Salt 捆绑包安装在客户端上,SUSE Manager 服务器将会管理 Salt 捆绑包的配置文件,在此情况下,salt-minion
的配置文件将不会受到管理。有关详细信息,请参见 Salt 捆绑包配置。
|
2.2. 从 Salt 受控端切换到 Salt 捆绑包
可以使用 Salt 状态 util.mgr_switch_to_venv_minion
从 salt-minion
切换到 venv-salt-minion
。建议分两步来切换到 venv-salt-minion
,以免在切换过程中出现任何问题:
util.mgr_switch_to_venv_minion
状态切换到 venv-salt-minion
-
首先,在不指定任何 pillar 的情况下应用
util.mgr_switch_to_venv_minion
。这样会通过复制配置文件等数据切换到venv-salt-minion
。此过程不会清理原始的salt-minion
配置及其软件包。salt <minion_id> state.apply util.mgr_switch_to_venv_minion
在
mgr_purge_non_venv_salt
设为True
(用于去除salt-minion
)以及mgr_purge_non_venv_salt_files
设为True
(用于去除与salt-minion
相关的所有文件)的情况下应用util.mgr_switch_to_venv_minion
。此第二步用于确保第一步已经处理,然后去除旧配置文件以及现已过时的salt-minion
软件包。salt <minion_id> state.apply util.mgr_switch_to_venv_minion pillar='{"mgr_purge_non_venv_salt_files": True, "mgr_purge_non_venv_salt": True}'
如果切换过程中跳过第一步来运行第二步,状态应用过程可能会失败,因为此过程需要停止用于在客户端执行命令的 |
反过来,您也可以不安装 Salt 捆绑包,而是继续使用 salt-minion
。在此情况下,请指定以下其中一个选项:
-
指定
--no-bundle
选项来执行mgr-bootstrap
。 -
在生成的引导脚本中,将
AVOID_VENV_SALT_MINION
设为1
。 -
对于引导状态,将
mgr_avoid_venv_salt_minion
pillar 设为True
。
3. 使用 Salt 捆绑包执行 Salt SSH 操作
在对客户端执行 Salt SSH 操作时,也可使用 Salt 捆绑包。
在执行任何 Salt 命令前,外壳脚本会将 Salt 捆绑包部署到目标系统上,而不会安装 venv-salt-minion
。由于 Salt 捆绑包包含整个 Salt 代码库,因此不会部署 salt-thin
。Salt SSH(包括使用 Web UI 进行引导)使用捆绑包中的 Python 3 解释器。目标系统上不需要安装任何其他 Python 解释器。
随该捆绑包部署的 Python 3 用于处理客户端上的 Salt SSH 会话,因此 Salt SSH(包括使用 Web UI 进行引导)不依赖于在系统上安装 Python。
可以将 salt-thin
作为一种后备方法,但这种方法需要在客户端上安装 Python 3。不建议也不支持使用此方法,此方法仅用于开发目的。请在 /etc/rhn/rhn.conf
配置文件中将 web.ssh_use_salt_thin
设为 true
。
|
4. 使用 pip 通过 Python 软件包扩展 Salt 捆绑包
Salt 捆绑包提供了 pip
,使用该命令可以通过额外的 Python 软件包扩展绑定 Salt 受控端的功能。
默认情况下,salt <minion_id> pip.install <package-name>
会将 <package_name>
指定的 Python 软件包安装到 /var/lib/venv-salt-minion/local
中。
如果需要,可以通过为 [Service] Environment=VENV_PIP_TARGET=/new/path/local/venv-salt-minion/pip |
更新 Salt 捆绑包时,通过 |