注册 CentOS 客户端
本节包含有关注册运行 CentOS 操作系统的传统客户端和 Salt 客户端的信息。
|
|
CentOS 客户端基于 CentOS,与 SUSE Linux Enterprise Server with Expanded Support、RES、Red Hat 或 Expanded Support 不相关。您需负责安排对 CentOS 基础媒体储存库和 CentOS 安装媒体的访问权限,以及将 SUSE Manager 服务器连接到 CentOS 内容分发网络。 |
1. 添加软件通道
将 CentOS 客户端注册到您的 SUSE Manager 服务器之前,您需要添加所需的软件通道,并同步这些通道。
当前支持的系统结构为 x86_64 和 aarch64。有关支持的产品和体系结构的完整列表,请参见 支持的客户端和功能。
|
下面的小节中的说明通常默认使用 x86_64 体系结构。请根据情况将其替换为其他体系结构。 |
例如,使用 x86_64 体系结构时,您需要如下产品:
| 操作系统版本 | 产品名称 |
|---|---|
CentOS 7 |
CentOS 7 x86_64 |
-
在 SUSE Manager Web UI 中,导航到。
-
使用搜索栏找到适用于您的客户端操作系统和体系结构的产品,然后选中相应产品。这样会自动选中所有必需的通道。此外,建议的所有通道也将选中,并且
包括建议项开关会打开。单击箭头以查看相关产品的完整列表,确保您需要的所有额外产品都已选中。 -
单击 添加产品 并等待产品完成同步。
或者,您也可以在命令提示符处添加通道。此过程所需的通道包括:
| 操作系统版本 | 基础通道 |
|---|---|
CentOS 7 |
centos7-x86_64 |
-
在 SUSE Manager 服务器上的命令提示符处,以 root 身份使用
mgr-sync命令添加相应的通道:mgr-sync add channel <channel_label_1> mgr-sync add channel <channel_label_2> mgr-sync add channel <channel_label_n>
-
系统会自动启动同步。如果您要手动同步通道,请使用以下命令:
mgr-sync sync --with-children <channel_name>
-
确保同步已完成,然后再继续操作。
如果您使用的是模块化通道,则必须在客户端上启用 Python 3.6 模块流。如果不提供 Python 3.6,spacecmd 软件包安装将会失败。
|
您可能会发现 AppStream 通道中提供的软件包数量在上游通道和 SUSE Manager 通道之间存在一定的差异。如果您对在不同时间添加的同一通道进行比较,会发现其数量也不相同。这是由 CentOS 管理其储存库的方式所致。当有新版本发布时,CentOS 会去除软件包的较旧版本,而 SUSE Manager 则会保留所有版本,无论新旧与否。 |
|
AppStream 储存库会提供模块化软件包。这会导致 SUSE Manager Web UI 中显示不正确的软件包信息。您无法使用 Web UI 或 API 直接从模块化储存库执行安装或升级等软件包操作。 或者,您可以使用 Salt 状态管理 Salt 客户端上的模块化软件包,或在客户端上使用 |
2. 检查同步状态
-
在 SUSE Manager Web UI 中,导航到,然后选择
产品选项卡。当同步产品时,此对话框会为每个产品显示一个完成栏。 -
或者,您可以导航到,然后单击与该储存库关联的通道。导航到
储存库选项卡,然后单击同步并选中同步状态。
-
在 SUSE Manager 服务器上的命令提示符处,以 root 身份使用
tail命令检查同步日志文件:tail -f /var/log/rhn/reposync/<channel-label>.log
-
每个子通道在同步过程中都会生成自己的日志。 您需要检查所有基础通道和子通道日志文件,以确保同步已完成。
3. 创建激活密钥
您需要创建与您的 CentOS 通道关联的激活密钥。
有关激活密钥的详细信息,请参见 激活密钥。
操作系统要么直接信任自己的 GPG 密钥,要么至少将它们与最小系统一起安装,但通过其他 GPG 密钥签名的第三方软件包需要手动处理。客户端可以在不信任 GPG 密钥的情况下成功引导,但除非密钥受信任,否则您将无法安装新的客户端工具软件包或更新软件包。
Salt 客户端现在使用为软件通道输入的 GPG 密钥信息来管理受信任密钥。如果将具有 GPG 密钥信息的软件通道指派给客户端,当通道刷新后或从此通道安装第一个软件包后,系统会立即信任该密钥。
软件通道页面中的 GPG 密钥 URL 参数可以包含以空格分隔的多个密钥 URL。如果其为文件 URL,则必须在使用软件通道之前在客户端上部署 GPG 密钥文件。
Red Hat 客户端的客户端工具通道的 GPG 密钥会部署到客户端的 /etc/pki/rpm-gpg/ 中,并可通过文件 URL 引用。具有扩展支持的客户端的 GPG 密钥同样部署到该路径。仅当为客户端指派了软件通道时,系统才会导入并信任这些密钥。
|
由于基于 Debian 的系统仅会对元数据签名,因此不需要为各个通道指定确切的密钥。如果用户按 为储存库元数据签名 中的“使用自己的 GPG 密钥”所述配置了自己的 GPG 密钥来对元数据签名,系统会自动部署并信任该密钥。 |
4. 用户定义的 GPG 密钥
用户可以自行定义要部署到客户端的 GPG 密钥。
通过提供某些 pillar 数据并在 Salt 文件系统中提供 GPG 密钥文件,系统会自动将它们部署到客户端。
这些密钥会分别部署到 /etc/pki/rpm-gpg/(在基于 RPM 的操作系统上)和 /usr/share/keyrings/(在 Debian 系统上)中:
为您要将密钥部署到的客户端定义 pillar 键 custom_gpgkeys 并列出密钥文件名。
cat /srv/pillar/mypillar.sls custom_gpgkeys: - my_first_gpg.key - my_second_gpgkey.gpg
此外,在 Salt 文件系统中创建名为 gpg 的目录,并将 custom_gpgkeys pillar 数据中所指定的 GPG 密钥文件存储在该目录下。
ls -la /srv/salt/gpg/ /srv/salt/gpg/my_first_gpg.key /srv/salt/gpg/my_second_gpgkey.gpg
密钥现在会部署到客户端的 /etc/pki/rpm-gpg/my_first_gpg.key 和 /etc/pki/rpm-gpg/my_second_gpgkey.gpg 中。
最后一步是将 URL 添加到软件通道的“GPG 密钥 URL”字段中。请导航到,然后选择要修改的通道。将值 file:///etc/pki/rpm-gpg/my_first_gpg.key 添加到 GPG 密钥 URL中。
5. 引导脚本中的 GPG 密钥
-
在 SUSE Manager 服务器上的命令提示符处,检查
/srv/www/htdocs/pub/目录的内容。此目录包含所有可用的公共密钥。记下为您正在注册的客户端指派的通道适用的密钥。 -
打开相关的引导脚本,找到
ORG_GPG_KEY=参数并添加所需的密钥。例如:uyuni-gpg-pubkey-0d20833e.key
您无需删除任何以前存储的密钥。
|
信任 GPG 密钥对于客户端的安全非常重要。由管理员来决定需要哪些密钥,可以信任哪些密钥。如果不信任 GPG 密钥,便无法为客户端指派软件通道。 |
6. 管理 GPG 密钥
安装软件包之前,客户端会使用 GPG 密钥检查这些软件包的真实性。只有可信软件才能安装在客户端上。
|
信任 GPG 密钥对于客户端的安全非常重要。由管理员来决定需要哪些密钥,可以信任哪些密钥。如果不信任 GPG 密钥,便无法为客户端指派软件通道。 |
有关 GPG 密钥的详细信息,请参见 GPG 密钥。
7. 注册客户端
要注册您的客户端,需要有引导储存库。系统默认会自动创建引导储存库,并且每天会为所有同步的产品重新生成该储存库。您可以在命令提示符处使用以下命令手动创建引导储存库:
mgr-create-bootstrap-repo
有关注册客户端的详细信息,请参见 客户端注册。
8. 管理勘误
当您更新 CentOS 客户端时,软件包不包含有关更新的元数据。您可以使用第三方勘误服务来获取此信息。
|
本文介绍的第三方勘误服务 CEFS 由社区提供和维护, 不受 SUSE 支持。 CEFS 的作者会按照尽力而为的原则提供补丁或勘误,希望它们有用,但无法保证其正确性或及时性。这意味着补丁日期可能不正确,且至少在一种情况下所显示的发布数据滞后一个多月。有关这些情况的详细信息,请参见 https://github.com/stevemeier/cefs/issues/28#issuecomment-656579382 和 https://github.com/stevemeier/cefs/issues/28#issuecomment-656573607。 任何有关补丁数据的问题或滞后都可能导致将不可靠的补丁信息导入到您的 SUSE Manager 服务器中, 进而导致报告、审计、CVE 更新或其他与补丁相关的信息也不正确。请考虑使用其他方案来替代此服务,例如独立校验补丁数据或选择其他操作系统,具体取决于您的安全相关要求和认证准则。 |
-
在 SUSE Manager 服务器上的命令提示符处,以 root 身份添加
sle-module-development-tools模块:SUSEConnect --product sle-module-development-tools/15.2/x86_64
-
安装勘误服务依赖项:
zypper in perl-Text-Unidecode
-
在
/etc/rhn/rhn.conf中添加或编辑下面一行:java.allow_adding_patches_via_api = centos7-x86_64-updates,centos7-x86_64,centos7-x86_64-extras
-
重启 Tomcat:
systemctl restart tomcat
-
为勘误脚本创建一个文件:
touch /usr/local/bin/cent-errata.sh
-
编辑新文件以包含此脚本,并视需要编辑储存库细节。 此脚本会从外部勘误服务提取勘误细节,将其解压缩,然后发布这些细节:
#!/bin/bash mkdir -p /usr/local/centos cd /usr/local/centos rm *.xml wget -c http://cefs.steve-meier.de/errata.latest.xml wget -c https://www.redhat.com/security/data/oval/v2/RHEL7/rhel-7.oval.xml.bz2 bzip2 -d rhel-7.oval.xml.bz2 wget -c http://cefs.steve-meier.de/errata-import.tar tar xvf errata-import.tar chmod +x /usr/local/centos/errata-import.pl export SPACEWALK_USER='<adminname>';export SPACEWALK_PASS='<password>' /usr/local/centos/errata-import.pl --server '<servername>' \ --errata /usr/local/centos/errata.latest.xml \ --include-channels=centos7-x86_64-updates,centos7-x86_64,centos7-x86_64-extras \ --publish --rhsa-oval /usr/local/centos/rhel-7.oval.xml
-
设置 cron 作业以每日运行该脚本:
ln -s /usr/local/bin/cent-errata.sh /etc/cron.daily
有关此工具的详细信息,请参见 https://cefs.steve-meier.de/。