Sample Environment Generator

创建一个样本 Heat 环境变量文件的通用工具将带来两个主要好处

  • 一致的格式和细节。每个环境变量文件都将包含参数描述、类型、默认值等。

  • 易于更新。参数可以从模板中动态读取,这使得样本环境可以在参数添加或更改时自动更新。

问题描述

目前我们的样本环境是手动编写的,在包含的内容方面缺乏一致性。大多数不包含对所有参数的描述,几乎没有包含参数的类型或默认值。

此外,环境变量文件经常会过时,因为开发人员必须记住在更改给定功能或服务的参数时手动更新它们。这既繁琐又容易出错。

环境变量缺乏一致性也会给 UI 带来问题,UI 希望使用来自环境变量的细节来改善用户体验。当环境变量手动创建时,这些细节很可能会被遗漏。

提议的变更

概述

一个类似于 oslo.config 生成器的新的工具将允许我们消除这些问题。它将获取有关环境的一些基本信息,并使用模板中的参数定义来生成样本环境变量文件。

生成的环境应包含以下信息

  • 人类可读的标题

  • 描述

  • parameter_defaults,描述环境中所有可用的参数

  • 可选的 resource_registry,包含任何必要的条目

最初,标题和描述将只是注释,但最终我们希望在 Heat 本身中获得对这些字段的支持,以便它们可以成为顶级键。

理想情况下,该工具还应能够自动更新 capabilities map。在某个时候,可能会对该部分进行一些重构以消除重叠,但在过渡期间这将很有用。

这也是对 tripleo-heat-templates 的 environments 目录进行组织的好机会。目前它主要是一个包含所有可能环境的扁平目录。添加子目录以将相关环境分组,以便更容易找到它们会很好。

非生成的环境将在有意义的情况下被生成的环境取代,或者为了生成的环境而弃用。在后一种情况下,旧环境将保留一个周期,以允许用户过渡到新环境。

替代方案

我们可以向 yaml-validate 工具添加更多检查,以确保环境变量文件包含所需的信息,但这仍然需要更多开发人员的时间,并且无法解决参数更改时的维护问题。

安全影响

其他最终用户影响

用户应该通过更完整、文档更完善的样本环境获得改进的部署体验。引用现有样本环境的现有用户可能需要切换到新的生成环境。

性能影响

没有运行时性能影响。初步测试表明,生成所有环境可能需要相当长的时间,但这并不是开发人员经常需要做的事情。

其他部署者影响

参见 End User Impact

开发人员影响

开发人员需要为该工具在输入文件中编写条目,而不是直接编写样本环境。该工具的输入格式将记录在案,因此不应该太困难。

当现有环境被生成的环境取代时,进行更改的开发人员应编写发布说明,以便将其传达给用户。

实现

负责人

主要负责人

bnemec

其他贡献者

jtomasek

工作项

  • 更新提议的工具以反映最新的设计决策

  • 将现有环境转换为生成的环境

依赖项

没有直接依赖项,但从长远来看,我们希望 Heat 具有一些附加功能,以便这些环境可以更轻松地被 UI 消耗。然而,在 PTG 上达成一致,我们将并行进行这项工作并进行 Heat 更改,以便我们尽快获得更改的一些好处。

测试

CI 中使用的任何环境都应使用该工具生成。我们希望添加一个作业来执行该工具,可能是一个作业来确保被测补丁中的任何更改都反映在环境变量文件中。

文档影响

我们需要记录输入文件的格式。

参考资料

工具的初始提议版本

https://etherpad.openstack.org/p/tripleo-environment-generator