GUI 部署配置改进

TripleO UI 部署配置基于部署计划(tripleo-heat-templates)提供的启用环境,并让用户设置参数值。

本规范提出改进此方法。

蓝图:https://blueprints.launchpad.net/tripleo/+spec/deployment-configuration-improvements

问题描述

TripleO UI 的总体目标是在部署过程中引导用户,并提供相关信息,以便用户无需在文档中搜索上下文或分析 TripleO 模板。

目前部署配置方案中存在一组问题。解决这些问题应能改善在做出部署设计决策时的用户体验。

关于环境使用和相关参数的重要信息通常包含在环境文件本身中的注释中。GUI 无法使用这些信息。我们目前使用 capabilities-map.yaml 来定义环境元数据以规避此问题。

  • 随着环境数量的增加,保持 capabilities-map.yaml 的最新状态变得困难。当添加某个环境时,capabilities-map.yaml 通常不是由同一开发人员更新的,这导致在稍后添加环境描述时出现不准确的情况。

  • 环境之间相互依赖,并且在使用时可能发生冲突

  • 没有办法列出并让用户设置与特定环境相关的参数。这些参数目前列在环境中作为注释 - GUI 无法使用(例如:[1))

  • 没有足够的手段来组织 heat validate 产生的结果参数

  • 并非 tripleo-heat-templates 中定义的所有参数都设置了正确的类型,并且不包含 Hot Spec 提供的所有相关信息(约束…)

  • 相同的参数在 tripleo-heat-templates 中的多个模板中定义,但它们的定义不同

  • 当用户未提供值时,应自动生成参数的列表硬编码在部署工作流中

提议的变更

概述

  • 建议将环境元数据跟踪为 Heat 文件的一部分,以跟踪有关环境的附加信息(部分正在进行中 [2])。类似的概念已存在于 heat 资源中 [3]。同时,更新 tripleo-common 环境列表功能,以读取环境并包含环境元数据。

    每个 TripleO 环境文件应定义

    metadata:
      label: <human readable environment name>
      description: <description of the environment purpose>
    
    resource_registry:
      ...
    
    parameter_defaults:
      ...
    
  • 有了环境元数据,capabilities-map.yaml 的用途将简化为定义环境之间的分组和依赖关系。

  • 在 TripleO UI 中实现环境参数列表

  • 为了组织参数,我们应该使用 ParameterGroups。(相关讨论:[4])

  • 确保相同的参数在 tripleo-heat-templates 中以相同的方式定义。可能存在例外情况,但在那些情况下,必须确保定义相同参数的两个模板不会同时使用。

  • 更新 TripleO 模板中的参数定义,以便类型实际匹配预期的参数值(例如,‘string’ 与 ‘boolean’)。这将导致 GUI 中使用正确的输入类型

  • 为应自动生成的参数定义自定义约束。

替代方案

列出与环境相关的参数的潜在替代方案是

  • 使用 Parameter Groups 将模板参数与环境匹配。此解决方案将模板与环境绑定,并使模板混乱。

  • 由于环境元数据的引入取决于 Heat 接受并实现此功能,因此替代解决方案是像现在一样在 capabilities map 中保留标题和描述

安全影响

没有显著的安全影响

其他最终用户影响

解决上述问题可以大大改善 TripleO UI 工作流程,并使部署配置更加简化。

性能影响

描述的方法允许引入 Heat 验证的缓存,而 Heat 验证是目前最昂贵的操作。只有在更新或切换部署计划时,缓存才会失效。

其他部署者影响

与最终用户影响相同

开发人员影响

实现

负责人

主要负责人

jtomasek

其他贡献者

rbrady

工作项

依赖项

  • Heat 环境元数据讨论 [2]

  • Heat 参数组讨论 [3]

测试

这些更改应由 tripleo-common 和 GUI 中的单元测试覆盖

文档影响

这项工作的一部分应该是如何定义 TripleO 环境以及 capabilities-map.yaml 的适当文档

参考资料

[1] https://github.com/openstack/tripleo-heat-templates/blob/b6a4bdc3e4db97785b930065260c713f6e70a4da/environments/storage-environment.yaml

[2] http://lists.openstack.org/pipermail/openstack-dev/2016-June/097178.html

[3] https://docs.openstack.org/developer/heat/template_guide/hot_spec.html#resources-section

[4] http://lists.openstack.org/pipermail/openstack-dev/2016-August/102297.html