3.7. 典型的客户端 RPM 工作流
作为 CCSP,您可以提供各种版本的 Red Hat Enterprise Linux 以及其之上提供的各种层次产品。除了提供此内容的红帽存储库外,还需要自定义软件仓库来为这些 Red Hat Enterprise Linux 版本和层次产品提供客户端配置 RPM 的更新。您必须为每个 Red Hat Enterprise Linux 版本创建自定义软件仓库,以及每个层次产品单独销售。例如,您需要单独的自定义软件仓库用于基本 Red Hat Enterprise Linux 8 产品和 Red Hat Enterprise Linux 上的 SAP。这些自定义存储库将存储对应的客户端配置 RPM。每当您更新这些 RPM 时,要添加新存储库或更新过期证书-您要将新版本上传到相应的自定义存储库。
最好使用 GPG 密钥为所有 RPM 签名,确保用户从未修改过的官方软件包中进行安装。但是,签名软件包不在 RHUI 范围内,因此您需要使用公司中提供的工具为您的客户端配置 RPM 签名。要创建自定义存储库,您只需要 RHUA 上的公共 GPG 密钥来配置它以用于自定义存储库。请注意,rhui-manager
将自动在客户端配置 RPM 中包含该密钥,并在 dnf 配置中将其用于自定义存储库。
流程
在以下示例中,您将在 x86_64 架构中为客户端配置 RPM 为 Red Hat Enterprise Linux 8 创建自定义软件仓库:
rhui-manager repo create_custom --protected --repo_id client-config-rhel-8-x86_64 --display_name "RHUI Client Configuration for RHEL 8 on x86_64" --gpg_public_keys /root/RPM-GPG-KEY-my-cloud
# rhui-manager repo create_custom --protected --repo_id client-config-rhel-8-x86_64 --display_name "RHUI Client Configuration for RHEL 8 on x86_64" --gpg_public_keys /root/RPM-GPG-KEY-my-cloud
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要,您可以使用不同的存储库 ID 并显示名称,并确保您指定实际的 GPG 密钥文件。
添加相关的红帽软件仓库。以下 YAML 文件包含 x86_64 架构上用于基本 Red Hat Enterprise Linux 8 的典型存储库集合,使用未指定版本的软件仓库:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用上述 YAML 文件添加并同步所有这些软件仓库,请运行以下命令:
rhui-manager repo add_by_file --file rhel-8-x86_64.yaml --sync_now
# rhui-manager repo add_by_file --file rhel-8-x86_64.yaml --sync_now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建权利证书。您需要证书允许的存储库标签列表。存储库标签通常与存储库 ID 相同,但当存储库 ID 包含特定的 Red Hat Enterprise Linux 次版本时,在这种情况下,标签不包含次版本,而只是主版本。对于基本 Red Hat Enterprise Linux 软件仓库,ID 是相同的,因此您可以使用以下 Python 代码从上述 YAML 文件中提取它们:
import yaml with open("rhel-8-x86_64.yaml") as repoyaml: repodata = yaml.safe_load(repoyaml) print(",".join(repodata["repo_ids"]))
import yaml with open("rhel-8-x86_64.yaml") as repoyaml: repodata = yaml.safe_load(repoyaml) print(",".join(repodata["repo_ids"]))
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将输出复制到剪贴板中,并将它保存为环境变量;例如,$labels:
labels=<paste the contents of the clipboard here>
# labels=<paste the contents of the clipboard here>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 除了 Red Hat Enterprise Linux 存储库标签外,您还需要在创建授权证书时将自定义存储库添加到以逗号分隔的标签列表中。运行以下命令来创建授权证书,允许访问 Red Hat Enterprise Linux 软件仓库和自定义软件仓库:
rhui-manager client cert --name rhel-8-x86_64 --dir /root --days 3650 --repo_label $labels,client-config-rhel-8-x86_64
# rhui-manager client cert --name rhel-8-x86_64 --dir /root --days 3650 --repo_label $labels,client-config-rhel-8-x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的公司的策略只允许证书有效期为一年、两年等,请相应地更改-
天
参数的值。这个命令创建文件
/root/rhel-8-x86_64.crt
和/root/rhel-8-x86_64.key
。下一步您将需要它们。创建客户端配置 RPM:
rhui-manager client rpm --dir /tmp --rpm_name rhui-client-rhel-8-x86_64 --rpm_version 1.0 --entitlement_cert /root/rhel-8-x86_64.crt --private_key /root/rhel-8-x86_64.key
# rhui-manager client rpm --dir /tmp --rpm_name rhui-client-rhel-8-x86_64 --rpm_version 1.0 --entitlement_cert /root/rhel-8-x86_64.crt --private_key /root/rhel-8-x86_64.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用您选择的 RPM 名称或版本。使用以上值时,命令会创建 RPM 并显示其位置,即:
/tmp/rhui-client-rhel-8-x86_64-1.0/build/RPMS/noarch/rhui-client-rhel-8-x86_64-1.0-1.noarch.rpm
将这个 RPM 从 RHUA 传送到您的系统,并使用与您在创建自定义存储库时用作--
gpg_public_keys
参数的公钥对应的相应 GPG 密钥进行签名。例如,您可以在云环境中的 Red Hat Enterprise Linux 8 x86_64 镜像上预安装了签名的 RPM。您还需要将签名的 RPM 传送到 RHUA,并将其上传到 x86_64 上 Red Hat Enterprise Linux 8 的自定义软件仓库:rhui-manager packages upload --repo_id client-config-rhel-8-x86_64 --packages /root/signed/rhui-client-rhel-8-x86_64-1.0-1.noarch.rpm
# rhui-manager packages upload --repo_id client-config-rhel-8-x86_64 --packages /root/signed/rhui-client-rhel-8-x86_64-1.0-1.noarch.rpm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查自定义存储库的内容:
rhui-manager packages list --repo_id client-config-rhel-8-x86_64
# rhui-manager packages list --repo_id client-config-rhel-8-x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令应该打印您上传的 RPM 文件。
配置了 CDS 和 HAProxy 节点(在本指南中稍后描述)后,您还可以在测试虚拟机上安装客户端配置 RPM,并在测试虚拟机上运行以下命令来验证访问所有相关存储库:
yum -v repolist
# yum -v repolist
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令应该打印配置的 Red Hat Enterprise Linux 8 软件仓库和用于客户端配置 RPM 的自定义存储库。
更新客户端配置 RPM
当重建客户端配置 RPM 需要时,请增加版本号。
如果您在之前的调用中使用了
1.0
,请立即使用如2.0
,并保留其余参数:rhui-manager client rpm --dir /tmp --rpm_name rhui-client-rhel-8-x86_64 --rpm_version 2.0 ...
# rhui-manager client rpm --dir /tmp --rpm_name rhui-client-rhel-8-x86_64 --rpm_version 2.0 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,为较新的 RPM 签名,将其传送到 RHUA,并将其上传到自定义存储库中:
rhui-manager packages upload --repo_id client-config-rhel-8-x86_64 --packages /root/signed/rhui-client-rhel-8-x86_64-2.0-1.noarch.rpm
# rhui-manager packages upload --repo_id client-config-rhel-8-x86_64 --packages /root/signed/rhui-client-rhel-8-x86_64-2.0-1.noarch.rpm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 安装之前版本的 RPM 的客户端虚拟机现在可以更新到更新的版本。请注意,可能需要清理客户端虚拟机上 dnf 缓存,使 dnf 重新加载 repodata,这是在上传较新的 RPM 时进行更新。
不要在一个权利证书中组合 x86_64 和 ARM64 存储库。由使用此类证书的 rhui-manager
创建的客户端配置 RPM 将提供对目标客户端虚拟机上这两个架构的访问,这可能会导致冲突。您必须修改 rh-cloud.repo
文件,并在 rhui-manager
之外重建 RPM。请注意,只要您在创建客户端配置 RPM 时使用了使用-dir /tmp
,工件现在就存储在 /tmp/rhui-client-rhel-8-x86_64-1.0/build/
中。有关重建 RPM 的详情,请参考 Red Hat Enterprise Linux 文档中的 打包和分发软件。
目前无法使 rhui-manager
创建带有特定 repository 的 rh-cloud.repo
文件,如 default -debug
和 -source
repository-disabled。您必须修改 rh-cloud.repo
文件,并在 rhui-manager
之外重建 RPM。这个问题在 BZ#1772156 中被跟踪。