本篇主要闡述通過DeveStack 去部署Openstack(mitaka),對大多數來說安裝部署Openstack 來說是個痛苦的過程,尤其是 OpenStack和它依賴的一些組件在快速發展中,經常出現這個版本組件對不上那個版本 dashboard等情況。如果只是看看或者初期玩玩 OpenStack的話,使用DevStack也是個不錯的辦法。DevStack採用了自動化源碼部署的方式,適用於開發環境的部署和Openstack開發者,單節點,小環境;這裏採用的操作系統爲Ubuntu14.04。
一、操作系統選擇
Devstack目前是支持Ubuntu14.04和CentOS 7,不過全球的OpenStack開發者,大部分都在用Ubuntu 14.04。所以爲了減少麻煩,還是建議你使用Ubuntu 14.04。建議下載官網mininalCD。選擇Ubuntu 14.04 LTS “Trusty Tahr”版本。
https://help.ubuntu.com/community/Installation/MinimalCD
操作系統安裝詳見:
建議用vmware安裝ubuntu mini,nat網絡模式,安裝過程中,多做快照備份。
二、源的選擇
安裝devstack痛苦的其中一個原因,是OpenStack代碼,都需要從github下載,這樣由於網絡的原因,經常導致各種錯誤,簡直讓人崩潰,各種錯誤,也根本無法通過google來解決。
目前國內已經提供了完整的OpenStack的github的mirror。http://git.trystack.cn
這樣Devstack成功概率會大大提高。另外devstack還會下載image,下載的過程也是非常緩慢。trystack也提供大家常用的image下載。http://images.trystack.cn
對於ubuntu的系統,默認安全會從國外的源安裝,導致速度比較慢,可以修改/etc/apt/source.list文件。建議備份原有的。
備份默認源
mv /etc/apt/source.list /etc/apt/source.list.bak
vi /etc/apt/source.list
設置新源
deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
更新apt
apt-get update
三、同步時間
http://www.pool.ntp.org是NTP的官方網站,在http://www.pool.ntp.org/zone/cn我們可以找到我們國家的NTP服務器。
ntpdate cn.pool.ntp.org
四、devStack下載
下載devstack,並指定穩定版本。
默認無論是Devstack和OpenStack,都是採用Master的代碼進行安裝,這樣經常會出現,今天安裝成功,明天失敗,代碼時刻在變化。所以我們不僅僅要指定OpenStack的版本,還需要指定Devstack的版本,才能提供安裝成功的概率。
apt-get install git
git clone http://git.trystack.cn/openstack-dev/devstack.git -b stable/mitaka
或者
$git clone https://github.com/openstack-dev/devstack.git #克隆devstack的Git代碼倉庫
cd devstack/;git branch -a #顯示本地分支
git checkout -b mitaka origin/stable/mitaka #切換到指定mitaka分支或標籤
五、創建stack用戶
目前Devstack腳本已經不支持直接使用root身份運行,你需要創建stack用戶運行。
./home/devstack/tools/create-stack-user.sh
修改devstack目錄權限,讓stack用戶可以運行。
chown -R stack:stack /home/devstack
chmod 777 /dev/pts/0
保證該用戶下sudo可以免密碼運行,否則腳本執行過程中會出現權限問題。
可以修改/etc/sudoers, 在行 root ALL=(ALL:ALL) ALL 後添加 stack ALL=(ALL) ALL 然後保存文件,如下:
sudo echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
root切換到 stack 用戶
su stack
六、配置local.conf文件
建議創建最小化配置文件localrc,即使用非交互模式安裝,內容如下:
[[local|localrc]]
# use TryStack git mirror
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
# If the ``*_PASSWORD`` variables are not set here you will be prompted to enter
# values for them by ``stack.sh``and they will be added to ``local.conf``.
ADMIN_PASSWORD=admin
DATABASE_PASSWORD=admin
RABBIT_PASSWORD=admin
SERVICE_PASSWORD=$ADMIN_PASSWORD
# Neither is set by default.
HOST_IP=192.168.108.128
#HOST_IPV6=2001:db8::7
# path of the destination log file. A timestamp will be appended to the given name.
LOGFILE=$DEST/logs/stack.sh.log
# Old log files are automatically removed after 7 days to keep things neat. Change
# the number of days by setting ``LOGDAYS``.
LOGDAYS=2
# Using stable/mitaka branches
# ---------------------------------
# Uncomment these to grab the stable/mitaka branches from the
# repos:
CINDER_BRANCH=stable/mitaka
GLANCE_BRANCH=stable/mitaka
HORIZON_BRANCH=stable/mitaka
KEYSTONE_BRANCH=stable/mitaka
KEYSTONECLIENT_BRANCH=stable/mitaka
NOVA_BRANCH=stable/mitaka
NOVACLIENT_BRANCH=stable/mitaka
NEUTRON_BRANCH=stable/mitaka
SWIFT_BRANCH=stable/mitaka
# Swift is now used as the back-end for the S3-like object store. Setting the
# hash value is required and you will be prompted for it if Swift is enabled
# so just set it to something already:
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
# For development purposes the default of 3 replicas is usually not required.
# Set this to 1 to save some resources:
SWIFT_REPLICAS=1
# The data for Swift is stored by default in (``$DEST/data/swift``),
# or (``$DATA_DIR/swift``) if ``DATA_DIR`` has been set, and can be
# moved by setting ``SWIFT_DATA_DIR``. The directory will be created
# if it does not exist.
SWIFT_DATA_DIR=$DEST/data
其中:
FLOATING_RANGE:
表示的OpenStack雲實例使用的FloatingIP的範圍,這個範圍應該和虛擬機的IP在同一個網段,但是是當前虛擬機沒有使用的IP的範圍。
FIXED_RANGE:
表示的在OpenStack上創建雲實例後,該雲實例內部使用的IP,可以不用修改。
FIXED_NETWORK_SIZE和FLAT_INTERFACE都不用修改,然後設置一下用戶的密碼,其中的ADMIN_PASSWORD待會登陸DashBoard是會用到,不要忘了自己設置的密碼。
或者
直接使用devstack/sample/local.conf進行配置。bug需要進一步解決。
cp /home/devstack/samples/local.conf /home/devstack/local.conf
記得手動修改HOST_IP爲你的虛擬機ip。
此外:
修改pip源可以加快安裝速度,國內可以使用豆瓣源。在/root主目錄下創建.pip文件夾
mkdir ~/.pip
vi ~/.pip/pip.conf
然後在該目錄下創建pip.conf文件編寫如下內容:
[global]
trusted-host = pypi.douban.com
index-url = http://pypi.douban.com/simple
保存並退出
七、devstack安裝
運行
./stack.sh
Devstack 執行過程:
(1)下載並安裝Openstack運行所需要的系統軟件,大概包括一些python的組件、mysql、rabbitmq-server等
(2)下載openstack組件,包括nova 、keystone、glance、noVNC、horizon等
(3)下載並安裝openstack源碼所依賴的python庫和框架
(4)安裝openstack各組件
(5)啓動各項服務
泡杯茶,等着就可以啦!
由於網速較慢,博主裝了兩個小時,最後還是哦啦。
安裝成功結果如下:
2016-07-21 16:14:58.134 | ++lib/lvm:set_lvm_filter:173 sed 's/\/dev\///g'
2016-07-21 16:14:58.142 | ++lib/lvm:set_lvm_filter:173 echo -e /dev/loop1
2016-07-21 16:14:58.165 | +lib/lvm:set_lvm_filter:173 pv=loop1
2016-07-21 16:14:58.182 | +lib/lvm:set_lvm_filter:174 new='"a|loop1|", '
2016-07-21 16:14:58.196 | +lib/lvm:set_lvm_filter:175 filter_string='global_filter = [ "a|loop0|", "a|loop1|", '
2016-07-21 16:14:58.212 | +lib/lvm:set_lvm_filter:177 filter_string='global_filter = [ "a|loop0|", "a|loop1|", "r|.*|" ] # from devstack'
2016-07-21 16:14:58.221 | +lib/lvm:set_lvm_filter:179 clean_lvm_filter
2016-07-21 16:14:58.229 | +lib/lvm:clean_lvm_filter:154 sudo sed -i 's/^.*# from devstack$//' /etc/lvm/lvm.conf
2016-07-21 16:14:58.335 | +lib/lvm:set_lvm_filter:180 sudo sed -i '/# global_filter = \[*\]/a\ global_filter = [ "a|loop0|", "a|loop1|", "r|.*|" ] # from devstack' /etc/lvm/lvm.conf
2016-07-21 16:14:58.368 | +lib/lvm:set_lvm_filter:181 echo_summary 'set lvm.conf device global_filter to: global_filter = [ "a|loop0|", "a|loop1|", "r|.*|" ] # from devstack'
2016-07-21 16:14:58.381 | +./stack.sh:echo_summary:379 [[ -t 3 ]]
2016-07-21 16:14:58.389 | +./stack.sh:echo_summary:379 [[ True != \T\r\u\e ]]
2016-07-21 16:14:58.431 | +./stack.sh:echo_summary:385 echo -e set lvm.conf device global_filter to: global_filter = '[' '"a|loop0|",' '"a|loop1|",' '"r|.*|"' ']' '#' from devstack
========================
DevStack Components Timed
========================
run_process - 51 secs
apt-get-update - 11 secs
pip_install - 3357 secs
restart_apache_server - 17 secs
wait_for_service - 30 secs
git_timed - 5615 secs
apt-get - 353 secs
This is your host IP address: 192.168.108.128
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.108.128/dashboard
Keystone is serving at http://192.168.108.128:5000/
The default users are: admin and demo
The password: admin
stack@ubuntu:/home/ubuntu/devstack$
八、訪問openstack dashboard界面
打開chrome輸入: http://192.168.108.128/dashboard
久違的dashboard:
九、devstack安裝過程問題處理
- 現象如下:generate-subunit command not found
Cloning into '/opt/stack/requirements'...
fatal: unable to access 'https://git.openstack.org/openstack/requirements.git/': Could not resolve host: git.openstack.org; Unknown error
+functions-common:git_timed:603 [[ 128 -ne 124 ]]
+functions-common:git_timed:604 die 604 'git call failed: [git clone' https://git.openstack.org/openstack/requirements.git '/opt/stack/requirements]'
+functions-common:die:186 local exitcode=0
+functions-common:die:187 set +o xtrace
[Call Trace]
./stack.sh:715:git_clone
/opt/devstack/functions-common:537:git_timed
/opt/devstack/functions-common:604:die
[ERROR] /opt/devstack/functions-common:604 git call failed: [git clone https://git.openstack.org/openstack/requirements.git /opt/stack/requirements]
Error on exit
./stack.sh: line 494: generate-subunit: command not found
解決辦法:
sudo apt-get install python-pip
sudo pip install --upgrade pip
sudo pip install -U os-testr
這三條命令可以解決那個問題。
若os-testr無法apt-get安裝,則:
若ascii codec canot decode…,則:
參考文章:
http://www.chenshake.com/openstack-project-series-3-devstack/
http://blog.csdn.net/myslq/article/details/51837578-series-3-devstack/
http://my.oschina.net/u/2381034/blog/491610?p=1