TranslateProject/published/20210929 Manage CentOS Stream with Foreman.md
2021-09-30 13:42:56 +08:00

16 KiB
Raw Blame History

用 Foreman 管理 CentOS Stream

这个例子让我们看到了在 Foreman 中管理和配置 CentOS Stream 内容的许多选项。

2021 年 12 月CentOS 8 将达到生命终点,被 CentOS Stream 取代。CentOS Stream 和 CentOS 之前的迭代之间的主要变化之一是没有小版本。Centos Stream 采用了一个连续的发布周期。从今年年初开始Foreman 社区的开发者开始看到 CentOS Stream 由于持续发布而提供的更早的错误检测和补丁的好处。我们不再需要等待下一个版本来利用最新的变化和错误修复。一位资深的 Linux 社区爱好者 指出,此举也使 RHEL 开发者比以往更接近 FOSS 社区。

然而,如果你是一个拥有数百或数千台服务器的管理员,你可能想控制新的软件包何时被添加到特定的服务器。如果你正在寻找一个免费的开源工具,帮助你确保生产服务器的稳定性,同时允许你安全地从 Centos Stream 中拉入最新的变化用于开发和测试,这就是 Foreman 可以帮助你的地方。有了 Foreman你可以在生命周期环境的各个阶段管理你的 Centos Stream 内容。

Foreman 介绍

Foreman 是一个完整的物理和虚拟服务器的生命周期管理工具。有了 Foreman系统管理员有能力轻松实现重复性任务的自动化快速部署应用程序并主动管理内部或云中的服务器。Foreman 为配备provisioning管理、配置管理和监控提供了企业级解决方案。由于其插件架构Foreman 可以以无数种方式进行扩展。使用 Katello 插件,你可以把 Foreman 作为一个完整的内容管理content management工具来管理 CentOS Stream以及其他许多内容类型。

通过 Foreman 和 Katello你可以准确地定义你希望每个环境包含哪些软件包。例如生产环境可能使用已被验证为稳定的软件包而开发环境可能需要最新、最先进的软件包版本。你还可以跨生命周期环境推广内容视图content view。让我们来看看 Foreman 是如何完成这个任务的。

我们在这篇文章中使用了网页用户界面,但 Foreman 也有一个强大的 CLI 和 API。Katello 插件为 Pulp 项目提供了一个工作流和网页用户界面,你可以在 这篇文章 中了解更多。我们在这里也提供了一个简单的工作流程,但是 Foreman 和 Katello 项目提供了许多不同的配置选项来满足你的具体需求。

本文假设 Foreman 和 Katello 已经安装完毕。关于如何安装的更多信息,请参阅 Katello 安装手册

创建一个产品

第一步是在 Foreman 中创建一个产品product。该产品的功能是作为一个内部标签来存储 CentOS Stream 存储库。

  1. 在 Foreman 网页用户界面,导航到“内容Content > 产品Products”,并点击“创建产品Create Product”。
  2. 在“名称Name”字段中为产品输入一个名称。Foreman会根据你输入的“名称Name”自动完成“标签Label”字段,以后不能再更改。

将 CentOS Stream 存储库添加到产品中

现在你有了一个产品,你可以使用 AppStream 和 BaseOS 存储库的 URL并将它们添加到你的新产品中。

  1. 在 Foreman 网页用户界面中,导航到 “内容Content > 产品Products”,选择你要使用的产品,然后点击 “新存储库New Repository”。
  2. 在“名称Name”字段中为存储库输入一个名称例如“Centos8StreamBaseOS”。Foreman 会根据你输入的“名称Name”,自动完成“标签Label”字段。
  3. 从“类型Type”列表中选择存储库的类型然后选择“Yum”。
  4. 在 “URL” 字段中,输入 CentOS Stream Baseos 存储库的 URL作为源 http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/
  5. 选择“下载规则Download Policy”列表。默认的是“按需On Demand”,这意味着 Katello 将只下载元数据。如果你想下载所有的软件包,请改成“即时Immediate”,它可以下载所有的软件包,可能会达到 20-30GB。
  6. 确保“与镜像同步Mirror on Sync”复选框被选中。这个选项确保在同步过程中,不再是上游存储库的一部分的内容被删除。
  7. 点击“保存Save”。

重复这些步骤,添加 AppStream 存储库及其 URL例如http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/。确保你使用最近的官方 CentOS 镜像来代替它。

要执行立即同步,在你的产品窗口,点击“立即同步Sync Now”。最初的同步可能需要一些时间。你可以从“内容Content > 同步状态Sync Status”查看同步状态。

同步完成后,你可以在“主机 Hosts > 操作系统Operating System”中查看新的 CentOS Stream 操作系统。请随意编辑名称和描述以满足你的要求。

如果你打算使用 Ansible 或 Puppet 等配置管理软件Foreman 会自动创建一个操作系统报告。你可以在“管理Administe > 设置Settings > 忽略操作系统状况Ignore facts for operating system”中关闭这个选项。重命名操作系统以匹配配置管理软件中的名称是一个好主意。例如,对于 Puppet这将是“CentOS 8”。

定义你的基础设施的生命周期环境

应用程序生命周期是 Foreman 的内容管理功能的一个核心概念。应用程序的生命周期定义了一个特定的系统和它的软件在特定阶段的状况。例如一个应用程序的生命周期可能很简单你可能只有一个“开发”阶段和“生产”阶段。Foreman 提供了一些方法来以可控的方式定制每个应用生命周期阶段,以适应你的规范。

在这一点上,你必须创建你的生命周期环境路径。

  1. 在 Foreman 网页用户界面中,导航到“内容Content > 生命周期环境Lifecycle Environments”。
  2. 点击“新环境路径New Environment Path”,开始一个新的应用生命周期。
  3. 在“名称Name”字段中,为你的环境输入一个名称。
  4. 在“描述Description”字段中,为你的环境输入一个描述。
  5. 点击“保存Save”。
  6. 根据你的需要添加尽可能多的环境路径。例如你可以创建“dev”、“test”、“stage” 和 “production” 环境。要添加这些环境,点击“添加新环境”,完成“名称Name”和“描述Description”字段,并从“优先环境Prior Environment*”列表中选择先前的环境,这样你就可以按照你预期使用的顺序将它们串联起来。

创建和发布一个内容视图

在 Foreman 中,“内容视图Content View”是你的存储库在某个特定时间点的快照。内容视图提供了隔离软件包版本到你想保留的状态的机制。内容视图有很多可配置的功能,你可以用它来进一步细化。为了本教程的目的,让我们保持简单。

  1. 在 Foreman 网页用户界面中,导航到“内容Content > 内容视图Content View”,并点击“创建新视图Create New View”。
  2. 在“名称Name”字段中为视图输入一个名称。Foreman 会根据你输入的名称自动完成“标签Label”字段。
  3. 在“描述Description”字段中,输入视图的描述。
  4. 单击“保存Save”以创建内容视图。
  5. 在新的内容视图中,点击“Yum 内容Yum Contents > 添加存储库Add Repositories”,在“存储库选择Repository Selection”区域,点击“添加Add”。对于 BaseOS 和 Appstream 存储库,选择你想包括的软件包,然后点击“添加存储库Add Repositories”。
  6. 点击“发布新版本Publish New Version”,在“描述Description”区域,输入关于版本的信息以记录变化。
  7. 单击“保存Save”。

当你点击“发布新版本Publish New Version”时,你创建了一个你已同步的所有内容的快照。这意味着你订阅此内容视图的每台服务器将只能访问与此生命周期环境相关的内容视图中的软件包版本。

每一个新的内容视图和后续版本都会首先发布到库环境,然后你可以在那里推广到其他环境。

跨生命周期环境推广内容

如果你已经测试了新的软件包,并且确信一切都很稳定,你可以把你的内容视图推广到另一个生命周期环境中。

  1. 导航到“内容Content > 内容视图Content Views”,选择你想推广的内容视图。
  2. 点击内容视图的“版本Versions”标签。
  3. 选择你想推广的版本,并在“操作Action”栏中,点击“推广Promote”。
  4. 选择你要推广内容视图的环境,并点击“推广版本Promote Version”。
  5. 再次点击“推广Promote”按钮。这次选择生命周期环境例如“Test”然后单击“推广版本Promote Version”。
  6. 最后,再次点击“推广Promote”按钮。例如选择“Production”环境并点击“推广版本Promote Version”。

被分配到该特定环境的服务器现在可以从一套更新的软件包中提取。

创建一个激活密钥

为了将 CentOS Stream 服务器注册到你在特定生命周期中定义的内容,你必须创建一个激活密钥。激活密钥是一种与服务器共享凭证的安全方法。这使用了一个叫做“订阅管理器subscription-manager的工具来订阅 CentOS Stream 服务器的内容。

当你创建了激活密钥后,将 CentOS Stream 订阅添加到激活密钥中。

  1. 在 Foreman 网页用户界面中,导航到“内容Content > 激活密钥Activation keys”,并点击“创建激活密钥Create Activation Key”。
  2. 在“名称Name”栏中,输入激活密钥的名称。
  3. 在“描述Description”栏中,输入激活密钥的描述。
  4. 从“环境Environment”列表中,选择要使用的环境。
  5. 从“内容视图Content View”列表中,选择你刚才创建的内容视图。
  6. 点击“保存Save”。

###从 Foreman 管理的内容中创建一个 CentOS Stream 主机

现在一切都准备好了。随着你创建的内容包含在内容视图中,并在整个生命周期中推广,你现在可以准确地用你想使用的内容来配置主机,并订阅你想让它们接收的更新。

要在 Foreman 中创建一个主机,请导航到“主机 > 创建主机”。

  1. 在“名称Name”字段中,为主机输入一个名称。
  2. 单击“组织Organization”和“位置Location”选项卡,以确保配置环境自动设置为当前环境。
  3. 从“部署在Deploy On”列表中,选择“裸金属Bare Metal”。
  4. 单击“操作系统Operating System”选项卡。
  5. 从“架构Architectures”列表中选择“x86_64”。
  6. 从“操作系统Operating System”列表中选择“CentOS_Stream 8”。
  7. 勾选“构建模式Build Mode”框。
  8. 对于“媒体选择Media Selection”,选择“同步的内容Synced Content”来使用你之前同步的 CentOS Stream 内容。
  9. 从“同步的内容Synced Content”列表中,确保选择 “CentOS Stream”。
  10. 从“分区表Partition Table”列表中,对于这个演示,选择默认的 “Kickstart”但有许多可用的选项。
  11. 在“Root 密码Root Password”栏中,为你的新主机输入一个 root 密码。
  12. 点击“接口Interface”标签,并点击“编辑Edit”,并添加一个 “Mac 地址Mac address”。
  13. 点击“参数Parameters”标签,并确保存在一个提供激活密钥的参数。如果没有,添加一个激活密钥。
  14. 点击“提交Submit”以保存主机条目。

现在,新的主机处于构建模式,这意味着当你打开它时,它将开始安装操作系统。

如果你导航到“主机Hosts > 内容主机Content Hosts”,你可以看到你的主机所订阅的订阅、生命周期环境和内容视图的全部细节。

这个例子只是对你在 Foreman 中管理和配置 CentOS Stream 内容的众多选项的一个小窥视。如果你想了解更多关于如何管理 CentOS Stream 版本,控制你的服务器可以访问的内容,以及控制和保护你的基础设施的稳定性的详细信息,请查看 Foreman 内容管理 文档。当所有 CentOS Stream 内容在你的控制之下时,你可以创建和注册 Centos Stream只使用你指定的内容。有关配备的更多详细信息请参见 Foreman 配备 文档。如果你有任何问题、反馈或建议,你可以在 https://community.theforeman.org/ 找到 Foreman 社区。


via: https://opensource.com/article/21/9/centos-stream-foreman

作者:Melanie Corr 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出