devstack是面向开发者的一个openstack部署工具,用户可以指定不同的版本分支进行安装。devstack借助于Shell脚本实现openstack自动化部署,devstack源码中的stack.sh即为安装脚本,该脚本默认会安装并配置nova,glance,horizon和keystone,placement,。除此之外,我们也可以通过enable_plugin自定义安装其他服务。本教程通过devstack部署一个All-in-One(即所有的服务都部署在同一个节点上)的openstack环境,使用VirtualBox创建Ubuntu16虚拟机,为了保证部署成功,虚拟机的运行内存至少为8G,硬盘空间推荐50G以上
由于国外官方的apt下载源和pip下载源在国内使用时不是很稳定,很容易导致部署过程中下载package时因为网络问题导致部署失败,所以需要配置国内的下载源镜像。对于apt下载源的修改,主要步骤如下:
修改/etc/apt/sources.list:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
更新下载源
sudo apt-get update
sudo apt-get upgrade
pip下载源的修改步骤如下:
创建pip.conf
mkdir ~/.pip
vim ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
devstack的安装与运行最好都要在一个新创建的stack用户下进行,不能通过root用户来安装。所以要先创建stack用户并赋予该用户sudo权限
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo passwd stack #编辑stack用户的登录密码
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
切换到stack用户空间下
su - stack
通过下载源码,可以通过-b指定代码分支,这里我们指定的分支为stable/ocata
git clone https://opendev.org/openstack/devstack -b stable/ocata
cd devstack
修改配置文件local.conf为如下内容
vim local.conf
[[local|localrc]]
ADMIN_PASSWORD=选择一个密码
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=主机ip地址
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
TEMPEST_REPO=http://git.trystack.cn/openstack/tempest
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
其中的GIT_BASE,NOVNC_REPO,SPICE_REPO,TEMPEST_REPO为配置openstack及其他相关组件的openstack镜像
运行安装脚本stack.sh进行安装
./stack.sh
如果最后命令行出现如下内容,表示安装完成
如果中间遇到因某个组件pip安装失败导致部署失败,可以在运行./unstack.sh之后手动安装该组件,之后再运行./stack.sh安装脚本
安装完成之后,会创建两个新用户admin和demo,我们可以通过如下的命令设置环境变量的值来登陆admin用户
source openrc admin admin
接下来我们就可以使用openstack命令
关机重启之后,通过如下命令,可以启动openstack服务
su - stack
cd devstack
sudo screen -c stack-screenrc
+ tools/install_pip.sh:install_get_pip:87 : curl -f --retry 6 --retry-delay 5 -o /opt/devstack/files/get-pip.py https://bootstrap.pypa.io/get-pip.py
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0Warning: Failed to create the file /opt/devstack/files/get-pip.py: Permission
Warning: denied
1733k 0 2228 0 0 1295 0 0:22:50 0:00:01 0:22:49 1295
curl: (23) Failed writing body (0 != 2228)
+ tools/install_pip.sh:install_get_pip:89 : die 89 'Download of get-pip.py failed'
+ functions-common:die:195 : local exitcode=23
[Call Trace]
/opt/devstack/tools/install_pip.sh:140:install_get_pip
/opt/devstack/tools/install_pip.sh:89:die
[ERROR] /opt/devstack/tools/install_pip.sh:89 Download of get-pip.py failed
++./stack.sh:main:799 err_trap
++./stack.sh:err_trap:577 local r=23
stack.sh failed: full log in /opt/stack/logs/stack.sh.log.2019-08-09-123356
Error on exit
如果在get-pip.py的安装过程中出现错误,需要在devstack/tools目录下,找到install_pip.sh,注释掉install_get_pip这个函数调用。