使用Devstack的时间其实很长。我第一次成功安装OpenStack就是使用Devstack,记忆很清楚,那时候Devstack项目刚刚成立,时间大概是2011年10月份的时候。
Devstack,只要的用户群,是开发者,直接使用源码安装,Shell的脚本,使用的出神入化,如果你希望深入了解学习如何安装OpenStack,那么代码本是就是最好的教程。
Devstack最近几年,其实变化很大,尤其在OpenStack采用大帐篷策略,项目暴涨,这也导致Devstack需要重新考虑,提供插件的机制,让更多的项目可以更加方便集成Devstack上。
这其实也导致很多以前写的文章都已经失效,很多设置已经不起作用。
真正的OpenStack玩家,一定会给Devstack折磨过。希望本文可以帮助大家减轻一点痛苦。
这篇文章是把以前的Devstack使用的文章,修改完成。
操作系统
Devstack目前是支持Ubuntu14.04和CentOS 7,不过全球的OpenStack开发者,大部分都在用Ubuntu 14.04。所以为了减少麻烦,还是建议你使用Ubuntu 14.04
详细的介绍 http://docs.openstack.org/developer/devstack/
使用trystack源
安装devstack痛苦的其中一个原因,是OpenStack代码,都需要从github下载,这样由于网络的原因,经常导致各种错误,简直让人崩溃,各种错误,也根本无法通过google来解决。
目前国内已经提供了完整的OpenStack的github的mirror。
这样Devstack成功概率会大大提高。
另外devstack还会下载image,下载的过程也是非常缓慢。trystack也提供大家常用的image下载。
指定版本
默认无论是Devstack和OpenStack,都是采用Master的代码进行安装,这样经常会出现,今天安装成功,明天失败,代码时刻在变化。所以我们不仅仅要指定OpenStack的版本,还需要指定Devstack的版本,才能提供安装成功的概率。
另外插件的版本,也是指定,如果使用master,也是可能会导致你失败。
目前Devstack的默认安装的组件,就的几个核心模块。如果你希望安装其他模块,就需要通过插件来安装。Devstack支持的插件列表
http://docs.openstack.org/developer/devstack/plugin-registry.html
目前各个项目,基本都会有一个devstack的目录,进入目录,就有介绍如何在devstack把该项目装起来。
https://github.com/openstack/rally/tree/master/devstack
网络环境
vmware workstation,安装ubuntu 14.04 虚拟机,记住,最小化安装,仅仅安装ssh server服务就可以。
虚拟机使用NAT网络,虚拟机默认通过dhcp获得的IP地址是
192.168.27.128/24
auto eth0
iface eth0 inet static
address 192.168.27.128
netmask 255.255.255.0
network 192.168.27.0
broadcast 192.168.27.255
gateway 192.168.27.2
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 114.114.114.114
dns-search test.com
vmware workstation默认设置分配的IP地址池是128开始分配。所以我的
Floating Ip是:192.168.27.102到192.168.27.110
网关是:192.168.27.2
看图,就应该很清楚 http://docs.openstack.org/developer/devstack/guides/neutron.html
设置ubuntu源
对于ubuntu的系统,默认安全会从国外的源安装,导致速度比较慢。
deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
允许update
apt-get update
记得同步一下时间
ntpdate ntp.sjtu.edu.cn
安装
apt-get install git
下载devstack
cd /home
git clone http://git.trystack.cn/openstack-dev/devstack.git -b stable/mitaka
目前Devstack脚本已经不支持直接使用root身份运行,你需要创建stack用户运行
cd /home/devstack/tools/
./create-stack-user.sh
修改devstack目录权限,让stack用户可以运行
chown -R stack:stack /home/devstack
chmod 777 /dev/pts/0
切换的stack用户下
su stack
cd /home/devstack
进入devstack目录下,创建local.conf文件,最新版本的devstack,改动很大,我专门写篇文章来介绍local.conf 设置参数
这个local.conf 文件最关键的地方
更多的local.conf 例子,可以查看 https://github.com/shake/devstack 会把我验证通过的配置文件都放到github上,方便大家。
你也可以使用wget命令,直接下载我的local.conf 配置文件。
wget -O - https://raw.githubusercontent.com/shake/devstack/gh-pages/local.conf-sample-mitaka > ./local.conf
例子
[[local|localrc]]
# use TryStack git mirror
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
#OFFLINE=True
RECLONE=True
# Define images to be automatically downloaded during the DevStack built process.
DOWNLOAD_DEFAULT_IMAGES=False
IMAGE_URLS="http://images.trystack.cn/cirros/cirros-0.3.4-x86_64-disk.img"
HOST_IP=192.168.27.128
# Credentials
DATABASE_PASSWORD=pass
ADMIN_PASSWORD=pass
SERVICE_PASSWORD=pass
SERVICE_TOKEN=pass
RABBIT_PASSWORD=pass
HORIZON_BRANCH=stable/mitaka
KEYSTONE_BRANCH=stable/mitaka
NOVA_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
GLANCE_BRANCH=stable/mitaka
CINDER_BRANCH=stable/mitaka
#keystone
KEYSTONE_TOKEN_FORMAT=UUID
##Heat
HEAT_BRANCH=stable/mitaka
enable_service h-eng h-api h-api-cfn h-api-cw
## Swift
SWIFT_BRANCH=stable/mitaka
ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
SWIFT_REPLICAS=1
SWIFT_HASH=011688b44136573e209e
# Enabling Neutron (network) Service
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service neutron
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="192.168.27.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=192.168.27.102,end=192.168.27.110
PUBLIC_NETWORK_GATEWAY="192.168.27.2"
Q_L3_ENABLED=True
PUBLIC_INTERFACE=eth0
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
# #VLAN configuration.
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
# Logging
LOGFILE=/opt/stack/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
SCREEN_LOGDIR=/opt/stack/logs
运行
./stack.sh
安装过程,你很可能遇到错误,重复运行就可以,一般错误都会通过。如果反复,还是停留在相同的错误,那么你很可能就需要重新干净的系统再来一遍,这个主要是因为网络的bridge设置有关。
看看结果
装完后,虚拟机是不能重启的,所以你最好是当前状态做一个快照。都是采用暂停。
测试
用admin登录Dashbord,为了测试,我们创建一个project:test,给project创建一个用户
使用该该账户重新登录Dashboard
大概的步骤
- 创建lan,分配内网IP地址段,记得设置dns
- 创建router,连接外网,同时连接lan
- 创建test安全组,允许tcp,udp,icmp全部访问
- 上传秘钥,或者创建秘钥
- 创建虚拟机,分配floating IP,验证网络所有功能
我是用vmware workstation做实验,我在我的笔记本上,可以直接ssh到虚拟机上,那么基本所有的问题都解决,最好是使用秘钥的方式,这样基本各种功能都测试了一遍。
参考文章
http://docs.openstack.org/developer/devstack/guides/neutron.html
http://blog.chinaunix.net/uid-13152448-id-2906443.html
关于如何重启服务等相关问题
http://www.unixarena.com/2015/08/how-to-stop-and-start-openstack-on-ubuntu.html