红帽 Ansible 自动化平台 2.6 的发布标志着一个关键里程碑。在开始升级之前,您需要了解以下三个重要事项,以便更顺利地完成过渡:

  • 这是最后一个包含 RPM 安装程序的版本。采用 RPM 安装方法的红帽 Ansible 自动化平台 2.6 仅适用于红帽企业 Linux(RHEL)9,且 RPM 安装程序将在此版本后停用。Ansible 自动化平台 2.7 将仅支持容器化安装方法、红帽 OpenShift Operator 或我们的云服务,因此建议现在就开始准备过渡。
  • Ansible 自动化平台 2.6 是一个基石版本。该平台未来版本的每个升级路径都必须通过 2.6 完成,这是无法绕过的必经之路。
  • RHEL 8 支持已终止。如果您仍在使用 RHEL 8,则需要先迁移到 RHEL 9(或 RHEL 10),然后再升级到 Ansible 自动化平台 2.6。

规划升级

在规划过渡到 Ansible 自动化平台 2.6 时,应考虑两个重要因素来制定升级计划:

一次只能变更一项内容。 无论是底层操作系统(OS)、安装方法还是产品版本,安装程序每次运行仅处理一项变更。这意味着您可能需要多次运行安装程序。有关其工作原理的详细信息,请查看官方文档

大多数情况下需要进行全新安装。 除少数特定场景外(例如在同一架构上从 2.5 升级至 2.6,或在某些红帽 OpenShift Operator 部署中),您都需要部署新的 Ansible 自动化平台 2.6 实例,然后将您的配置迁移到其中。

这就引出了关键问题:如何将现有配置迁移到新实例?要回答这个问题,首先要理解一个事实:Ansible 自动化平台配置存储在 PostgreSQL 数据库中。升级策略的核心就在于如何将这些数据迁移到更新的环境。

升级方法

迁移到 Ansible 自动化平台 2.6 有两条路径:以数据库为中心的迁移,或以 API 为中心的迁移。要做出正确选择,取决于您的环境、具体需求以及您愿意做出的权衡。

以数据库为中心的方法将 Ansible 自动化平台视为有状态系统,其中数据是事实来源。以 API 为中心的方法则将该平台视为配置即代码(CaC),其事实来源位于配置文件中。请参阅下表,评估每种方法的技术注意事项:

 

以数据库为中心

以 API 为中心

理念

数据库是事实来源

配置即代码是事实来源

主要工具

ansible.containerized_installer 集合与设置脚本(备份、恢复、升级)

ansible.controller 集合、REST API

基础架构需求

如需多次迁移,可能需要中间环境

仅需源平台和目标平台

迁移内容

所有内容,包括作业历史记录、用户、密码、日志等

仅配置定义(不包括作业历史记录或日志)

起始版本

必须基于 Ansible 自动化平台 2.4 或更高版本。旧版本需要先升级到 2.4

可从任意版本的 Ansible 自动化平台或 Tower 导出(但架构差异可能需要额外处理)

目标选项

任何自助管理式 Ansible 自动化平台(容器化或红帽 OpenShift Operator)

任何 Ansible 自动化平台,包括托管式云服务产品

密钥

数据库 SECRET_KEY 自动迁移,保留所有密钥

需额外处理(见下文备注)

技术债务

完全继承,包括孤立对象、旧日志等一切内容

基于文本的中间状态允许您在导入之前清理、重组或删除对象

数据格式

自动处理

配置文件可能需要在导出和导入格式之间进行编辑

以数据库为中心的迁移

以数据库为中心的迁移是经过文档记录且享有全面支持的路径,可在升级过程中保留并迁移整个数据库。其挑战在于需要执行复杂的组合步骤,才能完成这支“升级之舞”。您可能需要从 RHEL 8 迁移到 RHEL 9,从 RPM 迁移到容器化,并从 Ansible 自动化平台 2.4/2.5 迁移到 2.6——其中的每项变更都是一个单独步骤,需要配备各自的基础架构。 

在这个过程中,可能需要置备和管理大量中间环境。此外,根据迁移工作的起点与终点目标、环境规模以及所对应的数据库的大小,这项任务可能会非常耗时。

重要提示:如果这种复杂性促使您考虑使用 Ansible 自动化平台的托管式云服务产品,请注意,需要提交支持工单才能将数据库上传到托管服务。相关流程已记录在此处。若要自行完成迁移操作,需要采用以 API 为中心的方法。

以 API 为中心的迁移

这种方法不受红帽正式支持(但实现该迁移技术的各个独立组件受支持)。也就是说,它的速度可能会显著加快,尤其是在大型环境中。由于是直接一步迁移到目标平台,因此无需中间安装。

采用此方法时,需要通过 API 调用导出 Ansible 自动化平台的配置,并将其存储在本地(例如存储在配置文件或临时数据库中)。存储后,可以根据需要修改这些文件,之后也可以通过 API 将配置恢复到另一个平台上。此方法还有一个额外优势:它将配置即代码(CaC)引入您的工作流中,为您今后采用 CaC 方法管理平台奠定了基础。

此方法有哪些需要权衡的方面?您将丢失作业历史记录(可通过外部日志聚合器缓解),并且需要谨慎处理密钥(可通过外部密钥管理器缓解)。您可能还需要编辑导出的配置文件,确保其格式正确以供导入,尤其是私有自动化中心和事件驱动的 Ansible 对象。

关于密钥的备注

凭据和通知密钥存储在配置数据库中,并由数据库 SECRET_KEY 加密。由于这些数据已加密,其值完全无法通过 API 导出。因此,要获取配置中的密钥,必须具备数据库服务器的 root 访问权限。鉴于此操作会以纯文本形式暴露密钥,因此需要极其谨慎地进行处理,例如将密钥重新加密到 Ansible 密钥库中。 

但是,如果您使用的是外部密钥管理器(如 HashiCorp Vault),则不会存在此问题,因为这些密钥不会存储在 Ansible 自动化平台中。或者,如果需要管理的密钥较少,也可以直接将密钥填充到新平台中。

两种方法的注意事项

无论您选择哪条路径,都请注意:外部集成和 API 令牌可能需要重点关注。 

Ansible 自动化平台 2.5 引入了自动化网关,这是一个统一前端,可将自动化控制器、Ansible 自动化中心和事件驱动的 Ansible 控制器连接到单个接口中。这将许多 API 端点转移到了新路径。虽然 2.6 版本已对这些集成端点保持向后兼容,但在未来版本中,需要对这些端点进行更新。此外,平台发出的大多数令牌将需要重新生成并重新分发,可能需要置备额外服务器,并且负载平衡器也需要更新为新的网关服务。

外部托管的数据库

对于使用外部托管数据库的客户,还有一些注意事项。  首先,Ansible 自动化平台 2.4 使用 Postgres 13,2.5 版本升级为 Postgres 15,2.6 版本则升级为 PostgreSQL 15。此外,Ansible 自动化平台 2.6 还支持客户提供的 PostgreSQL 16 和 17 数据库。此数据库升级流程是迁移和“更新之舞”中的关键考量因素,也是客户必须经历此更新流程才能复用现有数据库的关键原因。  具体而言,对于 Ansible 自动化平台 2.5 及更高版本,客户提供的数据库中必须启用 Unicode 国际组件(ICU)。大多数主流数据库提供商(如 EDB、 Amazon Web Services Relational Database Service(AWS RDS)和 Azure SQL 数据库)虽提供此功能,但默认处于未启用状态。正是这种数据库兼容性问题,导致我们不能只更新现有数据库中的架构。

Playbook 兼容性

升级 Ansible 自动化平台时,默认执行环境中附带的 ansible-core 版本也会随之升级。好消息是,您始终可以在新版本平台上运行旧版执行环境。虽然可以保持向后兼容性,但强烈建议进行升级,以便利用新功能和安全修复。

如果升级执行环境,意味着升级至新版本的 Ansible 核心,这可能会带来一些变化,  具体如下:

从 Ansible 自动化平台 2.4 升级至 2.6(从 ansible-core 2.15 升级至 2.16)

这是次要升级。最显著的变化是,条件语句中的一些警告现已被视为错误。除此之外,影响微乎其微。

升级至 ansible-core 2.18(Ansible 自动化平台 2.6 中的可选执行环境)这是 Ansible 自动化平台 2.6 的一个可选受支持执行环境,此升级会带来更多显著变化。具体包括:

  • 目标节点上的 Python 2.7 和 3.6 版本不再受支持。这意味着您无法再使用此执行环境对 RHEL 6 主机进行操作。对于 RHEL 7 主机,需要安装 Python 3.8(可通过红帽软件集合获取),才能使用 Ansible 自动化平台进行自动化。
  • 您的执行环境中现在包含的 Python 版本是 Python 3.11。自定义和第三方 Python 库需要更新至兼容 3.11 的库。
  • Python 正在推进“废弃电池”清理计划。 在未来几个 Python 版本中,PEP 594 将从标准库中删除无人维护、存在安全隐患和已过时的库。Python 3.11 开始发出弃用警告,版本 3.12 中删除了部分库,版本 3.13 中则删除了大量库。

对于绝大多数客户而言,这并非迫在眉睫的问题,但不妨现在就关注弃用警告,以便您做好应对准备。

有关受支持的 ansible-core 版本的完整详情,请参阅红帽官方支持政策

过渡到 Ansible 自动化平台 2.6 不仅仅是一次版本更新,更是一项战略举措,为下一代自动化奠定了基础。通过选择最适合您当前基础架构的迁移路径,您可以实现富有弹性的自动化、确保安全防护,并为未来发展做好准备。

其他资源

资源

实现业务自动化的 5 个步骤

本电子书探讨了红帽服务如何帮助您采用企业级自动化来统一团队、标准化流程以及实现 IT 转型。

关于作者

Ryan Bontreger is a Services Architect with Red Hat Consulting. He has been delivering automation solutions for public sector customers with Red Hat since 2015. As a leader on the Americas Automation Platform Services team, Ryan has been designing and delivering Ansible solutions for customers across the globe, with a focus and dedication on the automation developer experience and automation at scale.

UI_Icon-Red_Hat-Close-A-Black-RGB

按频道浏览

automation icon

自动化

有关技术、团队和环境 IT 自动化的最新信息

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

open hybrid cloud icon

开放混合云

了解我们如何利用混合云构建更灵活的未来

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Virtualization icon

虚拟化

适用于您的本地或跨云工作负载的企业虚拟化的未来