本篇主要闡述通過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伺服器。
四、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使用者運作。
修改devstack目錄權限,讓stack使用者可以運作。
chown -R stack:stack /home/devstack
chmod /dev/pts/
保證該使用者下sudo可以免密碼運作,否則腳本執行過程中會出現權限問題。
可以修改/etc/sudoers, 在行 root ALL=(ALL:ALL) ALL 後添加 stack ALL=(ALL) ALL 然後儲存檔案,如下:
sudo echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
root切換到 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=
#HOST_IPV6=:db8::
# 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 days to keep things neat. Change
# the number of days by setting ``LOGDAYS``.
LOGDAYS=
# 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=a3d6b56c1f479c8b4e70ab5c2000f5
# For development purposes the default of replicas is usually not required.
# Set this to to save some resources:
SWIFT_REPLICAS=
# 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需要進一步解決。
記得手動修改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安裝
運作
Devstack 執行過程:
(1)下載下傳并安裝Openstack運作所需要的系統軟體,大概包括一些python的元件、mysql、rabbitmq-server等
(2)下載下傳openstack元件,包括nova 、keystone、glance、noVNC、horizon等
(3)下載下傳并安裝openstack源碼所依賴的python庫和架構
(4)安裝openstack各元件
(5)啟動各項服務
泡杯茶,等着就可以啦!
由于網速較慢,部落客裝了兩個小時,最後還是哦啦。
安裝成功結果如下:
-- :: | ++lib/lvm:set_lvm_filter: sed 's/\/dev\///g'
-- :: | ++lib/lvm:set_lvm_filter: echo -e /dev/loop1
-- :: | +lib/lvm:set_lvm_filter: pv=loop1
-- :: | +lib/lvm:set_lvm_filter: new='"a|loop1|", '
-- :: | +lib/lvm:set_lvm_filter: filter_string='global_filter = [ "a|loop0|", "a|loop1|", '
-- :: | +lib/lvm:set_lvm_filter: filter_string='global_filter = [ "a|loop0|", "a|loop1|", "r|.*|" ] # from devstack'
-- :: | +lib/lvm:set_lvm_filter: clean_lvm_filter
-- :: | +lib/lvm:clean_lvm_filter: sudo sed -i 's/^.*# from devstack$//' /etc/lvm/lvm.conf
-- :: | +lib/lvm:set_lvm_filter: sudo sed -i '/# global_filter = \[*\]/a\ global_filter = [ "a|loop0|", "a|loop1|", "r|.*|" ] # from devstack' /etc/lvm/lvm.conf
-- :: | +lib/lvm:set_lvm_filter: echo_summary 'set lvm.conf device global_filter to: global_filter = [ "a|loop0|", "a|loop1|", "r|.*|" ] # from devstack'
-- :: | +./stack.sh:echo_summary: [[ -t ]]
-- :: | +./stack.sh:echo_summary: [[ True != \T\r\u\e ]]
-- :: | +./stack.sh:echo_summary: echo -e set lvm.conf device global_filter to: global_filter = '[' '"a|loop0|",' '"a|loop1|",' '"r|.*|"' ']' '#' from devstack
========================
DevStack Components Timed
========================
run_process - secs
apt-get-update - secs
pip_install - secs
restart_apache_server - secs
wait_for_service - secs
git_timed - secs
apt-get - secs
This is your host IP address: .
This is your host IPv6 address: ::
Horizon is now available at http://./dashboard
Keystone is serving at http://.:/
The default users are: admin and demo
The password: admin
[email protected]:/home/ubuntu/devstack$
八、通路openstack dashboard界面
打開chrome輸入: http://192.168.108.128/dashboard
久違的dashboard:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISN2ATNyAjMxAjMycDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
九、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: [[ 128 -ne 124 ]]
+functions-common:git_timed: die 'git call failed: [git clone' https://git.openstack.org/openstack/requirements.git '/opt/stack/requirements]'
+functions-common:die: local exitcode=
+functions-common:die: set +o xtrace
[Call Trace]
./stack.sh::git_clone
/opt/devstack/functions-common::git_timed
/opt/devstack/functions-common::die
[ERROR] /opt/devstack/functions-common: git call failed: [git clone https://git.openstack.org/openstack/requirements.git /opt/stack/requirements]
Error on exit
./stack.sh: line : 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