2021年12月,CentOS 8将达到使用寿命,被CentOS Stream取代。CentOS之前的迭代和CentOS Stream之间的主要变化之一是没有小版本。Centos Stream采用了一个连续的发布周期。从今年年初开始,Foreman社区的开发者开始看到CentOS Stream由于持续发布而提供的更早的错误检测和补丁的好处。我们不再需要等待下一个版本来利用最新的变化和错误修复。一位资深的Linux社区爱好者指出,此举也使RHEL开发者比以往更接近FOSS社区。
但是,如果你是一个拥有成百上千台服务器的管理员,你可能希望对新的软件包何时被添加到特定的服务器上进行控制。如果你正在寻找一个免费的开源工具,帮助你确保生产服务器的稳定性,同时允许你安全地从Centos Stream拉入最新的变化用于开发和测试,这就是Foreman可以帮助你的地方。通过Foreman,你可以在生命周期环境的各个阶段管理你的Centos Stream内容。
什么是Foreman?
Foreman是一个完整的物理和虚拟服务器的生命周期管理工具。有了Foreman,系统管理员有能力轻松实现重复性任务的自动化,快速部署应用程序,并主动管理内部或云中的服务器。Foreman为配置管理、配置管理和监控提供企业级解决方案。由于其插件架构,Foreman可以以无数种方式进行扩展。使用Katello插件,你可以把Foreman作为一个完整的内容管理工具来管理CentOS流,以及其他许多内容类型。
通过Foreman和Katello,你可以准确地定义你希望每个环境包含哪些软件包。例如,生产环境可能使用已被验证为稳定的软件包,而开发环境可能需要最新和最大的可用软件包版本。你还可以跨生命周期环境推广内容视图。让我们来看看Foreman是如何完成这个任务的。
我们在这篇文章中提到了Web UI,但Foreman也有一个强大的CLI和API。Katello插件为Pulp项目提供了一个工作流和Web UI,你可以在这篇文章中了解更多。我们在这里也提供了一个简单的工作流程,但Foreman和Katello项目提供了许多不同的配置选项,以满足你的具体需求。
本文假设Foreman和Katello已经安装完毕。关于如何做的更多信息,请参阅Katello安装手册。
创建一个产品
第一步是在Foreman中创建一个产品。该产品的功能是作为一个内部标签来存储CentOS Stream仓库。
- 在Foreman网页界面,导航到内容>产品,然后点击创建产品。
- 在 "名称"字段中,为产品输入一个名称。Foreman会根据你输入的名称 自动完成Label字段**,** 这一点以后不能再改变。
为产品添加 CentOS Stream 仓库
现在您有了一个产品,您可以使用 AppStream 和 BaseOS 仓库的 URL,并将它们添加到您的新产品中。
- 在 Foreman Web UI 中,导航到内容>产品,选择你要使用的产品,然后点击新仓库。
- 在 "名称"字段中,输入存储库的名称;例如,Centos8StreamBaseOS。Foreman 会根据你输入的Name 自动完成Label字段。
- 从Type列表中,选择版本库的类型,然后选择Yum。
- 在URL字段中,输入 CentOS Stream Baseos 仓库的 URL 作为来源: http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/
- 选择下载策略列表。默认是按需下载 - 这意味着Katello将只下载元数据。如果你想下载所有的软件包,改成立即下载,这样可以下载所有的软件包,可能会达到20-30GB。
- 确保选择 "同步镜像"复选框。这个选项确保在同步过程中,不再是上游仓库的一部分的内容被删除。
- 点击保存。
重复这些步骤,添加带有 URL 的 AppStream 仓库,例如mirror.centos.org/centos/8-st…确保你使用最近的官方 CentOS 镜像。
要执行立即同步,在你的产品窗口,点击立即同步。最初的同步可能需要一些时间。你可以从内容>同步状态中查看同步状态**。**
同步完成后,您可以在主机>操作系统中查看新的CentOS Stream操作系统。请随意编辑名称和描述以满足您的要求。
如果您计划使用Ansible或Puppet等配置管理软件,Foreman会自动创建一个操作系统报告。您可以在Administe > Settings > Ignore facts for operating system 中关闭此选项。重命名操作系统以匹配配置管理软件中的名称是一个好主意。例如,对于Puppet,这将是CentOS 8。
定义您的基础设施的生命周期环境
应用程序生命周期是Foreman内容管理功能的一个核心概念。应用程序生命周期定义了一个特定系统及其软件在特定阶段的样子。例如,一个应用程序的生命周期可能很简单,你可能只有一个开发阶段和生产阶段。Foreman提供了以可控方式定制每个应用生命周期阶段的方法,以适应你的规范。
在这一点上,你必须创建你的生命周期环境路径。
- 在Foreman Web UI中,导航到Content>Lifecycle Environments。
- 点击New Environment Path,开始一个新的应用程序生命周期。
- 在名称字段中,为你的环境输入一个名称。
- 在描述字段中,为你的环境输入一个描述。
- 点击保存。
- 根据你的需要添加尽可能多的环境路径。例如,你可以创建开发、测试、 阶段和生产环境。要添加这些环境,点击添加新环境,完成名称和描述字段,并从先前的环境列表中选择先前的环境,这样你就可以按照你期望使用的顺序把它们连锁起来。
创建和发布一个内容视图
在Foreman中,内容视图是你的存储库在某个特定时间点的快照。内容视图提供了隔离软件包版本的机制,你想保留这种状态。内容视图有很多可配置的功能,你可以用它来进一步细化。为了本教程的目的,让我们保持简单。
- 在Foreman网页用户界面,导航到内容>内容视图,点击创建新视图。
- 在 "名称"字段中,为视图输入一个名称。Foreman会根据你输入的名称自动完成Label字段。
- 在 "描述"字段中,输入该视图的描述。
- 单击 "保存"以创建内容视图。
- 在新的内容视图中,单击Yum Content > Add Repositories在Repository Selection区域,单击Add。对于BaseOS和Appstream存储库,选择你想包括的软件包,然后点击添加存储库。
- 单击 "发布新版本",在 "描述"字段中,输入有关版本的信息以记录变化。
- 点击保存。
当你点击发布新版本时,你会创建一个你已经同步的所有内容的快照。这意味着你订阅此内容视图的每台服务器将只能访问与此生命周期环境相关的内容视图中的软件包版本。
每一个新的内容视图和后续版本都会首先发布到库环境,然后你可以在那里推广到其他环境。
跨生命周期环境推广内容
如果你已经测试了新的包,并且对一切都很稳定感到满意,你可以把你的内容视图推广到另一个生命周期环境。
- 导航到内容>内容视图,选择你想推广的内容视图。
- 点击内容视图的版本标签。
- 选择你要推广的版本,并在 "操作"栏中,单击 "推广"。
- 选择你要推广内容视图的环境,并单击 "推广版本"。
- 再次单击 "推广"按钮。这次选择生命周期环境,例如,测试,然后点击推广版本。
- 最后,再次点击推广按钮。例如,选择生产环境,然后点击推广版本。
被分配到该特定环境的服务器现在可以从一套更新的软件包中提取。
创建一个激活码
为了将CentOS Stream服务器注册到你在特定生命周期中定义的内容,你必须创建一个激活密钥。激活密钥是一种与服务器共享凭证的安全方法。这使用了一个叫做subscription-manager的工具,将CentOS Stream服务器订阅到内容。
当你创建了激活密钥后,将CentOS Stream订阅添加到激活密钥中。
- 在Foreman网页用户界面,导航到内容>激活密钥,然后点击创建激活密钥。
- 在名称字段中,输入激活密钥的名称。
- 在描述字段中,输入激活密钥的描述。
- 从环境列表中,选择要使用的环境。
- 从内容视图列表中,选择你刚才创建的内容视图。
- 点击保存。
从Foreman管理的内容创建一个CentOS流主机
现在一切都设置好了。随着您创建的内容包含在内容视图中,并在整个生命周期中推广,您现在可以准确地用您想使用的内容配置主机,并订阅您想让它们接收的更新。
要在Foreman中创建一个主机,导航到主机>创建主机。
- 在 "名称"字段中,为主机输入一个名称。
- 单击 "组织"和 "位置"选项卡,以确保将配置上下文自动设置为当前上下文。
- 从部署在列表中,选择裸机。
- 单击 "操作系统"选项卡。
- 从架构列表中,选择x86_64。
- 从操作系统列表中,选择CentOS_Stream 8。
- 勾选 "构建模式"框。
- 对于媒体选择,选择同步的内容来使用你之前同步的CentOS Stream内容。
- 从同步的 内容列表中,确保选择CentOS Stream。
- 从分区表列表中,对于这个演示,选择Kickstart默认,但有许多可用的选项。
- 在根密码领域,为你的新主机输入一个根密码。
- 点击界面标签,并点击编辑,并添加一个Mac地址。
- 点击参数标签,并确保存在一个提供激活密钥的参数。如果没有,添加一个激活密钥。
- 点击提交,保存主机条目。
现在新主机处于构建模式,这意味着当你打开它时,它将开始安装操作系统。
如果你导航到**主机>内容主机,**你可以看到你的主机订阅的全部细节,生命周期环境,以及内容视图。
这个例子只是对你在Foreman中管理和配置CentOS Stream内容的众多选项的一个小窥视。如果你想了解更多关于如何管理CentOS Stream版本,控制你的服务器可以访问的内容,以及控制和保护你的基础设施的稳定性的详细信息,请查看Foreman内容管理文档。有了所有CentOS流内容在您的控制之下,您可以创建和注册Centos流,只消费您指定的内容。关于配置的更多详细信息,请看Foreman配置文档。如果你有任何问题、反馈或建议,你可以在community.theforeman.org/找到 Foreman 社区。