使用Container构筑自己的OpenStack开发环境

OpenStack是一个开源的云计算管理平台, 当前最新的版本是Stein. 当前OpenStack整体已经非常的稳定和成熟了。但是作为开源软件,在使用的过程当中难免的会遇到一些Bug,而了解OpenStack最好的方式就是在使用的过程当中遇到Bug后加以分析和解决。并且最好是能够把自己的Fix Commit到社区,使自己也慢慢的参与到OpenStack的开发中去。我在刚接触OpenStack,提交第一个patch的时候也是走了不少弯路的,所以本文主要讲述了如何构筑自己的OpenStack开发环境,如何向社区提交代码。

前提条件

  1. 一台装好docker的服务器,如何安装?
  2. 申请一个自己的Ubuntu帐号,GerritLaunchpad需要用到
    • Gerrit用于Review提交的代码
    • Launchpad用于Track Bugs

创建Container

以CentOS为例

# 拉取docker image
docker pull ubuntu
# 启动Container
docker run -it -d --network host --name openstack_deloyment ubuntu

跑完上述命令,我们会直接进入到容器中。这个时候我们就可以直接在容器里面安装我们需要用到的软件包了。

安装依赖包

# 在容器里面
apt-get update
apt-get install iputils-ping
apt-get install net-tools
apt-get install git
apt-get install git-review
apt-get install libbz2-dev

配置Git

git config --global user.email <Email>
git config --global user.name <Name>
git config --global --add gitreview.username <自己Gerrit帐号的Profile里的Username>

配置公钥

由于向Gerrit提交Review的时候需要通过密钥进行认证,所以我们需要在本地创建一个密钥对,并且将公钥上传到Gerrit。

# 生成ssh密钥对,执行ssh-keygen后一路回车
ssh-keygen
# 在~/.ssh可以找到自己生成的密钥对
ls ~/.ssh
> id_rsa  id_rsa.pub  known_hosts

将公钥id_rsa.pub的内容通过Add Key添加到Gerrit。
上传公钥

构建Python测试环境

由于现在Python有Python2和Python3两个版本,在提交代码的时候OpenStack的各个组件都会针对Python2和Python3分别进行Unit Test. 由于上传代码后Gerrit那边的Zuul check比较缓慢。所以我们可以在自己本地构建Unit Test的测试环境,这样就可以更高效的进行开发了。

# OpenStack的Unit Test是基于Tox的
apt-get install tox

apt-get install vim
apt-get install wget
# 分别下载2.7和3.5两个版本的Python代码
wget https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz

# 安装编译Python代码需要的依赖包
apt-get install gcc
apt-get install g++
apt-get install make
# 安装libssl-dev,不然编译出来的python不支持ssl
apt-get install libssl-dev

# 编译Python3
tar zxf Python-3.5.6.tgz 
cd Python-3.5.6
./configure --prefix=$HOME/.python3.5
make install

# 编译Python2
tar zxf Python-2.7.15.tgz
cd Python-2.7.15
./configure --prefix=$HOME/.python2.7
make install

# 创建Python2运行时环境
virtualenv py27 -p .python2.7/bin/python2.7
# 创建Python3运行时环境
virtualenv py35 -p .python3.5/bin/python3.5

# 这个时候我们就可以非常简单的在python2和python3之间切换了
# 并且由于我们是跑在Container里面,所以和底层的操作系统也是没有关系的

# 切换成Python2运行时环境
. /root/py27/bin/activate

# 切换成Python3运行时环境
. /root/py35/bin/activate

提交代码到Gerrit

首先我们要找一个我们想要参与的Project,然后把它的源码通过Git下载下来。
下载源码

git clone ssh://xxx@review.openstack.org:29418/openstack/nova
cd nova
git checkout -b TOPIC-BRANCH # Ex: fix_bug_11111, 11111可以是这个bug在launchpad里的bug编号
# 修改完后
git commit -a
# 添加Commit Message,之后通过git review提交Review
# Commit Message怎么写可以参考:https://docs.openstack.org/infra/manual/developers.html
git review

# 如果有人在Gerrit上留了Comment,需要再次修改代码,则修改完成后通过下述命令更新需要Review的代码
git commit -a --amend
git review

# 如果是backport已经提交到master的代码到某一个branch,譬如说要backport到Queens Release
git checkout -t  origin/stable/queens
git cherry-pick -x 4e627004f6a21bfe248d82a32818faabf1834c06

Unit Test

每次改完代码后,在提交代码之前我们可以跑一下Unit Test,这样可以更快的发现问题。

cd nova
# 修改完代码后
# 针对Python2跑Unit Test
. /root/py27/bin/activate
tox -e py27

# 针对Python3跑Unit Test
. /root/py35/bin/activate
tox -e py35

REF

OpenStack Developer’s Guide

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值