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這個函數調用。