Openstack+Puppet

2013年11月26日 dmsimard

感谢 puppet-openstack 社区的辛勤工作,Puppet 是最新 Openstack 用户调查 中 Openstack 的首选部署方法。

如果您想加入其中并做出贡献,请继续阅读!
首先,先了解一些背景知识

  • Openstack 是一个模块化的云编排平台,自称是“用于构建私有和公有云的开源软件”。
  • puppet-openstack 是一个 Stackforge 项目,用于集中开发与 Openstack 相关的 puppet 模块。puppet-openstack 也是一个实际的 模块,允许安装和配置核心 Openstack 服务。
  • Stackforge 用于托管 Openstack 相关项目,以便它们能够受益于与主要 Openstack 项目(如 Nova)相同的持续集成基础设施和审查系统。

现在我们已经了解了基础知识,如果您想为 Openstack 贡献力量,并不需要具备任何编程或网络知识。总会有像文档和翻译这样需要人力投入的事情。

然而,要为 puppet-openstack 做出贡献,则需要熟悉 rubypuppetpuppet-rspec 以及当然,Openstack。

puppet-openstack 的贡献流程与向主要 Openstack 项目(如 Nova)提交代码略有不同,我不会在此处重点介绍它们,以保持简洁——这是一个需要另篇博文讨论的话题!

我最近开始参与新的 puppet-ceph 倡议,因此这篇博文或多或少地描述了我完成第一次贡献的过程。

好的,我报名了。

如果您想加入其中,基本注册说明在 Openstack Wiki 上有很好的文档记录:https://wiki.openstack.net.cn/wiki/How_To_Contribute

简而言之

入门

假设我想为 puppet-ceph 开发(!),我会将这些资源放在手边

  • Launchpad 项目 用于 bug/问题/修复/功能/积压文档和讨论:https://bugs.launchpad.net/puppet-ceph (每个项目都有自己的 launchpad 项目)
  • 开发者文档 将有助于准备您的开发环境等等。对于 puppet 模块,文档同时在 Openstack WikiREADME 文件中提供。

克隆项目

您需要 puppet 模块源代码才能进行工作,您可以从 Github 克隆它

git clone https://github.com/stackforge/puppet-ceph

或者从 Gerrit 克隆它

git clone https://review.openstack.org/stackforge/puppet-ceph

确保您已安装 ruby、rubygems 和 bundle

首先,您需要 rubybundle 来管理 ruby 包(gems)。
这些是必需的,尤其是在进行 spec/integration/lint 测试时。

如果您已经拥有它们,可以跳过此部分!

在 Ubuntu 上:

apt-get install ruby rubygems ruby-bundler

在 Debian 上:

apt-get install ruby rubygems bundler

安装开发依赖项

借助 bundle,获取并安装位于仓库根目录的 Gemfile 中记录的 gem 依赖项。

bundle install

创建您的分支并进行操作

创建一个与您正在进行的操作相关的分支名称

git checkout -b feature/my_feature

现在您可以进行修改了。
不要忘记添加新的 spec 测试或修改现有的测试以匹配您对模块所做的修改。

测试您的内容

您已经添加或修改了一些代码,现在您想测试它

测试 puppet 语法 (puppet-lint):

bundle exec rake lint

运行 spec 测试 (puppet-rspec)

bundle exec rake spec

如果您尝试推送未通过测试的代码,jenkins 将不会让您通过——最好在发送以供审查之前确保一切正常!

测试成功?添加并提交您的内容

git add [file] git commit

确保您的提交消息遵循 正确的格式

发送您的内容以供审查

git review

就是这样!您的代码已发送到 gerrit 以供社区和核心审查人员审查!

Jenkins 或某人 -1 了我的代码。帮帮我!

也许您打了个错字或犯了更严重的错误,您想修复它——通过提交另一个补丁集来完成。

进行您想要进行的更改,再次添加文件,但不要使用“git commit”,而是使用“git commit —amend”。
这本质上将修改初始提交。

修改提交后,使用“git review”再次将代码发送回进行新的审查。