使用 tripleo 第三方 CI 工具集 tripleo-quickstart¶
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] 做出决定
rdoproject 中启用第三方测试的工作需要完成
测试¶
目前正在进行一项测试,在 RH2 OVB 云上测试 TQE [2]。TQE 已经在使用 OVB 在其他云上进行了相当长一段时间的验证。
文档影响¶
这对文档有什么影响?不要重复上面讨论的细节,但请在此处引用它们。
参考资料¶
附加参考¶
TQE Ansible role 库¶
Undercloud role
Overcloud role
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-config
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-flavors
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-images
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-network
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud
https://github.com/redhat-openstack/ansible-role-tripleo-ssl ( 正在开发中 )
实用 role
https://github.com/redhat-openstack/ansible-role-tripleo-cleanup-nfo
https://github.com/redhat-openstack/ansible-role-tripleo-collect-logs
https://github.com/redhat-openstack/ansible-role-tripleo-gate
https://github.com/redhat-openstack/ansible-role-tripleo-provision-heat
https://github.com/redhat-openstack/ansible-role-tripleo-image-build
部署后 role
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-upgrade
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-scale-nodes
https://github.com/redhat-openstack/ansible-role-tripleo-tempest
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-validate
https://github.com/redhat-openstack/ansible-role-tripleo-validate-ipmi
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-validate-ha
Baremetal role