openstack开发实践(一):devstack搭建all-in-one的openstack开发环境

Devstack简介

devstack是面向开发者的一个openstack部署工具,用户可以指定不同的版本分支进行安装。devstack借助于Shell脚本实现openstack自动化部署,devstack源码中的stack.sh即为安装脚本,该脚本默认会安装并配置nova,glance,horizon和keystone,placement,。除此之外,我们也可以通过enable_plugin自定义安装其他服务。本教程通过devstack部署一个All-in-One(即所有的服务都部署在同一个节点上)的openstack环境,使用VirtualBox创建Ubuntu16虚拟机,为了保证部署成功,虚拟机的运行内存至少为8G,硬盘空间推荐50G以上

Devstack安装步骤

配置apt下载源和pip下载源

由于国外官方的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

创建stack用户

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

安装过程中可能会遇到的一些问题和解决方案

get-pip.py安装错误

+ 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这个函数调用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章