使用 tripleo 第三方 CI 工具集 tripleo-quickstart

https://blueprints.launchpad.net/tripleo/+spec/use-tripleo-quickstart-and-tripleo-quickstart-extras-for-the-tripleo-ci-toolset

Devstack 作为 OpenStack 的参考 CI 部署,在 CI 和开发硬件上都能很好地运行。TripleO-Quickstart (TQ)`[3]`_ 和 TripleO-QuickStart-Extras (TQE) 可以在 CI 和本地开发硬件上提供类似 Devstack 的体验。TQE 通过在开发人员的系统上创建 bash 脚本,然后按正确的顺序执行它们,很好地分解了安装 undercloud 和部署 overcloud 所需的步骤。

问题描述

目前,有一部分 OpenStack 开发人员不熟悉 TripleO 和我们的 TripleO CI 工具。至关重要的是,这部分开发人员需要一个能够提供与 Devstack 目前为 OpenStack 开发人员提供的类似用户体验的工具。

从 TripleO-CI 重现部署失败对于 TripleO 之外的开发人员来说可能很困难。开发人员可能需要的不仅仅是执行部署的脚本。理想情况下,开发人员需要一个提供高级概述、分步安装过程(附带文档)以及将本地补丁或 Gerrit 中的补丁注入构建过程的方法的工具。

此外,可能还有 TripleO 之外的团队希望将额外的代码或步骤集成到部署中。在这种情况下,CI 代码的可组合性至关重要,以便其他人可以插件、扩展并创建自己的部署步骤。

提议的变更

概述

用 TQ 和 TQE 替换驱动 tripleo 部署的 openstack-infra/tripleo-ci 中的工具。

替代方案

另一种选择是将 TripleO-CI 分解为可组合的 shell 脚本,并改进用户体验 [4]

安全影响

目前尚无已知的额外安全漏洞。

其他最终用户影响

我们预计 TripleO 的新手将拥有更好的体验,能够重现 CI 的结果。

性能影响

使用预安装 rpm 的 undercloud 镜像应该提供更快的端到端部署。

其他部署者影响

目前没有。

开发人员影响

这才是真正的重点,并在规范的其他地方进行了讨论。但是,这应该为希望设置 TripleO 的开发人员提供高质量的用户体验。

TQE 提供了一个分步、文档完善的 TripleO 部署。此外,它易于启动和配置

bash quickstart.sh -p quickstart-extras.yml -r quickstart-extras-requirements.txt --tags all <development box>

所有内容都通过 bash shell 脚本执行,shell 脚本通过 jinja2 模板进行自定义。用户在本地运行时可以看到命令在执行之前。执行的命令的文档会自动为每次执行生成。

节点注册和内省示例:

  • Bash 脚本

    https://ci.centos.org/artifacts/rdo/jenkins-tripleo-quickstart-promote-newton-delorean-minimal-31/undercloud/home/stack/overcloud-prep-images.sh
    
  • 执行日志

    https://ci.centos.org/artifacts/rdo/jenkins-tripleo-quickstart-promote-newton-delorean-minimal-31/undercloud/home/stack/overcloud_prep_images.log.gz
    
  • 生成的 rst 文档

    https://ci.centos.org/artifacts/rdo/jenkins-tripleo-quickstart-promote-newton-delorean-minimal-31/docs/build/overcloud-prep-images.html
    

Overcloud 部署示例:

  • Bash 脚本

    https://ci.centos.org/artifacts/rdo/jenkins-tripleo-quickstart-promote-newton-delorean-minimal_pacemaker-31/undercloud/home/stack/overcloud-deploy.sh.gz
    
  • 执行日志

    https://ci.centos.org/artifacts/rdo/jenkins-tripleo-quickstart-promote-newton-delorean-minimal_pacemaker-31/undercloud/home/stack/overcloud_deploy.log.gz
    
  • 生成的 rST 文档

    https://ci.centos.org/artifacts/rdo/jenkins-tripleo-quickstart-promote-master-current-tripleo-delorean-minimal-37/docs/build/overcloud-deploy.html
    

分步部署:

有时,开发人员希望逐步执行部署步骤,手动运行命令,并尝试弄清楚部署中涉及的具体内容。开发人员可能还希望调整设置或添加补丁。要执行上述操作,部署不能只是端到端地运行。

TQE 可以设置 undercloud 和 overcloud 节点,然后只需添加已经配置好的脚本即可成功安装 undercloud 和部署 overcloud。本质上允许开发人员 ssh 到 undercloud 并从那里使用预构建的脚本来驱动安装。

  • 示例

    ./quickstart.sh  --no-clone --bootstrap --requirements quickstart-extras-requirements.txt --playbook quickstart-extras.yml --skip-tags undercloud-install,undercloud-post-install,overcloud-deploy,overcloud-validate --release newton <development box>
    

可组合性:

TQE 不是一个单一的工具,它是一个可组合的 Ansible role 集合。这些 Ansible role 可以存在于单个 Git 仓库中,也可以分发到多个 Git 仓库中。请参阅“附加参考”。

为什么有两个项目?为什么冒着增加复杂性的风险?TQ 和 TQE 的目标之一是不假设我们编写的代码适用于所有人、所有部署类型以及任何类型的基础设施。为了确保 TQE 开发人员不会阻止外部贡献(role、添加以及对 TQ 或 TQE 的自定义),最好将其解耦并使其尽可能可组合。毕竟,Ansible playbook 最好的用途是作为调用 role 的一种方法,以便任何人都可以使用各种 role 以最适合其目的的方式创建 playbook。

实现

负责人

主要负责人
  • weshayutin

其他贡献者
  • trown

  • sshnaidm

  • gcerami

  • adarazs

  • larks

工作项

  • 启用第三方测试 [1]

  • 启用 TQE 在 RH2 OVB OpenStack 云上运行 [2]

  • 将 TQE role 移动到一个或多个 OpenStack Git 仓库中,请参阅“附加参考”中列出的 role

依赖项

  • 需要就 [1] 做出决定

  • rdoproject 中启用第三方测试的工作需要完成

测试

目前正在进行一项测试,在 RH2 OVB 云上测试 TQE [2]。TQE 已经在使用 OVB 在其他云上进行了相当长一段时间的验证。

文档影响

这对文档有什么影响?不要重复上面讨论的细节,但请在此处引用它们。

参考资料

附加参考

TQE Ansible role 库

  • Undercloud role

  • Overcloud role

  • 实用 role

  • 部署后 role

  • Baremetal role