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

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