跳到内容
documentation.suse.com / RMT 指南
SUSE Linux Enterprise Server 15 SP6

Repository Mirroring Tool 指南

本指南为 Repository Mirroring Tool 管理员指南。该产品是 SUSE Customer Center 与储存库和注册目标之间的代理系统。

出版日期:2024 年 12 月 12 日
表格清单

版权所有 © 2006–2024 SUSE LLC 和贡献者。保留所有权利。

根据 GNU 自由文档许可证 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可证附带不可变部分。许可版本 1.2 的副本包含在题为GNU Free Documentation License的部分。

有关 SUSE 商标,请参见 https://www.suse.com/company/legal/。所有第三方商标均是其各自所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。

本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。

前言

1 可用文档

联机文档

可在 https://documentation.suse.com 上查看我们的联机文档。您可浏览或下载各种格式的文档。

注意
注意:最新更新

最新的更新通常会在本文档的英文版中提供。

SUSE 知识库

如果您遇到问题,请参考 https://www.suse.com/support/kb/ 上提供的联机技术信息文档 (TID)。在 SUSE 知识库中搜索根据客户需求提供的已知解决方案。

发行说明

有关发行说明,请参见 https://www.suse.com/releasenotes/

在您的系统中

如需脱机使用,您也可在系统的 /usr/share/doc/release-notes 下找到该发行说明。各软件包的相应文档可在 /usr/share/doc/packages 中找到。

许多命令的手册页中也对相应命令进行了说明。要查看手册页,请运行 man 后跟特定的命令名。如果系统上未安装 man 命令,请使用 sudo zypper install man 加以安装。

2 改进文档

欢迎您提供针对本文档的反馈及改进建议。您可以通过以下渠道提供反馈:

服务请求和支持

有关产品可用的服务和支持选项,请参见 https://www.suse.com/support/

要创建服务请求,需在 SUSE Customer Center 中注册订阅的 SUSE 产品。请转到 https://scc.suse.com/support/requests 并登录,然后单击新建

Bug 报告

https://bugzilla.suse.com/ 中报告文档问题。

要简化此过程,请单击本文档 HTML 版本中的标题旁边的报告问题图标。这样会在 Bugzilla 中预先选择正确的产品和类别,并添加当前章节的链接。然后,您便可以立即开始键入 Bug 报告。

需要一个 Bugzilla 帐户。

贡献

要帮助改进本文档,请单击本文档 HTML 版本中的标题旁边的 Edit Source document(编辑源文档)图标。然后您会转到 GitHub 上的源代码,可以在其中提出拉取请求。

需要一个 GitHub 帐户。

注意
注意:Edit source document(编辑源文档)仅适用于英语版本

Edit source document(编辑源文档)图标仅适用于每个文档的英语版本。对于所有其他语言,请改用报告问题图标。

有关用于本文档的文档环境的详细信息,请参见储存库的 README。

邮件

您也可以将有关本文档的错误以及反馈发送至 <>。请在其中包含文档标题、产品版本和文档发布日期。此外,请包含相关的章节号和标题(或者提供 URL),并提供问题的简要说明。

3 文档约定

本文档中使用了以下通知和排版约定:

  • /etc/passwd:目录名称和文件名

  • PLACEHOLDER:将 PLACEHOLDER 替换为实际值

  • PATH:环境变量

  • ls--help:命令、选项和参数

  • user:用户或组的名称

  • package_name:软件包的名称

  • AltAltF1:按键或组合键。按键以大写字母显示,与键盘上的一样。

  • 文件 文件 ›  另存为:菜单项,按钮

  • AMD/Intel 本段内容仅与 AMD64/Intel 64 体系结构相关。箭头标记文本块的开始位置和结束位置。

    IBM Z, POWER 本段内容仅与 IBM ZPOWER 体系结构相关。箭头标记文本块的开始位置和结束位置。

  • 第 1 章示例章节:对本指南中其他章节的交叉引用。

  • 必须使用 root 特权运行的命令。您还可以在这些命令前加上 sudo 命令,以非特权用户身份来运行它们:

    # command
    > sudo command
  • 非特权用户也可以运行的命令:

    > command
  • 可以通过一行末尾处的反斜线字符 (\) 拆分成两行或多行的命令。反斜线告知外壳命令调用将会在该行末尾后面继续:

    > echo a b \
    c d
  • 显示命令(前面有一个提示符)和外壳返回的相应输出的代码块:

    > command
    output
  • 注意事项

    警告
    警告:警报通知

    在继续操作之前,您必须了解的不可或缺的信息。向您指出有关安全问题、潜在数据丢失、硬件损害或物理危害的警告。

    重要
    重要:重要通知

    在继续操作之前,您必须了解的重要信息。

    注意
    注意:注意通知

    额外信息,例如有关软件版本差异的信息。

    提示
    提示:提示通知

    有用信息,例如指导方针或实用性建议。

  • 精简通知

    注意

    额外信息,例如有关软件版本差异的信息。

    提示

    有用信息,例如指导方针或实用性建议。

4 支持

下面提供了 SUSE Linux Enterprise Server 的支持声明和有关技术预览的一般信息。有关产品生命周期的细节,请参见 https://www.suse.com/lifecycle

如果您有权获享支持,可在 https://documentation.suse.com/sles-15/html/SLES-all/cha-adm-support.html 中查找有关如何收集支持票据所需信息的细节。

4.1 SUSE Linux Enterprise Server 支持声明

要获得支持,您需要订阅适当的 SUSE 产品。要查看为您提供的具体支持服务,请转到 https://www.suse.com/support/ 并选择您的产品。

支持级别的定义如下:

L1

问题判定,该技术支持级别旨在提供兼容性信息、使用支持、持续维护、信息收集,以及使用可用文档进行基本查错。

L2

问题隔离,该技术支持级别旨在分析数据、重现客户问题、隔离问题区域,并针对级别 1 不能解决的问题提供解决方法,或完成准备工作以提交级别 3 处理。

L3

问题解决,该技术支持级别旨在借助工程方法解决级别 2 支持所确定的产品缺陷。

对于签约的客户与合作伙伴,SUSE Linux Enterprise Server 将为除以下项目外的其他所有软件包提供 L3 支持:

  • 技术预览。

  • 声音、图形、字体和作品。

  • 需要额外客户合同的软件包。

  • 模块 Workstation Extension 随附的某些软件包仅享受 L2 支持。

  • 名称以 -devel 结尾的软件包(包含头文件和类似的开发人员资源)只能与其主软件包一起获得支持。

SUSE 仅支持使用原始软件包,即,未发生更改且未重新编译的软件包。

4.2 技术预览

技术预览是 SUSE 提供的旨在让用户大致体验未来创新的各种软件包、堆栈或功能。随附这些技术预览只是为了提供方便,让您有机会在自己的环境中测试新的技术。非常希望您能提供反馈。如果您测试了技术预览,请联系 SUSE 代表,将您的体验和用例告知他们。您的反馈对于我们的未来开发非常有帮助。

技术预览存在以下限制:

  • 技术预览仍处于开发阶段。因此,它们可能在功能上不完整、不稳定,或者适合生产用途。

  • 技术预览受支持。

  • 技术预览可能仅适用于特定的硬件体系结构。

  • 技术预览的细节和功能可能随时会发生变化。因此,可能无法升级到技术预览的后续版本,而只能进行全新安装。

  • SUSE 可能会发现某个预览不符合客户或市场需求,或者未遵循企业标准。技术预览可能会随时从产品中删除。SUSE 不承诺未来将提供此类技术的受支持版本。

有关产品随附的技术预览的概述,请参见 https://www.suse.com/releasenotes 上的发行说明。

1 概述

借助适用于 SUSE Linux Enterprise 15 SP6 的 Repository Mirroring Tool (RMT),企业客户可以优化 SUSE Linux Enterprise 软件更新和订阅权利的管理。该工具为 SUSE® Customer Center 建立了一个包含储存库和注册目标的代理系统。这有助于您按系统在防火墙内集中管理软件更新,同时维护公司安全策略和监管合规性。

RMT 可让您为运行基于 SUSE Linux Enterprise 的产品的所有设备置备更新。通过只下载一次这些更新并将其分发到整个企业,您可以设置更严格的防火墙策略。这样还能减少带宽的使用,因为无需为每台设备下载相同的更新。RMT 受到完全支持,可供具有 SUSE Linux Enterprise 产品有效订阅的客户下载。

Repository Mirroring Tool 提供在许多情况下都十分有用的功能,这些情况包括:

  • 需要更新 SUSE Linux Enterprise 服务器时。

  • 出于带宽或安全原因,您环境中的部分计算机无法连接到 SUSE Customer Center 来注册和检索更新时。

  • 有些 SUSE Linux Enterprise 主机受到限制,若无自定义更新管理解决方案便难以更新。

  • 需要集成额外的外部或内部储存库时。

RMT
图 1.1︰ RMT

RMT 取代了过去用于 SLE 11 和 SLE 12 的 SMT (Subscription Management Tool)。有关 RMT 与 SMT 的功能对比,请参见表 3.1 “功能对比”

2 RMT 安装和配置

SUSE Linux Enterprise Server 15 及以上版本中包含 RMT。可以在安装 SUSE Linux Enterprise Server 的过程中直接安装 RMT,或在运行中系统上安装 RMT。安装好软件包后,请使用 YaST 执行初始配置。

警告
警告:RMT 服务器与安装服务器冲突

将一台服务器配置为 RMT 服务器时,会安装并配置侦听端口为 80 的 NGINX Web 服务器。

而在将一台计算机配置为安装服务器时,会自动安装 Apache Web 服务器并将其配置为侦听端口 80。

请勿尝试在同一台服务器上启用这两项功能。一台服务器无法同时托管 Apache Web 服务器和 NGINX Web 服务器。

2.1 存储要求

下载的软件包存储在 /usr/share/rmt/public/repo 中,该文件是指向 /var/lib/rmt/public/repo/ 的符号链接。

RMT 服务器所需的存储空间取决于以下可变因素:您镜像的储存库和体系结构的数量以及启用的产品数量。一般来说,将存储空间设为所有已启用储存库总大小的 1.5 倍应当就已足够。其中,每个 SUSE Linux Enterprise 版本(包括所有扩展)大约 200 GB。

2.2 在系统安装期间安装

要在系统安装期间安装 RMT,请选择 rmt-server 软件包。选择软件时,可以在安装设置中看到软件包选项。

RMT 软件集
图 2.1︰ RMT 软件集

安装 SUSE Linux Enterprise Server 后,请立即使用 zypper patch 命令检查可用的 RMT 更新,因为 SUSE 会持续发布 RMT 的维护更新。

2.3 在现有系统上安装

要在运行中的 SUSE Linux Enterprise Server 系统上安装 RMT,请使用 zypper

> sudo zypper in rmt-server

2.3.1 在 SLES Minimal VM 上安装

SUSE Minimal VM 是一种专为特定使用场景而设计的可自定义极简操作系统,例如,它可充当以下不同形式的对象运行:

  • 容器主机

  • 虚拟机 Guest

  • 设备库系统

  • 小型服务器映像

SLES Minimal VM 映像非常适合作为 RMT 服务器。您可以从公共 SUSE Linux Enterprise Server 下载页面(网址为:https://www.suse.com/download/sles/)下载适用于 KVM、Xen、Microsoft Hyper-V、VMware 和 OpenStack 的 SLES Minimal VM 映像。有关 SLES Minimal VM 的详细信息,请访问 https://documentation.suse.com/smart/virtualization-cloud/html/minimal-vm/index.html

在 SLES Minimal VM 上安装 RMT 的过程与在现有系统上的安装过相同(请参见第 2.3 节 “在现有系统上安装”))。要在 SLES Minimal VM 上安装 RMT,请以 root 身份从 SLES Minimal VM 命令行运行以下命令:

# zypper install rmt-server yast2-rmt nginx mariadb
重要
重要:硬件要求

请注意,在 SLES Minimal VM 上安装 RMT 时至少需要 100 GB 磁盘空间,具体取决于您选择镜像的产品。另外还需要至少有两个内核的 CPU 以及 2 GB RAM。

2.4 在 Kubernetes 群集上部署 RMT

本节介绍如何在 Kubernetes 群集上部署 RMT。它使用 Helm 作为软件包管理器与 Kubernetes 群集交互。有关如何使用 Helm 的更多详细信息,请访问 https://helm.sh/docs/intro/using_helm/

2.4.1 先决条件

  • 运行 Kubernetes 群集

  • 配置为与群集交互的 helm 命令

2.4.2 应用程序组件

RMT 应用程序的每个组件都部署在其各自的容器中。RMT 由下列组件组成:

RMT 服务器

RMT 应用程序服务器的容器化版本,能够通过 Helm 值传递其配置。数据存储在分配到 Kubernetes 群集的卷上。您需要根据所要镜像的储存库数量调整存储空间大小。

MariaDB

RMT 的数据库后端。由于 RMT 会在启动时创建所需的数据库和表,因此无需执行安装后任务。如果未在 values.yaml 文件中指定口令,系统会自动生成口令。

Nginx

为 RMT 路由配置的 Web 服务器。正确配置 Web 服务器后,您便可将入站流量(用于 RMT)直接定向到此 Nginx 服务。您不需要配置 RMT 入站流量特定的路径处理方式,因为 Nginx 已配置为自行处理此项事宜。

2.4.3 values.yaml 文件

RMT 图表包含 values.yaml 文件,其中记录了所有参数并定义了它们的默认值。您可以通过提供自己的值文件来覆盖这些值,例如:

> cat << EOF > rmt-config.yaml
---
app:
  storage:
    class: local-path1
  scc:
    username: "UXXXXXXX"
    password: "PASSXXXX"
    products_enable:
      - SLES/15.3/x86_64
      - sle-module-python2/15.3/x86_64
    products_disable:
      - sle-module-legacy/15.3/x86_64
      - sle-module-cap-tools/15.3/x86_64
db:
  storage:
    class: local-path2
ingress:
  enabled: true
  hosts:
    - host: chart-example.local
      paths:
        - path: "/"
          pathType: Prefix
  tls:
    - secretName: rmt-cert
      hosts:
        - chart-example.local
EOF

1 2

local-path 存储类仅适用于 Rancher 工作负载。要使 helm chart 成功,您需要通过运行以下命令来安装 local-path 存储配置器:

> kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.26/deploy/local-path-storage.yaml

要安装 RMT,请运行以下命令:

> helm install rmtsle oci://registry.suse.com/suse/rmt-helm -f rmt-config.yaml

2.4.3.1 必需的值

:app.scc.password

类型:字符串

默认值nil

说明SUSE Customer Center 代理口令。口令字符串需要用引号括住。如果引号字符 " 是字符串的一部分,则必须使用 \ 进行转义。

:app.scc.username

类型:字符串

默认值nil

说明SUSE Customer Center 代理用户名。用户名字符串需要用引号括住。如果引号字符 " 是字符串的一部分,则必须使用 \ 进行转义。

:app.scc.products_enable

类型:列表

默认值[]

说明:要启用镜像的产品列表

:app.scc.products_disable

类型:列表

默认值[]

说明:要禁用镜像的产品列表

:app.storage.class

类型:字符串

默认值""

说明:Kubernetes storageclass

:db.storage.class

类型:字符串

默认值""

说明:Kubernetes storageclass

:ingress.enabled

类型:布尔

默认值false

说明:已启用入站流量

:ingress.hosts[0]

类型:对象

默认值{"host":"chart-example.local","paths":[{"path":"/","pathType":"Prefix"}]}

说明:可以从客户端访问 RMT 服务的 DNS 名称

:ingress.tls[0].hosts[0]

类型:字符串

默认值"chart-example.local"

说明:可用于从客户端访问 RMT 服务的 DNS 名称

:ingress.tls[0].secretName

类型:字符串

默认值"rmt-cert"

说明:TLS 入站流量证书

2.5 使用 YaST 配置 RMT

按以下过程所述使用 YaST 配置 RMT。假设在新安装的系统上执行此过程。

  1. 使用 rmt 模块启动 YaST。

    > sudo yast2 rmt

    或者,您也可以启动 YaST,然后选择网络服务 › RMT 配置

  2. 输入您的组织身份凭证。要获取您的身份凭证,请参见第 4.1 节 “镜像身份凭证”

  3. 输入新 MariaDB 用户的身份凭证和数据库名称,然后单击下一步确认。

    如果已设置 MariaDB root 用户的口令,您需要输入该口令。如果未设置 root 的口令,系统会要求您输入一个新口令。

  4. 输入 SSL 证书的常用名。该常用名应为服务器的完全限定域名 (FQDN)。输入您要用来作为其他常用名连接 RMT 服务器的所有域名和 IP 地址。

    输入所有常用名后,选择下一步

    提示
    提示:RMT 的证书位置
    • /etc/rmt/ssl/rmt-ca.crt

      此为 yast2 rmt 用来验证 RMT 服务器证书的 CA 证书分发包。仅当此文件不存在时,yast2 rmt 才会创建此文件。

    • /etc/rmt/ssl/rmt-server.crt/etc/rmt/ssl/rmt-server.key

      仅当服务器证书和私用密钥不存在时,yast2 rmt 才会生成新的服务器证书和私用密钥。要重新生成此证书,请参见第 8.1 节 “重新生成 HTTPS 证书”

  5. 如果此系统上启用了 firewalld,请选中相应复选框打开必需的端口。

    在 firewalld 中启用端口
    图 2.2︰ firewalld 中启用端口

    如果现在尚未启用 firewalld,而您打算日后启用它,可一律通过运行 yast2 rmt 模块来打开相应端口。

    提示
    提示:微调 firewalld 设置

    单击防火墙细节,可仅打开特定网络接口的相应端口。

    下一步继续。

  6. 要查看摘要,请单击下一步。单击完成关闭 YaST。YaST 即会启用并启动所有 systemd 服务和计时器。

2.6 启用 SLP 声明

RMT 包含 SLP 服务描述文件 /etc/slp.reg.d/rmt-server.reg。要启用 RMT 服务的 SLP 声明,请执行以下步骤:

  1. 如果 firewalld 正在运行,请打开相应端口并重新加载 firewalld 配置:

    > sudo firewall-cmd --permanent --add-port=427/tcp
    success
    > sudo firewall-cmd --permanent --add-port=427/udp
    success
    > sudo firewall-cmd --reload
  2. 校验 SLP 服务器是否已安装,如果未安装,则加以安装:

    > sudo zypper install openslp-server
  3. 启用并启动 SLP 服务:

    > sudo systemctl enable slpd.service
    > sudo systemctl restart slpd.service

3 从 SMT 迁移到 RMT

本章说明如何从 SLES 11 或 12 上的 SMT 迁移到 SLES 15 上的 RMT。

3.1 重要注意事项

警告
警告:请仔细阅读本节内容

请仔细阅读本节内容。其中包含有关迁移过程的重要信息。

使用新主机

我们建议您在新安装的 SLES 15 主机上安装 RMT。RMT 并不能完全取代 SMT。RMT 的工作流程与 SMT 的不同,并且仅支持注册 SUSE Linux Enterprise Server 12 及更高版本的系统。

储存库元数据和设置

不会从 SMT 导出临时储存库的设置。将导出已标记为要镜像的储存库。

自定义储存库

只能导出标记为要镜像的储存库。

已失效订阅

RMT 上将不会提供组织订阅中已不再可用的产品。

客户端信息

将导出系统及其激活的产品。将不会从 SMT 导出 SMT 客户端作业和补丁状态。

表 3.1︰ 功能对比

功能

SMT

RMT

在 SLES 11 上可用

在 SLES 12 上可用

在 SLES 15 上可用

将产品与 SUSE Customer Center 同步

从储存库镜像 RPM

选择性镜像(指定要镜像的产品)

通过 HTTP 提供 RPM

SLE 15 系统注册

SLE 12 系统注册

SLE 11 系统注册

支持 Red Hat 6 及更低版本

1

支持 Red Hat 7 及更高版本

1

1

支持从 SLE 12 迁移到 SLE 15

2

支持从 SLE 15 SPx 迁移到 15 SPx+1

2

临时储存库

3

离线镜像

NTLM 代理支持

自定义储存库

YaST 安装向导

YaST 管理向导

客户端管理

文件去重

将数据从 SMT 转移到 RMT

将注册数据传输到 SUSE Customer Center

报告

Web 服务器的自定义 TLS 证书

清理储存库中不再使用的数据

Bash 补全

openSUSE Leap 15 上提供

4

简易开发设置 + contribution guide

100% 测试 coverage

Plugin functionality

Web 服务器

Apache 2

Nginx

平台

Perl

Ruby

清理不再使用的储存库中的数据

Bash 补全

在 Kubernetes 上部署的选项

5

  1. 通过 SUSE Liberty Linux 提供支持,有关更多细节,请访问 https://www.suse.com/products/suse-liberty-linux/

  2. SMT 仅部分支持将系统迁移到 SLE 15。SLE 15 由多个模块和扩展组成。有些模块只是提供补充性的功能,因此不是必需的。RMT 完全支持迁移到 SLE 15 以及在 SLE 15 内部迁移,因此它只会添加最少量的必需模块。SMT 不完全支持这种迁移,它将在系统上启用所有可用模块。

  3. 功能由 SUSE Manager 提供。

  4. 仅通过 self-support 提供。

  5. 有关详细信息,请参见 第 2.4 节 “在 Kubernetes 群集上部署 RMT”

3.2 导出 SMT 数据

过程 3.1︰ 导出 SMT 数据
  1. 通过运行 zypper up 更新已安装的 SMT 服务器。

  2. 要将 SSL 证书连同其余数据一起导出,请运行 smt-data-export。请记得将证书存放在安全位置。

    如果您不想从 SMT 导出 SSL 证书,请运行 smt-data-export --no-ssl-export

  3. 导出的配置现已保存到 smt-data-export.TIMESTAMP.tar.gz。将文件复制到新 RMT 服务器可以访问的位置。

3.3 将 SMT 数据导入到 RMT

  1. 运行 zypper up 以确保所安装的 RMT 为最新版本。

  2. 将导出的 .tar.gz 文件复制到某个空目录,并将其解压缩。然后进入新目录:

    > mkdir EMPTY_DIR
    > cd EMPTY_DIR
    > tar xf /PATH/TO/smt-data-export.TIMESTAMP.tar.gz
    > cd smt-data-export
  3. 如果您之前选择从 SMT 导出 SSL 证书,请将 CA 私用密钥和证书复制到 /etc/rmt/ssl/ 中:

    > sudo cp ssl/cacert.key /etc/rmt/ssl/rmt-ca.key
    > sudo cp ssl/cacert.pem /etc/rmt/ssl/rmt-ca.crt
  4. 第 2.5 节 “使用 YaST 配置 RMT”中所述运行 YaST RMT 配置模块。如果您已导入 SMT CA 证书,请将 SMT 服务器的域添加到新 SSL 证书的常用名。

  5. 运行 RMT 同步功能以从 SUSE Customer Center 获取产品和储存库数据。

    > sudo rmt-cli sync
  6. 导入来自 SMT 服务器的数据。

    > sudo rmt-data-import -d ./
  7. 可选:如果 RMT 服务器的 URL 发生变化,请在 /etc/SUSEConnect 中更改客户端的 URL 参数,以指向新的 RMT 服务器。或者更改 DNS 记录以重新分配 RMT 服务器的主机名。

  8. 可选:将 SMT 中的镜像储存库数据转移到 RMT,并调整所复制数据的所有权。

    > sudo cp -r /var/www/htdocs/repo/* /usr/share/rmt/public/repo/
    > sudo chown -R _rmt:nginx /usr/share/rmt/public/repo
    提示
    提示

    RMT 服务器上自定义储存库数据的存储路径与 SMT 上的存储路径不同。在 RMT 中,源服务器 URL 的目录结构将复制到顶级目录结构中

    http://download.opensuse.org/debug/distribution/leap/15.6/repo/oss

    此 URL 在 RMT 服务器上的路径对应于

    /usr/share/rmt/public/repo/debug/distribution/leap/15.6/repo/oss
  9. SMT 服务器上的自定义储存库默认已禁用。如果您要将其镜像到 RMT,请在镜像之前将其启用。

    1. 通过运行以下命令检查有无自定义储存库:

      > sudo rmt-cli repos custom list

      该命令会显示所有自定义储存库的表。第一列包含每个储存库的 IDMirror? 列显示 false

    2. 通过运行以下命令启用您要镜像的每个自定义储存库:

      > sudo rmt-cli repos custom enable ID
  10. 通过启动镜像过程更新储存库中的软件包:

    > sudo rmt-cli mirror

4 在 RMT 服务器上镜像储存库

您可以在 RMT 服务器上镜像安装和更新储存库。这样便无需在每台计算机上下载更新,从而节省时间和容量。

在使用默认配置的情况下,RMT 每晚会自动镜像已启用的产品储存库一次。

默认情况下,镜像的储存库存储在 /var/lib/rmt/public/repo 中。

注意
注意:更改镜像储存库的默认位置

要更改镜像储存库的默认位置,请将 /usr/share/rmt/public/repo 符号链接指向所需的目录。这可以使用 命令来执行。

ln -sfn TARGET /usr/share/rmt/public/repo

(请将 TARGET 替换为所需的目标)。确保该目标具有 rmt 用户和 nginx 组的读写权限。

当启用的储存库完全镜像后,您可以通过在客户端计算机上运行 SUSEConnect --url https://RMT_HOSTNAME 来向 RMT 注册您的客户端系统。成功注册后,客户端计算机上的 Zypper 将使用来自 RMT 服务器的储存库。

重要
重要:SUSE Linux Enterprise Server 11 客户端

RMT 不支持使用 SUSE Linux Enterprise Server 11 及以下版本的客户端。

4.1 镜像身份凭证

您需要有组织身份凭证才能创建 SUSE Linux Enterprise 储存库的本地镜像。您可以从 SUSE Customer Center 获取身份凭证。

要从 SUSE Customer Center 获取身份凭证,请执行以下步骤:

  1. 访问 SUSE Customer Center (https://scc.suse.com) 并登录。

  2. 如果您是多个组织的成员,请从左侧边栏中选择要使用的组织。

  3. 从顶部菜单中选择代理

  4. 右上角即会显示身份凭证。

  5. 要查看该口令,请单击 Eye icon 图标。

应使用 YaST RMT 服务器配置模块对获取的身份凭证进行设置,或将其直接添加到 /etc/rmt.conf 文件中。有关 /etc/rmt.conf 文件的详细信息,请参见第 6.3.1 节 “/etc/rmt.conf”

4.2 同步储存库元数据

需要使用从 SUSE Customer Center 下载的信息定期更新本地 RMT 数据库。其中包括有关可用产品和储存库的信息。

同步通过 systemd 计时器 rmt-server-sync.timer 激活。要查看其状态(例如下次运行时间),请使用 systemctl status

> sudo systemctl status rmt-server-sync.timer
● rmt-server-sync.timer - RMT Sync timer
   Loaded: loaded (/usr/lib/systemd/system/rmt-server-sync.timer; enabled; vendor preset: disabled)
   Active: active (waiting) since Fri 2018-06-22 04:22:34 EDT; 2h 34min ago
  Trigger: Sat 2018-06-23 03:53:00 EDT; 20h left

Jun 22 04:22:34 d31 systemd[1]: Started RMT Sync timer.

如果计时器未启用或未启动,请手动将其启动。

> sudo systemctl enable --now rmt-server-sync.timer

要手动更新 RMT 数据库,请使用 rmt-cli sync 命令。有关详细信息,请参见第 6.1.2 节 “sync​”

4.3 镜像软件包

RMT 服务器上会镜像所启用的储存库的软件包。系统会每天定期下载一次软件包。不过,您也可以随时手动触发下载。

定期镜像通过 systemd 计时器 rmt-server-mirror.timer 激活。要显示其状态(例如下次运行时间),请使用 systemctl status

# systemctl status rmt-server-mirror.timer
● rmt-server-mirror.timer - RMT Mirror timer
   Loaded: loaded (/usr/lib/systemd/system/rmt-server-mirror.timer; enabled; vendor preset: disabled)
   Active: active (waiting) since Fri 2018-06-22 04:22:34 EDT; 2h 34min ago
  Trigger: Sat 2018-06-23 02:17:57 EDT; 19h left

Jun 22 04:22:34 d31 systemd[1]: Started RMT Mirror timer.

如果计时器未启用或未启动,请手动将其启动。

> sudo systemctl enable --now rmt-server-mirror.timer

要手动更新镜像的软件包,请使用 rmt-cli mirror 命令。有关详细信息,请参见第 6.1.6 节 “mirror​”

4.4 启用和禁用储存库镜像

可以单独或者按产品启用或禁用储存库镜像。一次可以指定一个或多个储存库或产品。如果储存库处于启用状态,系统会在镜像过程中下载并更新其软件包。要启用或禁用储存库镜像,您需要提供产品字符串或 ID 或者储存库名称或 ID。您之所以想要启用或禁用某个产品,是因为这样会自动启用或禁用与该产品关联的所有储存库。

4.4.1 使用产品

要启用或禁用产品的所有储存库,请使用 rmt-cli products enable IDrmt-cli products disable ID 命令。要检索已启用产品的 ID,请使用 rmt-cli products list 命令。要获取仍然可用的已禁用产品的 ID,请运行 rmt-cli products list --all 命令。

示例:

> sudo rmt-cli products list --all
+------+----------------------+---------+--------+--------------+---------------
| ID   | Product              | Version | Arch   | Mirror?      | Last mirrored
+------+----------------------+---------+--------+--------------+---------------
[...]
| 1743 | SUSE Package Hub     | 15      | x86_64 | Don't Mirror |
|      | PackageHub/15/x86_64 |         |        |              |
[...]

> sudo rmt-cli products enable 1743
Found product by target 1743: SUSE Package Hub 15 x86_64.
Enabling SUSE Package Hub 15 x86_64:
  SUSE Package Hub 15 x86_64:
    Enabled repository SLE-Module-Packagehub-Subpackages15-Pool.
    Enabled repository SLE-Module-Packagehub-Subpackages15-Updates.
    Enabled repository SUSE-PackageHub-15-Pool.
    Enabled repository SUSE-PackageHub-15-Standard-Pool..

> sudo rmt-cli products disable 1743
Found product by target 1743: SUSE Package Hub 15 x86_64.
Disabling SUSE Package Hub 15 x86_64:
  SUSE Package Hub 15 x86_64:
    Disabled repository SLE-Module-Packagehub-Subpackages15-Pool.
    Disabled repository SLE-Module-Packagehub-Subpackages15-Updates.
    Disabled repository SUSE-PackageHub-15-Pool.
    Disabled repository SUSE-PackageHub-15-Standard-Pool.

 To clean up downloaded files, run 'rmt-cli repos clean'
提示
提示:一次启用和禁用多个产品

要一次启用或禁用多个产品,请指定产品 ID 或字符串的空格分隔列表,例如:

> sudo rmt-cli products enable 1743 SLES/15/x86_64 SLES/12
Found product by target 1743: SUSE Package Hub 15 x86_64.
Enabling SUSE Package Hub 15 x86_64:
  SUSE Package Hub 15 x86_64:
    Enabled repository SLE-Module-Packagehub-Subpackages15-Pool.
    Enabled repository SLE-Module-Packagehub-Subpackages15-Updates.
    Enabled repository SUSE-PackageHub-15-Pool.
    Enabled repository SUSE-PackageHub-15-Standard-Pool.
Found product by target SLES/15/x86_64: SUSE Linux Enterprise Server 15 x86_64.
Enabling SUSE Linux Enterprise Server 15 x86_64:
  SUSE Linux Enterprise Server 15 x86_64:
    Enabled repository SLE-Product-SLES15-Pool.
    Enabled repository SLE-Product-SLES15-Updates.
    Enabled repository SLE15-Installer-Updates.
  Basesystem Module 15 x86_64:
    Enabled repository SLE-Module-Basesystem15-Pool.
    Enabled repository SLE-Module-Basesystem15-Updates.
  Server Applications Module 15 x86_64:
    Enabled repository SLE-Module-Server-Applications15-Pool.
    Enabled repository SLE-Module-Server-Applications15-Updates.
Found product by target SLES/12: SUSE Linux Enterprise Server 12 x86_64.
Enabling SUSE Linux Enterprise Server 12 x86_64:
  SUSE Linux Enterprise Server 12 x86_64:
    Enabled repository SLES12-Pool.
    Enabled repository SLES12-Updates.

4.4.2 使用储存库

要启用或禁用特定储存库的镜像,请使用 rmt-cli repos enable IDrmt-cli repos disable ID 命令。要检索已启用储存库的 ID,请使用 rmt-cli repos list 命令。如果您需要获取已禁用但可访问的储存库的 ID,请执行 rmt-cli repos list --all 命令。

示例:

> sudo rmt-cli repos list --all
+--------+-------------------------+-------------------------------------------+
| ID     | Name                    | Description                               |
+--------+-------------------------+-------------------------------------------+
[...]
| 3061   | SUSE-PackageHub-15-Pool | SUSE-PackageHub-15-Pool for sle-15-x86_64 |
[...]
+--------+-------------------------+-------------------------------------------+

> sudo rmt-cli repos enable 3061
Repository by ID 3061 successfully enabled.

> sudo rmt-cli repos disable 3061
Repository by ID 3061 successfully disabled.

To clean up downloaded files, please run 'rmt-cli repos clean'
提示
提示:一次启用和禁用多个储存库

要一次启用或禁用多个储存库,请指定储存库 ID 的空格分隔列表,例如:

> sudo rmt-cli repos enable 2526 3263
Repository by ID 2526 successfully enabled.
Repository by ID 3263 successfully enabled.

> sudo rmt-cli repos disable 2526 3263
Repository by ID 2526 successfully disabled.
Repository by ID 3263 successfully disabled.

To clean up downloaded files, run 'rmt-cli repos clean'

4.5 删除镜像数据

第 4.4 节 “启用和禁用储存库镜像”中所述禁用储存库或产品镜像后,已镜像的数据将保留在本地硬盘上。其中包括镜像的 RPM 软件包。

要删除已禁用储存库的数据,请使用 rmt-cli repos clean 命令。使用此命令时,RMT 将校验是否仅镜像了已启用的储存库,并提供删除无效数据的途径。

在去除任何数据之前,该命令将列出受影响的储存库,并要求用户输入 yes 以继续。

> sudo rmt-cli repos clean
RMT found locally mirrored files from the following repositories which are not marked to be mirrored:

SLE-Product-SLES15-Updates for sle-15-x86_64
SLE-Product-SLES15-Pool for sle-15-x86_64
SLE15-Installer-Updates for sle-15-x86_64

Would you like to continue and remove the locally mirrored files of these repositories?
Only 'yes' will be accepted.

Enter a value:  yes

Deleted locally mirrored files from repository 'SLE-Product-SLES15-Updates for sle-15-x86_64'.
Deleted locally mirrored files from repository 'SLE-Product-SLES15-Pool for sle-15-x86_64'.
Deleted locally mirrored files from repository 'SLE15-Installer-Updates for sle-15-x86_64'.

Clean finished. An estimated 157 MB were removed.
提示
提示:手动去除储存库数据

要删除已禁用的储存库数据,请手动去除其对应的目录:

> sudo rm -r /usr/share/rmt/public/repo/SUSE/Products/PRODUCT/VERSION/ARCHITECTURE/

4.6 添加自定义储存库

您可以使用 RMT 服务器镜像自定义储存库。这些储存库不是 SUSE Customer Center 提供的。它们可能是第三方供应商(例如 Open Build Service)提供的,也可能是使用 createrepo 创建的。

自定义储存库可以作为独立储存库使用,也可以关联到产品。这样,您便可以在已注册到 RMT 服务器的客户端上使用一个命令连接多个储存库。

下面的示例过程演示了镜像第三方储存库的过程。

  1. 将远程储存库添加到 RMT 服务器。将 URL 替换为储存库的 URL。将 NAME 替换为您为储存库所选择的名称。

    # rmt-cli repos custom add URL NAME
  2. 列出所有自定义储存库以获取新储存库的 ID。

    # rmt-cli repos custom list
  3. (可选)将新的自定义储存库关联到某个产品。例如,如果所有桌面客户端都需要这个新的自定义储存库,则可将其关联到 SUSE Linux Enterprise Desktop 产品。

    # rmt-cli repos custom attach REPOSITORY_ID PRODUCT_ID

    REPOSITORY_ID 替换为新自定义储存库的 ID。将 PRODUCT_ID 替换为要将储存库关联到的产品的 ID。如果您需要检索 PRODUCT_ID,请使用命令 rmt-cli products list --all

    重要
    重要

    当自定义储存库与某个产品相关联时,在该产品中注册的客户端将会发现它们处于禁用状态。要启用该储存库,请使用 zypper lr 命令确定其 ID,然后运行:

    # zypper mr -e REPO_ID
  4. 启用新自定义储存库的镜像。

    # rmt-cli repos custom enable REPOSITORY_ID

要获取所有可用自定义储存库命令的列表,请参见第 6.1.4 节 “repos​”

4.7 导出和导入储存库

RMT 具有可导入和导出有关可用储存库和镜像软件包的数据的内置功能。例如,可以通过在本地复制已镜像的 RPM 软件包来加快新 RMT 服务器的设置。

另一个用例是脱机模式。通过脱机模式,可以将数据传输到断开连接的 RMT 服务器,从而实现为气隙网络中的计算机提供更新等目的。

下面的过程说明了如何使用 USB 驱动器在两台 RMT 服务器之间传输数据及镜像的 RPM。服务器 sun 与 SUSE Customer Center 相连,而服务器 sirius 则位于气隙网络中。

  1. 登录到服务器 sun

    root@sun # rmt-cli sync
    root@sun # rmt-cli mirror
  2. 连接一个 USB 驱动器(假设为 /dev/sdb),并将其挂载到所需位置(例如 /mnt/external)。

    root@sun # mount /dev/sdb1 /mnt/external
    1. 导出有关可用储存库和产品的数据。

      root@sun # rmt-cli export data /mnt/external/
    2. 导出已启用储存库的列表。在下一步导出储存库时需要使用该导出文件。

      root@sun # rmt-cli export settings /mnt/external/
    3. 导出镜像的 RPM 软件包。此过程可能需要较长时间,具体视镜像储存库的大小而定。

      root@sun # rmt-cli export repos /mnt/external/
  3. sun 卸载并拔出磁盘,然后转到 sirius

    root@sun # umount /mnt/external
  4. 通过运行 yast2 rmtsirius 上设置 RMT(如果尚未执行该操作)。如果进行的是脱机 RMT 设置,请在组织身份凭证屏幕上选择跳过

  5. 将 USB 驱动器连接到 sirius,并将其挂载到 /mnt/external 中。

    root@sirius # mount /dev/sdb1 /mnt/external
    1. 导入有关可用储存库和产品的元数据。

      root@sirius # rmt-cli import data /mnt/external/
    2. 导入镜像的 RPM 软件包。此过程可能需要较长时间,具体视镜像储存库的大小而定。

      root@sirius # rmt-cli import repos /mnt/external/
  6. sirius 上根据需要启用储存库。有关详细信息,请参见第 4.4 节 “启用和禁用储存库镜像”

注意
注意:从气隙服务器导出启用的设置

如果您的气隙服务器 (sirius) 具有许多启用的储存库,或者启用的储存库经常更改,我们建议从此服务器中导出储存库设置。

然后可将导出的设置导入到与 SUSE Customer Center 相连的服务器 (sun) 中。这样便能确保 sun 下载 sirius 所需的所有数据。

5 将客户端配置为使用 RMT

可以将运行 SUSE Linux Enterprise 12 或以上版本的所有计算机都配置为注册到 RMT 并从中下载软件更新,而不是直接与 SUSE Customer Center 通讯。

提示
提示:通过 HTTP 在 RMT 服务器中注册

我们建议您通过安全的 HTTPS 协议向 RMT 服务器注册(本文档中的所有示例均使用该协议)。不过,您也可以通过不安全的 HTTP 协议向 RMT 服务器注册。请仅在使用该协议对您的设置有益并且您处于安全性不是很重要的可信环境中时,才使用此方法。

要将客户端配置为使用 RMT 服务器,请使用以下其中一种方法:

提示
提示:CA 证书

如果您需要 RMT 服务器的 CA 证书,可以在 /etc/rmt/ssl/rmt-ca.crthttps://RMT_SERVER/rmt.crt 中找到。

5.1 使用引导参数配置客户端

通过在计算机引导期间提供 regurl 参数,可将任何客户端配置为使用 RMT。

需要以 regurl=RMT_SERVER_URL 形式输入该参数。URL 需要采用 https://FQDN 格式,其中 FQDN 为 RMT 服务器的完全限定主机名,必须与 RMT 服务器上使用的服务器证书的 FQDN 相同。示例:

regurl=https://rmt.example.com
警告
警告:当心键入错误

确保您输入的值是正确的。如果尚未正确指定 regurl,更新源的注册将失败。

注意
注意:更改 RMT 服务器证书

如果 RMT 服务器从不可信 CA 获取新证书,客户端需要检索新 CA 证书文件。YaST 会显示用于导入新证书的对话框。如果您确认导入新证书,旧证书会替换为新证书。

5.2 使用 AutoYaST 配置文件配置客户端

您可以通过 AutoYaST 配置文件将客户端配置为注册到 RMT 服务器。要了解如何创建 AutoYaST 配置文件和准备自动安装,请参见《AutoYaST 指南》。本节仅介绍针对 RMT 的配置。

要使用 AutoYaST 配置特定于 RMT 的数据,请执行适用于相关 RMT 客户端版本的步骤。

  1. root 身份启动 YaST,然后选择杂项 › 自动安装启动图形 AutoYaST 前端。

    如果要从命令行启动图形 AutoYaST 前端,可以使用 yast2 autoyast 命令来完成。

  2. 选择文件 › 打开以打开现有的配置文件。使用工具 › 创建参考配置文件基于当前系统配置创建一个配置文件,或者使用空的配置文件。

  3. 选择软件 › 产品注册。将显示当前配置的概述。

  4. 单击编辑

  5. 选中注册产品,在使用特定服务器 URL 而非默认值中设置 RMT 服务器的 URL,您还可以设置可选 SSL 服务器证书 URL。服务器 URL 的可能值与内核参数 regurl 的可能值相同。对于 SSL 证书位置,您可以使用采用 HTTP 或 HTTPS 的 URL。

  6. 针对要部署的系统执行所有其他所需配置,然后单击完成返回主屏幕。

  7. 选择文件 › 另存为,然后输入配置文件的名称,例如 autoinst.xml

5.3 使用 rmt-client-setup 配置客户端

/usr/share/rmt/public/tools/rmt-client-setup 脚本在软件包 rmt-server 中提供。此脚本可用于将客户端计算机配置为使用 RMT 服务器,还可用于将现有客户端重新配置为使用其他 RMT 服务器。

要通过 rmt-client-setup 将客户端计算机配置为使用 RMT,请执行以下步骤:

  1. 从 RMT 服务器下载 rmt-client-setup

    # curl http://RMT_SERVER/tools/rmt-client-setup --output rmt-client-setup
  2. 使用 RMT 服务器的 URL 作为参数运行脚本。

    # sh rmt-client-setup https://RMT_SERVER/

    执行此脚本会将 RMT CA 的证书导入到可信证书存储区中。

    或者,您也可以指定服务器证书的正确指纹或路径。有关详细信息,请参见sh rmt-client-setup --help

  3. 该脚本下载服务器的 CA 证书。按 Y 接受该证书。现在,该工具即会在客户端上执行所有必要的修改。

  4. 使用 SUSEConnect 添加更多产品。有关细节,请运行 SUSEConnect --help

5.4 使用 YaST 配置客户端

要将客户端配置为注册到 RMT 服务器,请使用 YaST 产品注册模块 yast2 registration

在客户端上无需提供身份凭证,您可以将相关字段留空。单击本地注册服务器并输入其 URL。然后单击下一步,直到退出模块。

5.5 将客户端配置为使用自定义的独立储存库

如果您在 RMT 服务器上创建了自定义的独立储存库,使用 SUSEConnect 将不会在客户端计算机上注册该储存库,因为它没有父产品。

要手动添加该储存库,请执行以下步骤:

  1. 将您的网页浏览器指向以下 RMT 服务器 URL:

    https://RMT_SERVER_HOSTNAME/repo/
  2. 通过目录结构将浏览器导航到您的自定义储存库的 repodata/ 子目录。

  3. 在客户端计算机上添加发现的储存库 URL:

    > sudo zypper ar CUSTOM_REPO_URL CUSTOM_REPO_NAME

5.6 列出可访问的储存库

要列出可用的模块和储存库,请使用 SUSEConnect --list-extensions。或者,您也可以通过访问 https://RMT_SERVER/repo/ 及其子目录来浏览 RMT 服务器的目录列表。

5.7 联机迁移 SUSE Linux Enterprise 客户端

您可以将注册到 RMT 中的 SUSE Linux Enterprise 客户端联机迁移到同一主要版本的最新服务包,迁移方法与迁移注册到 SUSE Customer Center 的客户端相同。开始迁移之前,请确保 RMT 中具有并已镜像所需产品。

有关联机迁移的详细信息,请参见Book “升级指南”, Chapter 2 “升级路径和方法”

6 RMT 工具和配置文件

本章介绍 RMT 附带的最重要的脚本、配置文件和证书。

rmt-cli 命令及其子命令用于管理储存库镜像、客户端注册和报告。systemd 用于启动、停止、重启动 RMT 服务和检查其状态。

RMT 的基本配置存储在 /etc/rmt.conf 中。

6.1 RMT 命令行界面 (rmt-cli)

6.1.1 概述

用于管理 RMT 的关键命令是 rmt-cli (/usr/bin/rmt-cli)。rmt-cli 命令应与本节中所述的子命令一起使用。如果单独使用 rmt-cli 命令,它会输出所有可用子命令的列表。要获取单个子命令的帮助,请使用 man rmt-clirmt-cli help [subcommand]

可用子命令如下:

rmt-cli sync

将数据库与 SUSE Customer Center 同步。

rmt-cli products

列出和修改产品。

rmt-cli repos

列出和修改储存库。

rmt-cli mirror

镜像储存库。

rmt-cli systems

列出和修改系统。

rmt-cli import

用于脱机模式的导入命令。

rmt-cli export

用于脱机模式的导出命令。

rmt-cli version

显示 RMT 版本。

以下各节对每个子命令进行了详细说明。

6.1.2 sync

此命令可立即触发与 SUSE Customer Center 的同步。该命令没有其他选项。systemd 计时器 rmt-server-sync.timer 每晚也会触发同步。

同步期间不会将数据上载到 SUSE Customer Center。例如,此命令可更新本地产品定义和储存库数据。

6.1.3 products

列出和修改产品。

rmt-cli products list [--all] [--csv]

列出已启用以便镜像的产品。使用 --all 标志可列出所有可用产品。使用 --csv 标志可以 CSV 格式输出列表。ls 可用作 list 的简写形式。

rmt-cli products enable [id | string] [--all-modules]

按产品 ID 或字符串启用产品的强制储存库。--all-modules 标志可启用某个产品的所有模块,而不仅仅是建议的模块。

rmt-cli products disable [id | string]

按产品 ID 或字符串禁用产品的所有储存库。

6.1.4 repos

rmt-cli repos list [--all] [--csv]

列出已启用以便镜像的储存库。使用 --all 标志可列出所有可用储存库。使用 --csv 标志可以 CSV 格式输出列表。ls 可用作 list 的简写形式。

rmt-cli repos enable [id]

按储存库 ID 启用单个储存库的镜像。

rmt-cli repos disable [id]

按储存库 ID 禁用单个储存库的镜像。

rmt-cli repos clean

去除未标记为待镜像的储存库的本地镜像文件。

6.1.5 repos custom

rmt-cli repos custom list [--csv]

列出所有自定义储存库。使用 --csv 标志可以 CSV 格式输出列表。ls 可用作 list 的简写形式。

rmt-cli repos custom add [url] [name] [--id]

添加新的自定义储存库。使用 --id 标志可指定自定义的字母数字 ID。

rmt-cli repos custom enable [id]

启用某个自定义储存库的镜像。

rmt-cli repos custom disable [id]

禁用某个自定义储存库的镜像

rmt-cli repos custom remove [id]

去除某个自定义储存库。

rmt-cli repos custom products [id]

列出关联到给定 ID 的自定义储存库的产品。

rmt-cli repos custom attach [id] [product id]

将某个现有自定义储存库关联到某个产品。

rmt-cli repos custom detach [id] [product id]

将某个现有自定义储存库与某个产品解除关联。

6.1.6 mirror

rmt-cli mirror

手动启动镜像过程。

rmt-cli mirror all

镜像所有启用的储存库。

rmt-cli mirror repository [IDs]

按 ID 列表镜像启用的储存库。

rmt-cli mirror product [IDs]

按 ID 列表镜像产品的已启用储存库。

6.1.7 systems

rmt-cli systems list

此命令会列出已注册的系统。

rmt-cli systems scc-sync

此命令会将已注册系统的数据转发到 SCC。

rmt-cli systems remove [TARGET]

此命令用于从 RMT 中去除 rmt-cli systems list 命令输出中的 Login 列所标识的系统。

rmt-cli systems purge

此命令用于列出非活动系统,并具有用于删除非活动系统的选项。它的选项如下:

  • --before DATE — 列出自 DATE 至今一直处于非活动状态的系统。默认值为最近 3 个月。

  • --no-confirmation — 允许管理员直接删除匹配的系统,而无需确认。

# rmt-cli systems purge --before 2021-06-16
+------------+----------+---------------------+---------------------+----------+
| Login      | Hostname | Registration time   | Last seen           | Products |
+------------+----------+---------------------+---------------------+----------+
| SCC_c5b0.. | 6e485e48b| 2021-06-11 13:38:07 | 2021-06-11 13:52:01 | SLES/15..|
| SCC_5fcf.. | node52   | 2021-06-15 13:29:24 | 2021-06-15 13:31:25 | SLES/15..|
+------------+----------+---------------------+---------------------+----------+
Do you want to delete these systems? (y/n) y
Purged systems that have not contacted this RMT since 2021-06-16.

6.1.8 import

离线模式下需要使用此命令。有关详细信息,请参见第 4.7 节 “导出和导入储存库”

rmt-cli import data [path]

在离线 RMT 上运行此命令可从给定路径读取 JSON 文件,并在本地数据库中填充数据。

rmt-cli import repos [path]

在离线 RMT 上运行此命令可导入 RPM 软件包。

6.1.9 export

离线模式下需要使用此命令。有关详细信息,请参见第 4.7 节 “导出和导入储存库”

rmt-cli export data [path]

在联机 RMT 上运行此命令可从 SUSE Customer Center 获取最新数据,并在指定路径将结果另存为 JSON 文件。

rmt-cli export settings [path]

在脱机 RMT 上运行此命令可在给定路径将已启用储存库的设置另存为 repos.json

rmt-cli export repos [path]

在联机 RMT 上定期运行此命令可在给定路径镜像 repos.json 中指定的一组储存库。镜像的储存库文件会存储在同一路径的子目录中。

6.1.10 clean packages

rmt-cli clean packages 命令会删除本地镜像的悬空文件及其数据库条目。如果文件满足以下所有特征,则会被视为悬空文件:

  • 该文件存在于包含主文件和元数据 repomd.xml 文件的储存库目录中。

  • 元数据文件中不再引用该文件。

  • 该文件至少已存在两天。

您可以将以下选项传递给 rmt-cli clean packages 命令:

--dry-run

生成所有受影响文件的报告,而不实际清理它们或其数据库条目。

--verbose

列显有关每个已清理文件的详细信息。

--non-interactive

在继续进行清理过程前跳过确认。

6.1.11 version

显示 rmt-cli 的版本。

6.2 RMT systemd 命令

您可以使用标准 systemd 命令管理 RMT 相关服务。RMT 服务器包括以下服务和计时器:

rmt-server.target

启动所有必需的 RMT 组件的 systemd 目标。

rmt-server.service

RMT 服务器。

rmt-server-migration.service

此服务可将数据库迁移到最新架构(如果需要)。无需手动与此服务交互。

rmt-server-sync.timer

此计时器负责定期同步来自 SUSE Customer Center 的所有储存库产品数据。

rmt-server-mirror.timer

此计时器负责定期同步来自 SUSE Customer Center 的所有 RPM。

使用 systemctl 可管理 RMT 服务和计时器。

6.3 RMT 配置文件

主 RMT 配置文件为 /etc/rmt.conf。您可以使用 YaST RMT 服务器模块设置大部分选项。

6.3.1 /etc/rmt.conf

系统仅支持使用 yast2 rmt 执行初始配置,如第 2.5 节 “使用 YaST 配置 RMT”中所述。只有代理配置需要手动输入。此处介绍了其他配置参数供您参考。

可以在 /etc/rmt.conf 文件中找到所有可用的配置选项。

6.3.1.1 镜像设置

mirroring 部分可让您调整镜像行为。

mirror_src

决定是否镜像源 RPM 软件包(体系结构为 src)。

dedup_method

如果设为 hardlink,将在镜像期间创建硬链接。如果文件系统不支持硬链接,则可将其设为 copy。可能的值:hardlinkcopy

6.3.1.2 HTTP 客户端设置

http_client 部分定义 RMT 的全局 HTTP 连接设置。

verbose

可让更多调试输出记录到 systemd 日志。

proxy

代理服务器 URL(包含协议和端口号),例如 http://proxy_url:8080

noproxy

应经由代理连接的域列表(以逗号分隔)。例如,: localhost.mylocaldomain.

proxy_auth

此设置决定了代理身份验证机制。可能的值为:nonebasicdigestgssnegotiatentlmdigest_ientlm_wb

proxy_user

代理服务器用户名。

proxy_password

代理服务器口令。

low_speed_limit

达到该速度下限时,下载便应中止(以字节/秒为单位)。

low_speed_time

当下载速度低于 low_speed_limit 时,持续该时间后中止下载。

6.3.1.3 用于访问 SUSE 储存库的设置

scc 部分包含您用于连接 SUSE Customer Center 的镜像身份凭证。要获得您的镜像身份凭证,请参见第 4.1 节 “镜像身份凭证”

该部分的有效配置键包括:

username

镜像身份凭证的用户名。

password

镜像身份凭证的口令。

6.3.1.4 Web 服务器设置

使用 web_server 部分可以调整 RMT 服务器的性能。

min_threads

指定 RMT 服务器工作器产生的最小线程数。

可接受的值:大于或等于 1 的整数。

max_threads

指定 RMT 服务器工作器产生的最大线程数。

可接受的值:大于或等于 1 的整数。

workers

指定 RMT 的 Web 工作器数量。

可接受的值:大于或等于 1 的整数。

6.3.2 SSL 证书和 HTTPS

默认情况下,仅允许通过 HTTPS 访问 SUSEConnect 所使用的 API 端点。nginx 配置为使用来自以下位置的 SSL 证书和私用密钥:

  • 证书:/etc/rmt/ssl/rmt-server.crt

  • 私用密钥:/etc/rmt/ssl/rmt-server.key

YaST RMT 模块会生成一个自定义证书颁发机构,用于签署 HTTPS 证书。这意味着如果要注册,此证书颁发机构必须受到客户端计算机的信任:

  • 从媒体安装期间注册或使用 YaST 注册模块进行注册时,系统会显示一条消息,提示您信任服务器证书。

  • 通过命令行注册客户端系统时,请使用 rmt-client-setup 脚本。有关详细信息,请参见第 5.3 节 “使用 rmt-client-setup 配置客户端”

7 备份 RMT 服务器

本章说明如何创建 RMT 服务器的备份,以及如何基于备份恢复该服务器。

7.1 创建备份

此过程详细说明如何创建 RMT 服务器的完整备份。假设您有一个挂载到 /mnt/backup 中用作备份目标的外部磁盘或网络共享。

  1. 切换到备份目录。

    # cd /mnt/backup
  2. 创建包含 SQL 数据库转储的文件。您需要提供安装期间为 rmt 数据库用户设置的口令。

    # mysqldump -u rmt -p rmt > rmt_backup.sql
  3. (可选)创建镜像数据的副本。

    # mkdir repos
    # rmt-cli export repos ./repos/

7.2 恢复备份

此过程详细说明如何通过第 7.1 节 “创建备份”中创建的备份恢复 RMT 服务器。假设备份挂载到 /mnt/backup 中,并且您要在新安装的 SLES 上恢复服务器。

  1. 第 2 章 “RMT 安装和配置中所述安装并配置 RMT 服务器。

  2. 转到备份目录。

    # cd /mnt/backup/
  3. 使用 mysql 去除新创建的数据库并导入数据。

    # mysql -u rmt -p
    Enter password:
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    [...]
    
    MariaDB [(none)]> DROP DATABASE rmt;
    Query OK, 14 rows affected (0.84 sec)
    
    MariaDB [(none)]> CREATE DATABASE rmt;
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> use rmt;
    Database changed
    
    MariaDB [rmt]> source rmt_backup.sql;
    [...]
    
    MariaDB [rmt]> quit
  4. (可选)导入导出的储存库。

    # rmt-cli import repos ./repos/
  5. 同步您的数据并更新储存库。

    # rmt-cli sync
    # rmt-cli mirror

8 管理 TLS/SSL 证书

8.1 重新生成 HTTPS 证书

在 HTTPS 证书失效之前,或者若要包含其他通用备用名称,应重新生成该证书。如果只是重新生成 HTTPS 证书,则无需在已注册到 RMT 服务器的客户端计算机上执行其他操作。

  1. 停止 nginx 和 rmt-server 服务。

    # systemctl stop nginx
    # systemctl stop rmt-server
  2. 去除之前生成的证书。

    # rm /etc/rmt/ssl/rmt-server.*
  3. 按照第 2.5 节 “使用 YaST 配置 RMT”中所述运行 yast rmt 模块。

8.2 重新生成 CA 证书和 HTTPS 证书

CA 证书失效后或者发生安全问题时,可以重新生成该证书。

警告
警告:在所有客户端上导入 CA 证书

必须在已注册到 RMT 服务器的所有客户端上导入新生成的 CA 证书。可以按第 5.3 节 “使用 rmt-client-setup 配置客户端”中所述在客户端计算机上运行 rmt-client-setup 脚本来完成此操作。

  1. 停止 nginx 和 rmt-server 服务。

    # systemctl stop nginx
    # systemctl stop rmt-server
  2. 去除之前生成的 CA 和 HTTPS 证书。

    # rm /etc/rmt/ssl/rmt-ca.*
    # rm /etc/rmt/ssl/rmt-server.*
  3. 按照第 2.5 节 “使用 YaST 配置 RMT”中所述运行 yast rmt 模块。