體驗devstack安裝openstack


由於公司制度,工作環境是不能直接上網的,所以在工作時間從沒有體驗過devstack或者其他聯網方式安裝openstack。

因自己購置了一台不錯的主機,因而決定嘗試安裝一番,經過一段為期不短的內心極度崩潰與愈合,終於看到了如下的打印:

15 This is your host IP address: 192.168.0.105
16 This is your host IPv6 address: ::1
17 Horizon is now available at http://192.168.0.105/dashboard
18 Keystone is serving at http://192.168.0.105:5000/
19 The default users are: admin and demo
20 The password: 123456
21 2017-01-21 08:46:05.167 | stack.sh completed in 746 seconds.

喔喔,這是成功了嗎,可以登錄了。

 

好了,還是言歸正傳:

工作環境:vmware 12

操作系統:ubuntu 14.04.5

虛擬機配置 內存: 4G , CPU : 4核 ,開啟VTx-d等選項,內存是越大越好,不過俺的主機內存有限。

安裝完后:

root@ubuntu:~# free -h
             total       used       free     shared    buffers     cached
Mem:          3.8G       3.7G       151M       3.2M       100M       1.1G
-/+ buffers/cache:       2.5G       1.3G
Swap:         1.0G       744K       1.0G

 

apt源可以使用國內的默認源,也可以使用其他國內的源,不過博主居然遇到cn.archive.ubuntu.com當機了。。。

因此測試了一下阿里的源,貌似比較穩定,於是:

sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list
apt-get update

 

pip的設置(首先創建目錄: mkdir ~/.pip  && vim ~/.pip/pip.conf):

1 stack@ubuntu:~/devstack$ cat ~/.pip/pip.conf
2 [global]  
3 index-url = http://mirrors.aliyun.com/pypi/simple/  
4 [install]  
5 trusted-host=mirrors.aliyun.com

devstack本地配置:

 1 stack@ubuntu:~/devstack$ cat local.conf
 2 [[local|localrc]]
 3 
 4 # use TryStack git mirror
 5 GIT_BASE=http://git.trystack.cn
 6 NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
 7 SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
 8 
 9 #OFFLINE=True
10 RECLONE=True
11 
12 # Define images to be automatically downloaded during the DevStack built process.
13 DOWNLOAD_DEFAULT_IMAGES=False
14 IMAGE_URLS="http://images.trystack.cn/cirros/cirros-0.3.4-x86_64-disk.img"
15 
16 ADMIN_PASSWORD=123456
17 DATABASE_PASSWORD=$ADMIN_PASSWORD
18 RABBIT_PASSWORD=$ADMIN_PASSWORD
19 SERVICE_PASSWORD=$ADMIN_PASSWORD


我一開始使用默認的國外源,是想安裝newton版本,不過那個網速真的沒法成功安裝。。

使用國內的源會快很多,但是好像只支持mitaka版本,因此就先安裝這個,接下來就是:

1、創建一個普通用戶,比如官網推薦的 stack

1 sudo adduser stack
2 
3 sudo echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

2、切換到stack用戶(執行su stack),然后:

1 cd ~
2 sudo apt-get install git 
3 git clone https://github.com/openstack-dev/devstack.git -b stable/mitaka

3、開始安裝:

1 cd devstack
2 ./stack.sh

4、中途遇到的問題:

 1 Traceback (most recent call last):
 2   File "/usr/local/bin/openstack", line 7, in <module>
 3     from openstackclient.shell import main
 4   File "/usr/local/lib/python2.7/dist-packages/openstackclient/shell.py", line 32, in <module>
 5     from openstackclient.common import clientmanager
 6   File "/usr/local/lib/python2.7/dist-packages/openstackclient/common/clientmanager.py", line 293, in <module>
 7     'openstack.cli.base',
 8   File "/usr/local/lib/python2.7/dist-packages/openstackclient/common/clientmanager.py", line 264, in get_plugin_modules
 9     __import__(ep.module_name)
10   File "/usr/local/lib/python2.7/dist-packages/openstackclient/network/client.py", line 16, in <module>
11     from openstack import connection
12   File "/usr/local/lib/python2.7/dist-packages/openstack/connection.py", line 68, in <module>
13     from openstack import session as _session
14   File "/usr/local/lib/python2.7/dist-packages/openstack/session.py", line 29, in <module>
15     DEFAULT_USER_AGENT = "openstacksdk/%s" % openstack.__version__
16 AttributeError: 'module' object has no attribute '__version__

好吧,發現是/usr/local/lib/python2.7/dist-packages/openstack/session.py里執行失敗:

代碼行: DEFAULT_USER_AGENT = "openstacksdk/%s" % openstack.__version__

於是如下處理一下:

 1 root@ubuntu:~# python
 2 Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
 3 [GCC 4.8.4] on linux2
 4 Type "help", "copyright", "credits" or "license" for more information.
 5 >>> import openstack
 6 >>> import pbr.version
 7 >>> print(pbr.version.VersionInfo('openstacksdk').version_string())
 8 0.8.1
 9 >>> quit()
10 root@ubuntu:~# 

修改為: DEFAULT_USER_AGENT = "openstacksdk/0.8.1"

cd ~/devstack
./unstack.sh
./clean.sh
./stack.sh

好運的話,會一次安裝成功吧。

然而博主是經歷了斷斷續續歷時約12個小時失敗才安裝成功。。。

5、如何重啟devstack

devstack重啟腳本是rejoin-stack.sh,但是git下來的版本卻沒有,只好去網上找一個,如下:

#!/usr/bin/env bash

# This script rejoins an existing screen, or re-creates a
# screen session from a previous run of stack.sh.

TOP_DIR=`dirname $0`

# Import common functions in case the localrc (loaded via stackrc)
# uses them.
source $TOP_DIR/functions

source $TOP_DIR/stackrc

# if screenrc exists, run screen
if [[ -e $TOP_DIR/stack-screenrc ]]; then
    if screen -ls | egrep -q "[0-9].stack"; then
        echo "Attaching to already started screen session.."
        exec screen -r stack
    fi
    exec screen -c $TOP_DIR/stack-screenrc
fi

echo "Couldn't find $TOP_DIR/stack-screenrc file; have you run stack.sh yet?"
exit 1

vim ~/devstack/rejoin-stack.sh將上面的內容復制進去。

chmod +x ~/devstack/rejoin-stack.sh
sudo chmod 777 /dev/pts/0
./rejoin-stack.sh

即可重啟服務咯,哈哈,我趕緊把內存加大1G~~~

root@ubuntu:~# free -h
             total       used       free     shared    buffers     cached
Mem:          4.8G       3.0G       1.7G       3.4M        62M       230M
-/+ buffers/cache:       2.7G       2.0G
Swap:         1.0G         0B       1.0G

接下來,就可以愉快的玩耍了。

6、如何成為openstack的開發者:

http://www.ibm.com/developerworks/cn/cloud/library/cl-contributecode-openstack/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM