1. 程式人生 > >在ubuntu16.04上通過devstack一鍵部署openstack(一)

在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/