本文总结Ubuntu 14.04下部署DevStack的过程以及一些可能遇到的问题。
一、安装
以下的操作最好在普通用户下进行,至少在git clone devstack的时候使用普通用户,这样可以避免一些不必要的权限问题,当然,以后也可以使用权限更改命令来修改普通用户的权限,这种方法下文将会介绍。
1.首先获取系统更新内容
$ sudo apt-get update
2.接着升级当前发行版
$ sudo apt-get dist-upgrade
3.重启电脑令更新生效
4.安装git,已有的可以忽略本步
$ sudo apt-get install git
5.获取devstack源码放置到TARGET_DIR/devstack目录中
$ cd TARGET_DIR
$ git clone https://github.com/openstack-dev/devstack.git
6.更该pip源,需要新建pip.conf文件指定目标源(这里以豆瓣的pip源为例),避免因为pip源连接失败引起的安装失败
$ mkdir ~/.pip $ vim ~/.pip/pip.conf --------pip.conf-------- [global] index-url=http://pypi.douban.com/simple/
7.采取预先配置安装组件的方式,编辑并生成localrc文件,或将已有的localrc移入devstack/目录
$ cp localrc TARGET_DIR/devstack/
关于localrc文件的具体内容和解释说明,请参考这篇博文。
8.运行stack.sh脚本,注意只能使用非root用户执行。
$ cd TARGET_DIR/devstack $ ./stack.s
二、安装过程中遇到的问题
1.权限问题
2.组件下载失败
3.Bug:'amqplib' is not in global_requirements.txt
这是一个已公布的Bug
详细解决可以参考OpenStack团队的code review
如果遇到,需要手动添加一些依赖,同时将localrc中的RECLONE置为false
$ vim /opt/stack/requirements/global-requirements.txt //假设你的openstack组件目录/stack是在默认的/opt目录中。
--------Add Content Below-------
amqplib>=0.6.1
$ vim TARGET_DIR/devstack/localrc
--------Set RECLONE to FALSE--------
RECLONE=FALSE
重新执行stack.sh,这个问题就能通过。
4 Bug: Service n-novnc is not running
这是一个已公布的bug,原因是nova依赖的对象存在缺陷。
我将这个问题报告在
https://bugs.launchpad.net/devstack/+bug/1361108
根据评论得知,这是一个老问题,最早出现在havana版本的nova上,具体的内容可以参考这里
https://bugs.launchpad.net/ubuntu/+source/nova/+bug/1228490
因为nova依赖的websockify存在漏洞所致。后来websockify 0.5.1解决了这个问题,nova团队也对nova的依赖关系进行了相应的调整
https://github.com/openstack/nova/commit/3eb67b811ae2442bd86781d9f1c4078a982cfe84
但是,使用pip安装时默认安装最新版本的websockify 0.6.0,这里无语的是先前版本0.5.1 fix的bug又回来了。因此遇到这个问题时需要手动降级websockify。
$ sudo pip uninstall websockify $ sudo pip install websockify==0.5.1
我将这个问题汇报给了websockify的团队
https://github.com/kanaka/websockify/issues/136
目前问题仍然open,希望得到他们的答复。