在ubuntu16.04上通過devstack一鍵部署openstack(一)
2017年12月7號 devstack終於成功部署openstack,別人的一小步,我的一大步
網路配置、叢集部署基礎參考:http://www.aboutyun.com/forum.php?mod=viewthread&tid=6821&extra=page%3D1&page=1&
我是參照陳沙克老師和下面的博文來安裝的,其中遇到一些問題,先提出來,之後整理:
0、先做好網路設定,NAT網路,設定好靜態IP、閘道器、浮動IP、DNS
1、在ubuntu16.04上可以安裝成功,在14.04上會出現錯誤:E:unable to locate package libsystemd-dev。
2、注意提前安裝好python-pip
3、陳沙克老師的博文連結:http://www.360doc.com/content/16/0407/00/13792507_548464714.shtml
講解local.conf的連結http://www.chenshake.com/local-conf-devstack-profile-parameter-description/
其中,我的local.conf是按照陳沙克老師的來做的,改動了IP
整個流程按照博文:http://blog.sina.com.cn/s/blog_6ccb47550102w2fu.html
以下是整個博文的內容
經過兩天在虛擬機器中的摸索,重灌系統不下十遍,遇到各種坑,終於成功部署,但是由於筆記本配置原因,導致機器非常卡。今天找了臺實驗室空置的伺服器重新安裝。過程主要參考陳沙克老師的技術部落格,也有自己改動的地方。
安裝步驟如下:
1.虛擬機器中安裝的是ubuntu14.04桌面版,伺服器中裝的是ubuntu14.04伺服器版本。實驗證明都可以。
2.由於單節點部署,所以不需要像官方文件那樣,開三個網絡卡,一個用作管理網,一個用作隧道網路,一個作為外網出口。這裡只要一個網絡卡就可以了,虛擬機器中用的NAT方式,伺服器的話直接靜態設的IP,保證能夠從該網絡卡上網即可。注意虛擬機器中,在cpu的設定裡,要開啟虛擬化的設定,否則在安裝過程中,會一直出錯,除錯一把就得一個小時,我在這裡浪費了很多時間。由於伺服器,之前部署過完全的openstack,所以已經支援虛擬化,也可以在BIOS中設定。
3.系統安裝完首先換源,國外的源太慢,我這裡換的是國內的163源,修改/etc/apt/sourcelist即可,具體做法百度。
4.安裝必要的包,ssh要通,git,python-pip ,要提前安裝好。
5.apt-get update更新系統並reboot重啟。
6.我的伺服器ip設定為:
auto em1
iface em1 inet static
address 192.168.1.200
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.1.1
因為伺服器連線的路由器的lan口是192.168.1.1,所以要在一個網段,保證伺服器能夠上網。floating-ip我設定在192.168.1.201----192.168.1.220。原因是伺服器配置有限,最多隻能開個十來臺虛擬機器,然後路由器的地址分配從100開始,所以我的IP設為200,避免與實驗室別的同學衝突。
7. 進入/home目錄下
cd /home
git clone http://git.trystack.cn/openstack-dev/devstack.git
8.目前Devstack指令碼已經不支援直接使用root身份執行,所以需要建立stack使用者執行
cd /home/devstack/tools/
./create-stack-user.sh
該命令會建立stack使用者並賦予它特權命令執行許可權
9.修改devstack目錄許可權,讓stack使用者可以執行
chown -R stack:stack /home/devstack
chmod 777 /dev/pts/0
10.切換的stack使用者下
su stack
cd /home/devstack
11.進入devstack目錄下,建立local.conf檔案,目前的自動安裝會根據這個配置檔案安裝,如果需要安裝不同版本的openstack或者選擇性的安裝相應的元件,可以參照官方文件修改local.conf檔案
[[local|localrc]]
# Define images to be automatically downloaded during the DevStack built process.
IMAGE_URLS="http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img"
#change github to trystack
GIT_BASE=${GIT_BASE:-http://git.trystack.cn}
NOVNC_REPO=${NOVNC_REPO:-http://git.trystack.cn/kanaka/noVNC.git}
# Credentials
DATABASE_PASSWORD=000361
ADMIN_PASSWORD=000361
SERVICE_PASSWORD=000361
SERVICE_TOKEN=000361
RABBIT_PASSWORD=000361
#FLAT_INTERFACE=em1
HOST_IP=192.168.1.200
SERVICE_HOST=192.168.1.200
MYSQL_HOST=192.168.1.200
RABBIT_HOST=192.168.1.200
GLANCE_HOSTPORT=192.168.1.200:9292
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="192.168.1.0/24"
FIXED_RANGE="10.0.0.0/24"
Q_FLOATING_ALLOCATION_POOL=start=192.168.1.201,end=192.168.1.220
PUBLIC_NETWORK_GATEWAY="192.168.1.1"
Q_L3_ENABLED=True
PUBLIC_INTERFACE=em1
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
# Work offline
#OFFLINE=True
# Reclone each time
RECLONE=yes
# Branches Now the devstack have bug in keystone and neutron for liberty. so we need use master
#KEYSTONE_BRANCH=stable/liberty
#NOVA_BRANCH=stable/liberty
#NEUTRON_BRANCH=stable/liberty
#SWIFT_BRANCH=stable/liberty
#GLANCE_BRANCH=stable/liberty
#CINDER_BRANCH=stable/liberty
#HEAT_BRANCH=stable/liberty
#TROVE_BRANCH=stable/liberty
#HORIZON_BRANCH=stable/liberty
#SAHARA_BRANCH=stable/liberty
#CEILOMETER_BRANCH=stable/liberty
# Logging
# -------
# By default ``stack.sh`` output only goes to the terminal where it runs. It can
# be configured to additionally log to a file by setting ``LOGFILE`` to the full
# path of the destination log file. A timestamp will be appended to the given name.
LOGFILE=/opt/stack/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
SCREEN_LOGDIR=/opt/stack/logs
# the number of days by setting ``LOGDAYS``.
LOGDAYS=1
# Database Backend MySQL
enable_service mysql
# RPC Backend RabbitMQ
enable_service rabbit
# Enable Keystone - OpenStack Identity Service
enable_service key
# Horizon - OpenStack Dashboard Service
enable_service horizon
# Enable Swift - Object Storage Service without replication.
enable_service s-proxy s-object s-container s-account
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
SWIFT_REPLICAS=1
# Enable Glance - OpenStack Image service
enable_service g-api g-reg
# Enable Cinder - Block Storage service for OpenStack
#VOLUME_GROUP="cinder-volumes"
enable_service cinder c-api c-vol c-sch c-bak
# Enable Heat (orchestration) Service
#enable_service heat h-api h-api-cfn h-api-cw h-eng
# Enable Trove (database) Service
enable_service trove tr-api tr-tmgr tr-cond
# Enable Sahara (data_processing) Service
#enable_service sahara
# Enable Tempest - The OpenStack Integration Test Suite
enable_service tempest
# Enabling Neutron (network) Service
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service neutron
## Neutron - Load Balancing
#enable_service q-lbaas
## Neutron - Firewall as a Service
#enable_service q-fwaas
## Neutron - VPN as a Service
#enable_service q-vpn
# VLAN configuration.
Q_PLUGIN=ml2
ENABLE_TENANT_VLANS=True
# GRE tunnel configuration
#Q_PLUGIN=ml2
#ENABLE_TENANT_TUNNELS=True
# VXLAN tunnel configuration
#Q_PLUGIN=ml2
#Q_ML2_TENANT_NETWORK_TYPE=vxlan
# Enable Ceilometer - Metering Service (metering + alarming)
enable_service ceilometer-acompute ceilometer-acentral ceilometer-collector ceilometer-api
enable_service ceilometer-alarm-notify ceilometer-alarm-eval
enable_service ceilometer-anotification
## Enable NoVNC
enable_service n-novnc
[[post-config|$NOVA_CONF]]
[DEFAULT]
# Ceilometer notification driver
instance_usage_audit=True
instance_usage_audit_period=hour
notify_on_state_change=vm_and_task_state
notification_driver=nova.openstack.common.notifier.rpc_notifier
notification_driver=ceilometer.compute.nova_notifier
12.執行
./stack.sh
13.成功安裝的結果:
This is your host IP address: 192.168.1.200
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.1.200/dashboard
Keystone is serving at http://192.168.1.200:5000/
The default users are: admin and demo
The password: 000361
安裝過程中會報錯,類似於沒有網橋,沒有br-int,沒有br-tun,沒有br-ex等,這是因為在啟動服務時訊息佇列順序可能發生錯誤,導致有些服務先啟動,有些後啟動,而openstack元件之間的耦合性非常高,所以出現這種情況,可以重複安裝,一般兩到三次便可成功安裝。
14測試安裝
谷歌瀏覽器登入
http://192.168.1.200/dashboard
登入檢查各項功能。
注:在後期實驗過程中,執行nova image-list或者製作映象時,提示ERROR (CommandError): You must provide a username or user ID via --os-username, --os-user-id, env[OS_USERNAME] or env[OS_USER_ID]
需要選擇使用者,類似於kilo完全部署中的source admin.py 或者source demo.py
這裡進入/home/devstack
source openrc admin admin
或者
source openrc demo demo
我安裝時出現的問題:
執行./stack.sh時,出現錯誤 [ERROR] ./stack.sh:148 If you wish to run this script anyway run with FORCE=yes,解決方法
$ echo "FORCE=yes" > localrc
$ ./stack.sh
參考連結:https://ask.openstack.org/en/question/1888/problem-with-installing-openstack/