内容生命周期管理

内容生命周期管理允许您在更新生产客户端之前自定义和测试软件包。 如果您需要在有限的维护窗口内应用更新,这尤其有用。

内容生命周期管理允许您选择软件通道作为源、根据环境的需要调整软件通道,并在安装到生产客户端之前对其进行全面的测试。

虽然您不能直接修改供应商频道,但可以克隆它们,然后通过添加或删除软件包和自定义补丁来修改克隆。 您可以将这些克隆的频道分配给测试客户端,以确保它们按预期工作。

默认情况下,克隆的供应商频道与原始供应商频道匹配,并自动选择依赖项。 您可以通过在 /etc/rhn/rhn.conf 中添加以下选项来禁用克隆频道的自动选择:

java.cloned_channel_auto_selection = false

然后,当所有测试都通过后,您可以将克隆的通道升级为生产服务器。

这是通过一系列环境实现的,您的软件频道可以在其生命周期中移动。 大多数环境生命周期至少包括测试和生产环境,但您可以根据需要拥有任意数量的环境。

本节涵盖基本的内容生命周期流程以及可用的过滤器。 有关更具体的示例,请参见 内容生命周期管理示例

1. 创建内容生命周期项目

要设置内容生命周期,您需要从项目开始。 该项目定义了软件频道源、用于查找软件包的过滤器和构建环境。

过程:升级创建内容生命周期项目
  1. 在 SUSE Multi-Linux Manager Web UI 中,导航到 内容生命周期  项目,然后单击 创建项目

  2. Label 字段中输入项目的标签。 Label 字段仅接受小写字母、数字、句点、连字符和下划线。

  3. Name 字段中输入项目的描述性名称。

  4. 单击 创建 按钮以创建项目并返回项目页面。

  5. 单击 关联源/解除源关联

  6. Sources 对话框中选择源类型,然后选择项目的基础频道。 此时会显示所选基础通道的可用子通道,包括有关通道是必需通道还是建议通道的信息。

  7. 选中所需的子频道,然后单击 保存 返回项目页面。 您选择的软件通道现在应会显示出来。

  8. 单击关联/解除关联过滤器

  9. Filters 对话框中,选择要关联到项目的过滤器。 要创建新过滤器,请单击 创建新过滤器

  10. 单击 添加环境

  11. Environment Lifecycle 对话框中,为第一个环境指定名称、标签和说明,然后单击 保存Label 字段仅接受小写字母、数字、句点、连字符和下划线。

  12. 继续创建环境,直到为整个生命周期创建了所有环境。 您可以在创建环境时,通过在 Insert before 字段中选择一个环境,来选择该环境在生命周期中的顺序。

2. 过滤器类型

SUSE Multi-Linux Manager 允许您创建各种类型的过滤器,以控制用于构建项目的内容。 过滤器允许您选择哪些软件包包含在构建中或排除在外。 例如,您可以排除所有内核软件包,或仅包含某些软件包的特定版本。

支持的过滤器为:

  • 软件包过滤

    • 按名称

    • 按名称、纪元、版本、发行版和体系结构

    • 按提供的名称

  • 补丁过滤

    • 按建议名称

    • 按建议类型

    • 按摘要

    • 按关键字

    • 按日期

    • 按受影响的软件包

  • 模块

    • 按流

在内容过滤期间不会解析软件包依赖项。

您可以使用多种匹配器与过滤器。 可用的匹配器取决于您选择的过滤器类型。

可用的匹配器为:

  • 包含

  • 匹配(必须采用正则表达式形式)

  • 等于

  • 大于

  • 大于或等于

  • 低于或等于

  • 低于

  • 高于或等于

2.1. 过滤器 rule 参数

每个过滤器都有一个 rule 参数,可以设置为 AllowDeny。 过滤器的处理方式如下:

  • 如果某个软件包或补丁满足 Deny 过滤器,则从结果中排除它。

  • 如果一个软件包或补丁满足 Allow 过滤器,它将被包含在结果中(即使它被 Deny 过滤器排除)。Allow 过滤器仅对软件包过滤器操作,而 Allow 过滤器仅对补丁过滤器操作。这意味着在软件包过滤器中,您不能将通过补丁过滤器过滤掉的软件包重新添加回来,反之亦然,对于通过软件包过滤器过滤掉的补丁也是如此。

当您想要使用一般的 Deny 过滤器来排除大量软件包或补丁,并想要使用特定的 Allow 过滤器来“挑选”特定的软件包或补丁时,此行为很有用。

内容过滤器在您的组织中是全局性的,并可以在项目之间共享。

如果您的项目已经包含构建的源代码,当您添加一个环境时,它会自动填充现有内容。 内容将从循环的上一个环境中提取(如果有的话)。 如果没有上一个环境,则在项目源代码再次构建之前将保持为空。

3. 过滤器模板

为了帮助创建一些常见场景的过滤器,SUSE Multi-Linux Manager 提供了过滤器模板。 应用这些模板时,可以提前创建一组针对特定用例量身定制的过滤器。

本节介绍可用的模板及其用法。

3.1. 根据 SUSE 产品进行实时修补

在包含实时修补的项目中,必须排除常规未来内核软件包,以便仅将实时修补软件包作为更新提供给客户端。另一方面,已经安装的常规内核软件包仍然必须包含,以保持系统完整性。

应用此模板会创建三个所需的过滤器来实现以下行为:

  • 允许包含与基础内核版本相同的 kernel-default 软件包的补丁

  • 拒绝包含 reboot_suggested 关键字的补丁

  • 拒绝包含提供名称 installhint(reboot-needed) 的软件包的补丁

有关如何设置实时修补项目的更多信息,请参见 administration:content-lifecycle-examples.adoc#exclude-higher-kernel-version

过程:升级应用模板
  1. 在 SUSE Multi-Linux Manager Web UI 中,导航到 内容生命周期  过滤器,然后单击 创建过滤器

  2. 在对话框中,单击 使用模板。输入将相应更改。

  3. Prefix 字段中,输入一个名称前缀。该值将添加到通过模板创建的每个过滤器名称的前面。如果模板在项目的上下文中应用,则此字段将预填充项目标签。

  4. Template 字段中,选择 Live patching based on a SUSE product

  5. Product 字段中,选择要为其设置实时修补的产品。

  6. Kernel 字段中,从所选产品的可用版本列表中选择一个内核版本。拒绝后续常规内核补丁的过滤器将基于此版本。

  7. 单击保存以创建过滤器。

  8. 导航到内容生命周期  项目并选择您的项目。

  9. 单击关联/解除关联过滤器

  10. 选择具有指定前缀的三个过滤器,然后单击保存

3.2. 根据系统实时修补

如果您想要根据特定已注册系统中安装的内核版本设置实时修补项目,可以使用``根据系统实时修补``模板。

应用此模板会创建三个所需的过滤器来实现以下行为:

  • 允许包含与基础内核版本相同的 kernel-default 软件包的补丁

  • 拒绝包含 reboot_suggested 关键字的补丁

  • 拒绝包含提供名称 installhint(reboot-needed) 的软件包的补丁

有关如何设置实时修补项目的更多信息,请参见 administration:content-lifecycle-examples.adoc#exclude-higher-kernel-version

过程:升级应用模板
  1. 在 SUSE Multi-Linux Manager Web UI 中,导航到 内容生命周期  过滤器,然后单击 创建过滤器

  2. 在对话框中,单击 使用模板。 输入将相应更改。

  3. Prefix 字段中,输入一个名称前缀。 该值将作为前缀加在通过模板创建的每个过滤器名称前面。 如果模板在项目的上下文中应用,则此字段将预填充项目标签。

  4. Template 字段中,选择 Live patching based on a specific system

  5. System 字段中,从列表中选择一个系统,或开始输入系统名称以缩小选项范围。

  6. Kernel 字段中,从所选系统中安装的版本列表中选择一个内核版本。 拒绝后续常规内核补丁的过滤器将基于此版本。

  7. 单击保存以创建过滤器。

  8. 导航到内容生命周期  项目并选择您的项目。

  9. 单击关联/解除关联过滤器

  10. 选择具有指定前缀的三个过滤器,然后单击保存

3.3. 含默认值的 AppStream 模块

如果您想要在项目中包含模块化储存库中提供的所有可用模块,可以使用此过滤器模板自动添加这些模块。

应用后,此模板将为每个模块及其默认流创建一个 AppStream 过滤器。

如果此过程是在项目页面上完成的,则过滤器将自动添加到项目中。否则,创建的过滤器可以在内容生命周期  过滤器中列出,并根据需要添加到任何项目中。

可以编辑每个过滤器以选择不同的模块流,或去除所有这些过滤器以从目标储存库中排除该模块。

由于并非所有模块流彼此兼容,单独更改模块流可能会阻止成功解析模块依赖关系。当这种情况发生时,项目详细信息页面中的过滤器窗格将显示描述问题的错误,构建按钮将被禁用,直到所有模块选择兼容。

自Red Hat Enterprise Linux 9以来,模块没有任何定义的默认流。 因此,使用此模板与Red Hat Enterprise Linux 9源将没有任何效果。

有关如何使用内容生命周期管理设置 AppStream 存储库的更多信息,请参见administration:content-lifecycle-examples.adoc#appstream-filters.

过程:升级应用模板
  1. 在SUSE Multi-Linux Manager Web UI中,导航到内容生命周期  项目,并选择您的项目。

  2. Filters 部分,单击 关联/解除关联过滤器,然后单击 创建新过滤器

  3. 在对话框中,单击 使用模板。 输入将相应更改。

  4. Prefix 字段中,输入一个名称前缀。 该值将作为前缀加在通过模板创建的每个过滤器名称前面。 如果模板在项目的上下文中应用,则此字段将预填充项目标签。

  5. Template 字段中,选择 AppStream modules with defaults

  6. Channel 字段中,选择一个模块化通道以获取模块。在此下拉菜单中,仅显示模块化频道。

  7. 单击保存以创建过滤器。

  8. 滚动到 Filters 部分以查看新关联的 AppStream 过滤器。

  9. 可以编辑/去除任何一个过滤器以根据您的需要定制项目。

4. 构建内容生命周期项目

创建项目、定义环境、关联源和过滤器后,可以首次构建项目。

构建过程会将过滤器应用于关联的源,并将过滤器克隆到项目中的第一个环境。

您可以将相同的供应商频道用作多个内容项目的源。 在这种情况下,SUSE Multi-Linux Manager不会为每个克隆的频道创建新的补丁克隆。 相反,所有克隆的频道之间共享一个补丁克隆。 如果供应商修改了补丁,这可能会导致问题;例如,如果补丁被撤回,或者补丁中的软件包被更改。 当您构建其中一个内容项目时,所有共享克隆补丁的频道默认与原始补丁同步,即使这些频道位于您的内容项目的其他环境中,或您组织中其他内容项目的频道中。 您可以通过在组织设置中关闭自动补丁同步来更改此行为。 要稍后手动同步所有共享补丁的通道,请导航到 软件  管理  通道,单击您想要同步的通道,然后导航到 Sync 子选项卡。 即使是手动补丁同步也会影响所有共享补丁的组织频道。

过程:升级构建内容生命周期项目
  1. 在SUSE Multi-Linux Manager Web UI中,导航到内容生命周期  项目,并选择您想要构建的项目。

    在构建项目前,请确保环境可用。

  2. 查看关联的源和过滤器,然后单击构建

  3. 提供版本消息以描述此构建中的更改或更新。

  4. 您可以在 Environment Lifecycle 部分监控构建进度。

构建完成后,环境版本号将会加 1,可将构建的源(例如软件通道)指派到您的客户端。

5. 升级环境

构建项目后,可将构建的源按顺序升级到环境。

过程:升级推广环境
  1. 在SUSE Multi-Linux Manager Web UI中,导航到内容生命周期  项目,并选择您想要处理的项目。

  2. Environment Lifecycle 部分,找到要晋升至其后继环境的环境,然后单击 晋升

  3. 您可以在 Environment Lifecycle 部分监控构建进度。

6. 将客户端分配到环境

当您构建和推广内容生命周期项目时,SUSE Multi-Linux Manager会创建一个软件频道树。 要将客户端添加到环境中,请使用客户端 System Details 页面中的 软件  软件通道,将基础和子软件通道分配给您的客户端。

新添加的克隆频道不会自动分配给客户端。 如果您添加或推广源,您需要手动检查和更新您的频道分配。

在将来的版本中,自动分配功能将添加到SUSE Multi-Linux Manager。