Salt 捆绑包
1. 什么是 Salt 捆绑包?
Salt 捆绑包是单个二进制软件包,包含Salt 受控端、Python 3、所需的 Python 模块和库。
Salt 捆绑包随附 Python 3 以及运行 Salt 所需满足的所有条件。因此 Salt 捆绑包不会将客户端上安装的 Python 版本用作系统软件。Salt 捆绑包可以安装在不满足指定 Salt 版本的要求的客户端上。
此外,还可以在所运行 Salt 受控端连接到 SUSE Multi-Linux Manager Salt 主控端以外的 Salt 主控端的系统上使用 Salt 捆绑包。
2. 使用 Salt 捆绑包将客户端注册为受控端
推荐使用 Salt 捆绑包来注册客户端。本节介绍当前实现的优点和局限性。
The Salt Bundle is provided as the venv-salt-minion package that consists of Salt, Python 3, and the Python modules Salt depends on.
通过 Web UI 进行引导也会使用 Salt 捆绑包,因此通过 Web UI 进行引导不依赖于 Python。使用 Salt 捆绑包时,客户端不再需要提供任何 Python 解释器或模块。
If you bootstrap new clients, registration with the Salt Bundle is the default method. You can switch existing clients to the Salt Bundle method. If you switch, the salt-minion package and its dependencies will stay installed.
2.1. 将 Salt 捆绑包与 Salt 受控端结合使用
The Salt Bundle can be used with the Salt Minion managed by the Salt Master other than SUSE Multi-Linux Manager Server at the same time. If the Salt Bundle is installed on a client SUSE Multi-Linux Manager Server will manage the configuration files of the Salt Bundle, the configuration files of salt-minion will not be managed in this case. For more information, see Salt Bundle configuration.
|
2.2. 从 Salt 受控端切换到 Salt 捆绑包
The Salt state util.mgr_switch_to_venv_minion is available to switch from salt-minion to venv-salt-minion. It is recommended to switch to venv-salt-minion in two steps to avoid trouble with shifting processes:
util.mgr_switch_to_venv_minion state to venv-salt-minion-
Apply
util.mgr_switch_to_venv_minionwith no pillar specified first. This will result in the switch tovenv-salt-minionwith copying configuration files etc. It will not clean up the originalsalt-minionconfigurations and its packages.salt <minion_id> state.apply util.mgr_switch_to_venv_minion
Apply
util.mgr_switch_to_venv_minionwithmgr_purge_non_venv_saltset toTrueto removesalt-minionand withmgr_purge_non_venv_salt_filesset toTrueto remove all the files related tosalt-minion. This second step ensures the first step was processed, and then removes the old configuration files and the now obsoletesalt-minionpackage.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. 其他注意事项
-
In case of running the second step only and the first step, state apply process could fail as it requires stopping the
salt-minionwhich is used to execute the command on the client side. -
It is also possible to avoid installing the Salt Bundle and keep using
salt-minioninstead. In this case, specify one of these options:-
Execute
mgr-bootstrapwith--no-bundleoption. -
Set
AVOID_VENV_SALT_MINIONto1in the generated bootstrap script. -
For bootstrap state set the
mgr_avoid_venv_salt_minionpillar toTruein/srv/pillar/salt_bundle_config.sls.
-
3. 使用 Salt 捆绑包执行 SSH 推送
在对客户端执行 SSH 推送操作时,也可使用 Salt 捆绑包。
A shell script deploys the Salt Bundle onto the target system without installing venv-salt-minion before any Salt command is executed. Because the Salt Bundle contains the whole Salt code base, no salt-thin is deployed. SSH Push (including bootstrapping using the Web UI) uses the Python 3 interpreter within the bundle. The target system does not need to have any other Python interpreter installed.
随该捆绑包部署的 Python 3 用于处理客户端上的 SSH 推送会话,因此 SSH 推送(包括使用 Web UI 进行引导)不依赖于在系统上安装 Python。
Using salt-thin can be enabled as a fallback method, but it requires Python 3 to be installed on the client. This method is not recommended nor supported and exists for development purposes only. Set web.ssh_use_salt_thin to true in the /etc/rhn/rhn.conf configuration file.
|
4. Extend Salt Bundle With Python Packages using pip
The Salt Bundle includes pip to make it possible to extend the functionality of the bundled Salt Minion with extra Python packages.
By default, salt <minion_id> pip.install <package-name> installs the Python package specified by <package_name> into /var/lib/venv-salt-minion/local.
|
If needed, the path [Service] Environment=VENV_PIP_TARGET=/new/path/local/venv-salt-minion/pip |
|
The Python packages installed through |