一个计算机技术爱好者与学习者

0%

好好学OpenStack:VirtualBox中安装OpenStack

1. 前言

OpenStack的安装是一个难点,非常难。哪怕已经安装过OpenStack,再次安装,也不敢说一定成功。安装过程中某处细微变化,也许就会出现各种奇葩错误。

总的来说,OpenStack大致分为4种安装方式:
1、基于虚拟机的快速体验安装。
这是最简单的方法,把搭建好环境的虚拟机运行起来即可。但是,遗憾的是,在网上没有找到OpenStack的虚拟机镜像。

2、基于DevStack快速脚本安装。
这是OpenStack官方推荐的方式,安装速度较快,基于Folsom版本。但是,安装过程中一言不合就报错,困难重重。

3、使用自动化安装工具。
RDO、Fuel、Puppet、Chef、Salt等,都是OpenStack的自动化安装工具。说是自动化安装工具,实际上安装配置时,也是非常繁琐。

4、手动安装。
这种方式最困难,但是实际生产环境下,基本都需要手动安装。

本文,就探讨一下在VirtualBox中使用DevStack安装OpenStack的步骤。也就是说,我们要自己创建一个OpenStack的虚拟机镜像。

2. 系统准备

1、VirtualBox中安装好Ubuntu16,至少需要内存4G,硬盘20G。

2、配置好Ubuntu16的网络地址为192.169.56.102。

3、安装好ssh服务,方便远程操作。

步骤2和3可以参考《VirtualBox下CentOS7和Ubuntu16.04网络配置》

3. 环境准备

1、安装git
apt-get install git

2、安装python
apt-get install python

3、添加stack用户
useradd -s /bin/bash -d /opt/stack -m stack

4、给stack用户添加sudo权限
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

5、切换到stack用户
su - stack

6、下载devstack
git clone https://git.openstack.org/openstack-dev/devstack
或者
git clone https://github.com/openstack-dev/devstack

推荐从github下载。速度缓慢,请耐心等待。

7、切换到stable/newton分支
cd devstack

git checkout stable/newton

4. 配置devstack

4.1. 创建local.conf

在devstack目录下创建local.conf文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[[local|localrc]]
ADMIN_PASSWORD=voidking
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

# Branches
KEYSTONE_BRANCH=stable/newton
NOVA_BRANCH=stable/newton
NEUTRON_BRANCH=stable/newton
SWIFT_BRANCH=stable/newton
GLANCE_BRANCH=stable/newton
CINDER_BRANCH=stable/newton

# Use 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

# Enable heat services
enable_service h-eng h-api h-api-cfn h-api-cw

# Enable heat plugin
enable_plugin heat http://git.trystack.cn/openstack/heat.git stable/newton

IMAGE_URL_SITE="http://download.fedoraproject.org"
IMAGE_URL_PATH="/pub/fedora/linux/releases/25/CloudImages/x86_64/images/"
IMAGE_URL_FILE="Fedora-Cloud-Base-25-1.3.x86_64.qcow2"
IMAGE_URLS+=","$IMAGE_URL_SITE$IMAGE_URL_PATH$IMAGE_URL_FILE

# Service/Dashboard IP
FLOATING_RANGE=192.168.1.224/27
HOST_IP=192.168.56.102
FLAT_INTERFACE=enp0s3

4.2. local.conf说明

1、密码配置

1
2
3
4
ADMIN_PASSWORD=voidking
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

2、git仓库
devstack默认会从 https://git.openstack.org 上下载openstack组件,那是相当的慢。故在local.conf必须要把仓库替换成其他源,国内推荐git.trystack.cn。注意,trystack用的是http,不是https。

1
GIT_BASE=http://git.trystack.cn

或者

1
GIT_BASE=https://github.com

3、branch
保证与devstack的branch一致,避免不可预知的问题。

1
NOVA_BRANCH=stable/newton

4、Service/Dashboard IP
与虚拟机IP保持一致。

1
HOST_IP=192.168.56.102

4.3. 更换pypi源(可选)

devstack默认python源为 https://pypi.python.org ,国内访问非常慢。可以从 https://www.pypi-mirrors.org/ 选一个国内的镜像,把镜像地址写到pip.conf文件,并放到/root/.pip/pip.conf以及/home/stack/.pip/pip.conf。

1
2
[global]
index-url = https://pypi.doubanio.com/simple

5. 安装devstack

1、切换stack用户,在devstack目录下。
./stack.sh

安装过程中,会三次提示输入密码,这些密码需要和local.conf中保持一致。

如果下载报错了。。。,请重新执行:
./stack.sh

这一步非常久,郝同学用了六个多小时,请耐心等待。

3、安装成功,提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
=========================
Total runtime 2982

run_process 104
test_with_retry 6
apt-get-update 22
pip_install 462
restart_apache_server 15
wait_for_service 26
apt-get 12
=========================

This is your host IP address: 192.168.56.102
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.56.102/dashboard
Keystone is serving at http://192.168.56.102/identity/
The default users are: admin and demo
The password: voidking
2017-06-15 01:01:59.770 | WARNING:
2017-06-15 01:01:59.771 | Using lib/neutron-legacy is deprecated, and it will be removed in the future
2017-06-15 01:01:59.771 | stack.sh completed in 2982 seconds.

4、大功告成,这时就可以通过浏览器访问openstack服务了!
访问地址:http://192.168.56.102/dashboard

PS:如果这一步无法访问,提示“Internal Server Error”,那么需要手动把ip地址加到local_settings.py里的ALLOWED_HOSTS字段。
vim /opt/stack/horizon/openstack_dashboard/local/local_settings.py

1
2
3
4
5
# If horizon is running in production (DEBUG is False), set this
# with the list of host/domain names that the application can serve.
# For more information see:
# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
ALLOWED_HOSTS = ['*']

然后重启apache2服务,service apache2 restart

5、输入用户名admin,密码voidking,进入管理面板。

6. 书签