TripleO 部署验证

我们需要在 TripleO 的各个部署阶段执行验证的方法。

问题描述

TripleO 部署,以及更广泛地说,所有 OpenStack 部署,都非常复杂,容易出错,并且高度依赖于环境。一套合适的工具可以帮助工程师尽早发现潜在问题并修复它们,然后再继续部署。

已经有人开发了这样的工具 [1],但是它们看起来更像是一堆随机脚本,而不是 TripleO 中一个良好集成的解决方案。我们需要从一个库中公开验证检查,以便可以无差别地从 GUI 或 CLI 调用它们,并与 TripleO 部署工作流程无缝集成。

提议的变更

我们建议扩展 TripleO Overcloud 部署 Mistral 工作流程 [2],以包含用于验证检查的操作。

这些操作至少需要能够

  • 列出验证

  • 运行和停止验证

  • 获取验证状态

  • 持久化和检索验证结果

  • 允许按“部署阶段”分组验证,并执行组操作

运行验证将在工作流程中实现,以确保节点满足某些期望。例如,裸机验证可能需要节点首先在 ramdisk 上启动。

可以使用 mistral execution-create 命令启动工作流程执行,并可以使用 mistral execution-update 命令通过将工作流程状态设置为 SUCCESS 或 ERROR 来停止它。

工作流程的每次运行(工作流程执行)都存储在 Mistral 的 DB 中,并可供以后使用。工作流程执行对象包含有关工作流程及其执行的所有信息,包括所有输出数据和组成工作流程的所有任务的状态。

通过引入合理的验证工作流程命名,我们可以使用工作流程名称来识别应运行验证的阶段,并触发给定阶段的所有验证(例如 tripleo.validation.hardware.undercloudRootPartitionDiskSizeCheck)

使用命名约定,用户还可以注册一个新的验证工作流程并将其添加到现有的工作流程中。

替代方案

一种替代方案是在 TripleO 中提供一组脚本,供工程师在部署的不同阶段运行。这种解决方案不是最优的,因为它需要大量手动工作,并且不能与 UI 集成。

另一种替代方案是构建我们自己的 API,但这需要付出更多的努力来创建和维护。这个话题已经在邮件列表中进行了深入讨论。

安全影响

验证框架的全部意义在于允许在节点上运行脚本,从而在部署的不同阶段从控制节点访问已部署的节点。需要特别注意使用安全的方法授予对目标节点的访问权限,并确保只能从库中执行受信任的脚本。

其他最终用户影响

我们预计由于早期问题检测,部署时间会缩短。

性能影响

无。

其他部署者影响

无。

开发人员影响

开发人员需要更新 TripleO CI 以应对更改,并负责在需要时修复 CI。

实现

负责人

主要负责人

  • shadower

  • mandre

工作项

所需的工作项是

  • 开发 tripleo-common Mistral 操作,提供验证工作流程所需的所有功能。

  • 根据实际部署经验编写一组初始验证检查,从将现有的验证 [1] 移植到与已实现的 Mistral 操作一起工作开始。

实现这些更改的所有补丁都必须通过 CI,并根据需要添加额外的测试。

依赖项

我们依赖于 tripleo-mistral-deployment-library [2] 的工作。

测试

应更新 TripleO CI 以测试更新的 tripleo-common 库。

文档影响

Mistral 操作和工作流程具有自文档化的特性,并且可以通过在命令行上运行“mistral workflow-list”或“mistral action-list”轻松地进行内省。但是,更新的库必须具有良好的文档记录,并符合 OpenStack 标准。需要在 tripleo-common 和 tripleo-docs 存储库中提供文档。

参考资料