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}'
2.3. 其他注意事项
-
如果切换过程中跳过第一步来运行第二步,状态应用过程可能会失败,因为此过程需要停止用于在客户端执行命令的
salt-minion
。 -
您也可以不安装 Salt 捆绑包,而是继续使用
salt-minion
。在此情况下,请指定以下其中一个选项:-
指定
--no-bundle
选项来执行mgr-bootstrap
。 -
在生成的引导脚本中,将
AVOID_VENV_SALT_MINION
设为1
。 -
对于引导状态,将
mgr_avoid_venv_salt_minion
pillar 设为True
。
-
3. 使用 Salt 捆绑包执行 SSH 推送
在对客户端执行 SSH 推送操作时,也可使用 Salt 捆绑包。
在执行任何 Salt 命令前,外壳脚本会将 Salt 捆绑包部署到目标系统上,而不会安装 venv-salt-minion
。由于 Salt 捆绑包包含整个 Salt 代码库,因此不会部署 salt-thin
。SSH 推送(包括使用 Web UI 进行引导)使用捆绑包中的 Python 3 解释器。目标系统上不需要安装任何其他 Python 解释器。
随该捆绑包部署的 Python 3 用于处理客户端上的 SSH 推送会话,因此 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 捆绑包时,通过 |