Melanie Corr 发布的文章

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

 title=

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中国 荣誉推出

有很多令人信服的理由来用 Pulp 来托管你自己的容器注册中心。下面是其中的一些。

 title=

Linux 容器极大地简化了软件发布。将一个应用程序与它运行所需的一切打包的能力有助于提高环境的稳定性和可重复性。

虽然有许多公共注册中心可以上传、管理和分发容器镜像,但有许多令人信服的论据支持托管自己的容器注册中心。让我们来看看为什么自我托管是有意义的,以及 Pulp,一个自由开源项目,如何帮助你在企业内部环境中管理和分发容器。

为什么要托管你自己的容器注册中心

你可以考虑托管自己的容器注册中心,原因有很多:

  • 体积:一些容器镜像是相当大的。如果你有多个团队下载同一个镜像,这可能需要大量的时间,并给你的网络和预算带来压力。
  • 带宽:如果你在一个带宽有限的地区工作,或在一个出于安全原因限制访问互联网的组织中工作,你需要一个可靠的方法来管理你工作的容器。
  • 金钱:服务条款可以改变。外部容器注册中心能引入或增加速率限制阈值,这可能会对你的操作造成极大的限制。
  • 稳定性:托管在外部资源上的容器镜像可能会因为一些原因消失几天。小到你所依赖的更新容器镜像,可能会导致你想要避免的重大更改。
  • 隐私:你可能也想开发和分发容器,但你不想在公共的第三方注册中心托管。

使用 Pulp 进行自我托管

使用 Pulp,你可以避免这些问题并完全控制你的容器。

1、避免速率限制

在 Pulp 中创建容器镜像的本地缓存,可以让你组织中的每个人都能拉取到 Pulp 上托管的容器镜像,而不是从外部注册中心拉取。这意味着你可以避免速率限制,只有当你需要新的东西时才从外部注册中心进行同步。当你确实需要从外部注册中心同步容器时,Pulp 首先检查内容是否已经存在,然后再从远程注册中心启动同步。如果你受到注册中心的速率限制,你就只镜像你需要的内容,然后用 Pulp 在整个组织中分发它。

2、整理你的容器

使用 Pulp,你可以创建一个仓库,然后从任何与 Docker Registry HTTP API V2 兼容的注册中心镜像和同步容器。这包括 Docker、Google Container registry、Quay.io 等,也包括另一个 Pulp 服务器。对于你结合来自不同注册中心的镜像容器的方式,没有任何限制或约束。你可以自由地混合来自不同来源的容器。这允许你整理一套公共和私人容器,以满足你的确切要求。

3、无风险的实验

在 Pulp 中,每当你对仓库进行修改时,就会创建一个新的不可变的版本。你可以创建多个版本的仓库,例如,development、test、stage 和 production,并在它们之间推送容器。你可以自由地将容器镜像的最新更新从外部注册中心同步到 Pulp,然后让最新的变化在开发或其他环境中可用。你可以对你认为必要的仓库进行任何修改,并促进容器内容被测试团队或其他环境使用。如果出了问题,你可以回滚到早期版本。

4、只同步你需要的内容

如果你想使用 Pulp 来创建一个容器子集的本地缓存,而不是一个完整的容器注册中心,你可以从一个远程源过滤选择容器。使用 Pulp,有多种内容同步选项,以便你只存储你需要的内容,或配置你的部署,按需缓存内容。

5、在断线和空气隔离的环境中工作

如果你在一个断线或受限制的环境中工作,你可以从一个连接的 Pulp 实例中同步更新到你断连的 Pulp。目前,有计划为 Pulp 实现一个原生的空气隔离功能,以促进完全断线的工作流程。同时,作为一种变通方法,你可以使用 Skopeo 等工具来下载你需要的容器镜像,然后将它们推送到你断线的 Pulp 容器注册中心。

还有更多!

通过 Pulp,你还可以从容器文件中构建容器,将私有容器推送到仓库,并在整个组织中分发这些容器。我们将在未来的文章中对这个工作流程进行介绍。

如何开始

如果你对自我托管你的容器注册中心感兴趣,你现在就可以 安装 Pulp。随着 Pulp Ansible 安装程序的加入,安装过程已经被大量自动化和简化了。

Pulp 有一个基于插件的架构。当你安装 Pulp 时,选择容器插件和其他任何你想管理的内容插件类型。如果你想测试一下 Pulp,你今天就可以评估 Pulp 的容器化版本。

如果你有任何问题或意见,请随时在 Freenode IRC 的 #pulp 频道与我们联系,我们也很乐意在我们的邮件列表 [email protected] 中接受问题。


via: https://opensource.com/article/21/5/container-management-pulp

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

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

这篇文章介绍 Pulp,一个开源仓库管理解决方案,它的使用范围和功能在不断增长。

Foreman 是一个强大的管理和自动化产品,它为 Linux 环境的管理员提供了企业级的解决方案,它适用于四个关键场景:供应管理、配置管理、补丁管理和内容管理。Foreman 中内容管理功能的一个主要组成部分是由 Pulp 项目提供的。虽然 Pulp 是这个产品的一个组成部分,但它也是一个独立的、自由开源的项目,自身也在取得巨大的进步。

让我们来看看 Pulp 项目,特别是最新版本 Pulp 3 的功能。

什么是 Pulp?

Pulp 是一个管理软件包仓库,并将其提供给大量的消费者的平台。你可以使用 Pulp 在不同环境中镜像、同步、上传和推广各种内容,如 RPM、Python 包、Ansible 集合、容器镜像等。如果你有几十个、几百个甚至上千个软件包,并需要更好的方式来管理它们,Pulp 可以帮助你。

最新的主要版本是 Pulp 3,它于 2019 年 12 月发布。Pulp 3 是多年来收集用户需求的结晶,并对现有的 Pulp 架构进行了全面的技术改造,以提高可靠性和灵活性。另外,它还包含了大量的新功能。

谁在使用 Pulp?

大多数情况下,在 Pulp 用户管理的企业软件环境中,内容的稳定性和可靠性是最重要的。Pulp 用户希望有一个平台来开发内容,而不用担心仓库可能会消失。他们希望以安全的方式在其生命周期环境的不同阶段推广内容,优化磁盘空间并扩展环境以满足新的需求。他们还需要灵活处理各种内容类型。Pulp 3 提供了这些以及更多功能。

在一处管理各类内容

安装 Pulp 后,你可以为你计划管理的内容类型添加内容插件,将内容镜像到本地,添加私人托管的内容,并根据你的需求混合内容。例如,如果你是 Ansible 用户,而你又不想在 Ansible Galaxy 上托管你的私有内容,你可以添加 Pulp Ansible 插件,镜像你所需要的公共 Ansible 内容,并将 Pulp 作为一个内部平台,在你的组织中管理和分发可扩展的公共和私有 Ansible 角色和集合的混合。你可以用任何内容类型执行此操作。有各种各样的内容插件可供选择,包括 RPM、Debian、Python、容器和 Ansible 等等。还有一个文件插件,你可以用它来管理 ISO 镜像等文件。

如果你没有找到你所需的内容类型插件,Pulp 3 引入了新的插件 API 和插件模板,你可以轻松创建一个属于自己的 Pulp 插件。你可以根据插件编写指南自动生成一个最小可用的插件,然后从那里开始构建。

高可用性

在 Pulp 3 中,从 MongoDB 到 PostgreSQL 的转变促进了性能和数据完整性的重大改进。Pulp 用户现在有了一个完全开源的技术栈,它可以提供高可用性(HA)和更好的扩展性。

仓库版本管理

使用 Pulp 3,你可以毫无风险地进行试验。每次你添加或删除内容时,Pulp 都会创建一个不可变的仓库版本,这样你就可以回滚到早期的版本,从而保证操作的安全性和稳定性。通过使用发布和分发,你可以公开一个仓库的多个版本,你可以将其作为回滚到早期版本的另一种方法。如要回滚,你可以简单地将你的分发指向一个旧的发布。

磁盘优化

任何软件开发环境的主要挑战之一是磁盘优化。如果你不断地下载包,例如,你今天需要但明天不再需要的仓库每日构建,那么磁盘空间将很快成为一个问题。Pulp 3 的设计已经考虑到了磁盘优化。当默认下载并保存所有的软件包,你也可以启用“按需”或“流式”选项。“按需”选项只下载和保存客户要求的内容,从而节省了磁盘空间。使用“流式”选项,它也会根据客户的要求进行下载,但它不会将内容保存在 Pulp 中。这对于同步内容是非常理想的,例如,从一个每日仓库同步,并让你在后期免于执行磁盘清理。

多种存储选项

即使进行了最好的磁盘优化,随着项目的发展,你可能需要一种方法来扩展你的部署以满足需求。除了本地文件存储,Pulp 还支持一系列的云存储选项,如 Amazon S3 和 Azure,以确保你可以扩展满足你的部署需求。

保护你的内容

Pulp 3 可以选择添加 Certguard 插件,该插件提供了一个支持 X.509 的 ContentGuard,它要求客户在收到 Pulp 的内容之前提交证明其对内容的权利的证书。

只要客户端的证书没有过期,且由证书颁发机构签署,并在创建时存储在 Certguard 上,任何客户端在请求时提供基于 X.509 或基于 Red Hat 订阅管理证书都将获得授权。客户端使用安全传输层(TLS)提供证书,这证明客户端不仅有证书,还有它的密钥。你可以放心地开发,知道你的内容正在受到保护。

Pulp 团队也在积极为整个 Pulp 部署一个基于角色的访问控制系统,这样管理员就可以确保正确的用户可以访问正确的环境。

在容器中试用 Pulp

如果你有兴趣亲自评估 Pulp 3,你可以使用 Docker 或 Podman 轻松在容器中安装 Pulp 3。Pulp 团队一直在努力简化安装过程。你也可以使用 Ansible 剧本 来自动完成 Pulp 3 的全部安装和配置。


via: https://opensource.com/article/20/8/manage-repositories-pulp

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

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