使用引导脚本注册客户端

1. 简介

使用引导脚本注册客户端可让您控制参数,并且便于您在需要时一次性注册大量客户端。

要使用启动脚本注册客户端,我们建议您首先创建一个模板启动脚本,然后可以复制和修改。 您创建的启动脚本在客户端注册时执行,并确保所有必要的软件包都部署到客户端。 启动脚本中的某些参数确保客户端系统可以使用激活密钥和 GPG 密钥分配到其基础通道。

重要的是,您要仔细检查储存库信息,以确保它与基础通道储存库匹配。 如果储存库信息不完全匹配,启动脚本将无法下载正确的软件包。

其他注意事项:

  • 所有客户端都需要一个启动储存库。 它在 SUSE Multi-Linux Manager 服务器上自动创建,并在产品同步时重新生成。 启动储存库包括在客户端上安装 Salt 和注册客户端所需的软件包。 有关创建启动储存库的更多信息,请参见 引导储存库

  • openSUSE Leap 15 和 SLE 15 默认使用 Python 3。 基于 Python 2 的启动脚本必须为 openSUSE Leap 15 和 SLE 15 系统重新创建。 如果您使用 Python 2 注册 openSUSE Leap 15 或 SLE 15 系统,启动脚本将失败。

从旧版 SUSE Multi-Linux Manager 迁移到新版本后,我们强烈建议在引入新系统之前重新生成启动脚本,以防出现任何潜在问题。

要在服务器容器内访问外壳,请在容器主机上运行 mgrctl term。 从那里,可以像往常一样运行 CLI 工具。

2. 使用 mgr-bootstrap 创建启动脚本

mgr-bootstrap 命令用于生成自定义启动脚本。 启动脚本用于 SUSE Multi-Linux Manager 客户端系统,以简化其初始注册和配置。

--activation-keys--script 是唯一必需的参数。 在 SUSE Multi-Linux Manager 服务器上,以 root 身份在命令行中执行它,并提供必需的参数。 将 <ACTIVATION_KEY<EDITED_NAME> 替换为您的值:

  1. 在 SUSE Multi-Linux Manager 容器主机的命令提示符下,以 root 用户身份运行以下命令以进入服务器容器:

    mgrctl term
  2. 执行以下命令(根据需要调整参数值)

    mgr-bootstrap --activation-keys=<ACTIVATION_KEY> --script=bootstrap-<EDITED_NAME>.sh

mgr-bootstrap 命令提供了几个其他选项,包括设置特定主机名、特定 GPG 密钥和注册方法(salt-minion 或 salt-bundle)的功能。

  • 如果您要创建引导脚本以便将系统注册到代理中,可以在服务器容器中运行以下命令来实现此目的:

    mgr-boostrap --hostname <PROXY_FQDN>

    此命令将创建一个默认名称为 bootstrap.sh 的新启动脚本,并将覆盖当前服务器使用的现有 bootstrap.sh 文件。

  • 要指定不同脚本,请运行以下命令:

    mgr-bootstrap --hostname <PROXY_FQDN> --script=boostrap-<PROXY-SCRIPT>.sh

有关详细信息,请参见 mgr-bootstrap 手册页,或运行 mgr-bootstrap --help

3. 从 Web UI 中创建启动脚本

您可以使用 SUSE Multi-Linux Manager Web UI 创建可编辑的启动脚本。

过程:升级创建启动脚本
  1. 在 SUSE Multi-Linux Manager Web UI 中,导航至 Admin  Manager Configuration  Bootstrap Script

  2. 必填字段中会预填充从之前的安装步骤获得的值。 有关每个设置的详细信息,请参见 Bootstrap Script

  3. 单击 更新 创建脚本。

  4. 启动脚本生成后,会存储在服务器的 /srv/www/htdocs/pub/bootstrap 目录中。 或者,您可以通过 HTTPS 访问启动脚本。 将 <example.com> 替换为您的 SUSE Multi-Linux Manager 服务器的主机名:

    https://<example.com>/pub/bootstrap/bootstrap.sh

请勿在启动脚本中禁用 SSL。 确保在 Enable SSL 中选中了 Web UI,或者启动脚本中存在 USING_SSL=1 设置。 如果您禁用 SSL,注册过程将需要自定义 SSL 证书。

有关自定义证书的详细信息,请参见 SSL 证书

4. 编辑引导脚本

您可以复制并修改您创建的模板启动脚本以进行自定义。 修改启动脚本以与 SUSE Multi-Linux Manager 一起使用的最低要求是包含一个激活密钥。 大多数软件包都使用 GPG 签名,因此您还需要在系统上拥有受信任的 GPG 密钥才能安装它们。

在此过程中,您需要知道激活密钥的确切名称。 导航至 Home  Overview,然后在 Tasks 框中,单击 Manage Activation Keys。 为频道创建的所有密钥都列在此页面上。 您必须准确输入您希望在启动脚本中使用的密钥的全名,格式与密钥字段中显示的一致。 有关激活密钥的更多信息,请参见 激活密钥

过程:升级修改启动脚本
  1. 在 SUSE Multi-Linux Manager 容器主机的命令提示符下,以 root 用户身份运行以下命令以进入服务器容器:

    mgrctl term
  2. 在您的 SUSE Multi-Linux Manager 服务器上,以 root 身份在命令行中切换到启动目录,使用:

    cd /srv/www/htdocs/pub/bootstrap/
  3. 创建并重命名用于每个客户端的两个模板引导脚本副本。

    cp bootstrap.sh bootstrap-sles12.sh
    cp bootstrap.sh bootstrap-sles15.sh
  4. 打开 bootstrap-sles15.sh 进行修改。 向下滚动,直到您可以看到下面显示的文本。 如果文件中存在 exit 1,请在行首添加井号(#)以将其注释掉。 这将激活脚本。 在 ACTIVATION_KEYS= 字段中输入此脚本的密钥名称:

    echo "Enable this script: comment (with #'s) this block (or, at least just"
    echo "the exit below)"
    echo
    #exit 1
    
    # can be edited, but probably correct (unless created during initial install):
    # NOTE: ACTIVATION_KEYS *must* be used to bootstrap a client machine.
    ACTIVATION_KEYS=1-sles15
    ORG_GPG_KEY=

    用户无需手动编辑脚本,只需在运行时传递以下环境变量即可:

    • ACTIVATION_KEYS:用于注册的激活密钥

    • ORG_GPG_KEY:GPG 密钥的路径或标识符

    • REACTIVATION_KEY:用于之前已注册的系统的重新激活密钥

    • MGR_SERVER_HOSTNAME:要注册客户端的服务器或代理的主机名

    使用环境变量可实现运行时的动态输入,并让用户更轻松地在不同系统或环境中重复使用同一引导脚本。

  5. 完成后,保存该文件,然后对第二个引导脚本重复此过程。

默认情况下,启动脚本将尝试安装 venv-salt-minion(如果在启动储存库中可用),如果启动储存库中没有 salt-minion 包,则安装 Salt。 如果出于某种原因需要,您可以选择不安装 Salt 包,并继续使用 salt-minion

有关更多信息,请参见 Salt Bundle

5. 运行引导脚本来注册客户端

创建好脚本后,您便可以使用它来注册客户端。

过程:升级运行启动脚本
  1. 在 SUSE Multi-Linux Manager 容器主机的命令提示符下,以 root 用户身份运行以下命令以进入服务器容器:

    mgrctl term
  2. 在 SUSE Multi-Linux Manager 服务器上,切换到启动目录:

    cd /srv/www/htdocs/pub/bootstrap/
  3. 运行以下命令在客户端上执行启动脚本;将 EXAMPLE.COM 替换为客户端的主机名:

    cat bootstrap-sles15.sh | ssh root@EXAMPLE.COM /bin/bash
  4. 或者,在客户端上运行以下命令:

    ACTIVATION_KEYS="17-someactivationkey" \
    MGR_SERVER_HOSTNAME="proxy.example.com" \
    ORG_GPG_KEY="mykey" \
    REACTIVATION_KEY=my-reactivation-key \
    curl -Sks https://server_hostname/pub/bootstrap/bootstrap.sh | /bin/bash

    如果您不需要覆盖任何值,完全可以省略环境变量:

    curl -Sks https://server_hostname/pub/bootstrap/bootstrap.sh | /bin/bash

    为避免出现问题,请确保启动脚本是使用 bash 执行的。

    此脚本会下载位于您先前创建的储存库目录下的所需依赖项。

  5. 当脚本运行完成后,您可以检查客户端是否正确注册。 打开 SUSE Multi-Linux Manager Web UI,导航到 系统  概述,以确保新客户端已列出。 如果客户端未列出,请在 SUSE Multi-Linux Manager Web UI 中导航到 Salt  Keys,检查客户端密钥是否被接受。

当使用 SUSE Multi-Linux Manager 在客户端上安装新软件包或更新时,任何最终用户许可协议(EULA)将自动被接受。 要查看软件包EULA,请在 Web UI 中打开软件包详细信息页面。