TripleO 快速入门

https://blueprints.launchpad.net/tripleo/+spec/tripleo-quickstart

我们需要一种通用的方法,让开发者/CI 系统能够快速搭建虚拟环境。

问题描述

我们目前为此用例记录的工具是 instack-virt-setup。但是,该工具存在两个主要问题,并且缺少一些功能

  • 没有上游 CI 使用它。这意味着我们无法手动测试更改之外的任何更改。这给添加缺失的功能带来了巨大的障碍。

  • 它依赖于 incubator 仓库[1] 中的一个复杂的 bash 脚本迷宫才能工作。这给新用户带来了障碍,因为找到并浏览该迷宫可能需要相当长的时间。

  • 它无法使用预构建的 undercloud 镜像,而是从头开始,重新执行 CI 和每个 tripleo 开发者在每次运行时所做的工作。从预构建的 undercloud 和预先烘焙的 overcloud 镜像开始,可以为 CI 系统和开发者测试环境节省大量时间。

  • 它也没有创建这个 undercloud 镜像的方法。

  • 还有一些较小的缺失功能,例如通过 instackenv.json 自动标记 fake baremetal,并添加 profile capability 标签。实现这些功能可能不会太痛苦,但即使是小的更改,没有 CI 也会带来一些麻烦。

提议的变更

概述

  • 导入 RDO 正在使用的 tripleo-quickstart[2] 工具用于此目的。该项目是一组 ansible roles,可用于构建 undercloud.qcow2,或者替代地,消费它。它模仿了 instack-virt-setup,并且 instack-virt-setup 中可配置的任何内容在 tripleo-quickstart 中都是可配置的。

  • 使用第三方 CI 对这个新项目进行自检。为了设置一个类似于开发者和用户可以使用此工具的环境,我们需要一个 baremetal 主机。目前对这个项目进行自检的 CI 设置在 ci.centos.org[3] 上,将它设置为第三方 CI 并不难。

替代方案

  • 另一种选择是继续使用 instack-virt-setup 用于此用例。但是,我们仍然需要为 instack-virt-setup 添加 CI。这仍然需要在 tripleoci 之外进行,因为它需要一个 baremetal 主机。除非有人愿意设置它,否则这实际上不是一个可行的替代方案。

  • 同样,我们也可以使用其他方法来创建虚拟环境。但是,这种替代方案也受到需要第三方 CI 进行验证的限制。

安全影响

其他最终用户影响

使用预构建的 undercloud.qcow2 极大地简化了 virt-setup 指令,因此出错的可能性更小。这将带来更好的 TripleO 新用户体验。

性能影响

使用预构建的 undercloud.qcow2 将从 CI gate 作业中节省 30 分钟以上的时间。

其他部署者影响

没有理由认为相同的 undercloud.qcow2 不能用于部署真实的 baremetal 环境。许多 TripleO 生产部署都使用了 VM undercloud。

开发人员影响

undercloud.qcow2 方法使得重现 CI 中运行的内容变得更加容易和快速。这将带来更好的开发者体验。

实现

负责人

主要负责人

  • trown

工作项

  • 将 RDO 社区的现有工作导入到 openstack 命名空间下,置于 TripleO 伞下。

  • 设置在 ci.centos.org 上运行的第三方 CI 对这个新项目进行自检。(我们可以只更新当前的 CI[3] 指向新的上游位置)

  • 需要更新虚拟环境设置的文档。

依赖项

目前,唯一可用的 undercloud.qcow2 是在 RDO 中构建的。我们需要在 tripleo-ci 中构建一个,或者使用在 RDO 中构建的一个。

测试

我们需要一种 CI 虚拟环境设置的方法。这在 tripleoci 中是不可行的,因为它需要一个 baremetal 主机。我们需要依赖第三方 CI 来实现这一点。

文档影响

总而言之,这将大大简化文档。

参考资料

[1] https://github.com/openstack/tripleo-incubator/tree/master/scripts [2] https://github.com/redhat-openstack/tripleo-quickstart [3] https://ci.centos.org/view/rdo/job/tripleo-quickstart-gate-mitaka-delorean-minimal/