一个小白使用 devstack 部署 openstack 的心路历程

0.前言

做为一个想要入门云计算的人来讲,大多数人的第一步就是学习 openstack,而学习 openstack 的人面临的第一步就是第一个‘难题’,使用自动化部署工具 devstack 部署 openstack 环境。第一次接触这个东西,花了两天多时间在 Ubuntu Server 和 Ubuntu Desktop 的 16.04 版本上成功部署。有不少人说 Desktop 版有不少坑,亲测问题确实比 Server 版多,但都是可解决的。其中最对初学者不友好的就是网络问题,下面会介绍为何。因此若是你本身买了国外的 VPS 那就好办了,由于有个骚操做要用到,若是你网速好可能你遇不到这些问题就能够忽略。python

下面会分两个部分介绍,都会将 Server 和 Desktop 上的部署过程描述一遍。
教程推荐 官方的 Doc避坑指南
教程这个东西对于初学者不宜太多,容易乱,只要有一个正确的执行框架就好。碰到其余 bug 直接 Google 就好。git

而后介绍下个人环境吧github

  • Mac 10.12.6
  • VirtualBox 5.1.28
  • Ubuntu Server 16.04 4G+20G (临时测试 devstack,据说坑少)
  • Ubuntu Desktop 16.04 4G+80G (平时使用)
  • VPS(最好有) (因为是乞丐版,不适合直接部署和平时学习)

1.Ubuntu Server 版

安装 Ubuntu Server

首先确定是要在 Virtual Box 安装 Ubuntu Server 了,这一步略过。相信你已是接触过一段时间虚拟机的人了,可是一点注意,竟可能分多一点内存和硬盘。因为我不打算往后再这 Server 版使用,因此个人配置是 4G + 20Gubuntu

SSH 登陆虚拟机

当你建立完成以后面临的一个问题就是那个界面太丑了。。。因此若是能够在宿主机上操做就行了,SSH 正好知足你。
至于 SSH 不通使用不了的本身查查资料吧,这里我主要介绍网卡配置,我使用了两个网卡:
第一个:
vim



作端口映射,将主机的 2222 映射到虚拟机的 22,这条是为了之后使用 SSH。
第二个:

配完以后再在全局配置中设置你所选中的网卡启用 DHCP。对于网卡各类链接模式不熟的能够查查资料了解一下。

而后链接就是直接在主机下使用 后端

ssh -p 2222 fitzeng@127.0.0.1复制代码

fitzeng 改为你的用户名。
若是你出现各类问题连不上能够注意一下两点:
1.防火墙
2.把 ~/.ssh 文件夹下的 known_hosts 文件删了再重连bash

开始部署

这里的主教程以官方提供的为准,而且那些注意点我会更新。网络

部署的脚本要求是拥有 root 权限的非 root 用户。多线程

sudo useradd -s /bin/bash -d /opt/stack -m stack

echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo su - stack

cd /opt/stack
git clone https://git.openstack.org/openstack-dev/devstack
cd devstack复制代码

若是上面 clone 太慢或者 clone 不下来的话能够试试 github 的源。框架

git clone https://github.com/openstack-dev/devstack.git复制代码

而后就是添加配置了,若是不懂推荐直接使用官方页面介绍的。或者使用如下命令

cp samples/local.conf ./
vim local.conf复制代码

若是你幸运,讲道理最后执行 ./stack.sh 直接一路到底。。。可是还有不少坑正在等待着咱们。
但可是有一个很好的是他的 Log 和报错十分清新,很快能够定位问题所在,有时候直接搜 Log 都会出现解决方法。
若是脚本直接退出提示没有 HOST_IP。那么直接在 local.conf 后面添加

HOST_IP=x.x.x.x
GIT_BASE=https://github.com复制代码

HOST_IP具体是什么在你的虚拟机上 ifconfig 查看。而后推荐把 git 源换成 github 的。
这里你能够检测一下你的源有没有问题 apt-get update 有的话直接把有问题的源在 /etc/apt/sources.list.d/ 目录下移除,移除前建议备份一下。而后推荐 apt-get upgrade 一下,Python 版本保持默认的 2.7.X 就好,若是出现什么和 Python 3.4 不匹配的 Log 直接忽略。若是你换成 3.4 不少库会出问题。若是你是 Python 3.X,能够把 /user/bin/ 下的 Python2.X 连接到该目录下的 Python 文件。这时执行 python -V 就能看到结果了。

但但可是,上面只是解决了有形的 Bug,还有就是无形的 Bug,你将面临网络问题,若是你想顺畅点能够直接更换源。
修改 pip 源

mkdir ~/.pip
vim ~/.pip/pip.conf

填入:
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple复制代码

修改 sources.list:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list

填入:
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse复制代码

都改为 aliyun 的。到这时候若是你的网络没什么问题,可能会出点环境小问题,dkpg 和各类包等之类的问题,一搜网上基本都有解决方案。

但但可是,若是你的网速下载某些包不超 10Kb/s 那就要用骚操做了。。。由于会一直卡着,网一断又得从新开始,先 unstack,clean 再 stack,十分不友好。出现问题大可能是在下载某个 git 仓库和某些包的时候。尤为是 nova horizon 之类的,大小到了 300+M。

这里介绍一个方法:
思路是先 SSH 上你的国外 VPS,下载你的 git 仓库或其余文件。而后再 SCP 到你的虚拟机上。主要是这样不会中断,并且无形中就能够是多线程操做,开几个终端 SCP 好几个文件。
看看速度对比效果吧,
虚拟机上下载:


VPS 上下载:

以后本身 SCP 就行了

sudo scp -P 10800 -r root@xx.xx.xx.xx:/fitzeng/horizon /etc/stack/复制代码

-r 是 cp 文件夹,而后端口,IP 填你本身的后面跟目录。这里可能也有点慢,可是比以前的好并且稳定。



这一切操做都源于友好的 log 机制,看上面的图片咱们能够知道下载地址和存放目录,因此,知道这些手段就多了起来。
网速够快也能够直接在本地 clone。

有了这些操做基本就意味着你解决了网络问题,借助 google 基本能够解决其余库和环境的问题。
成功图上传一波:

2.Ubuntu Desktop 版

基本步骤是和前面一致的,出的问题可能就是你以前在 Ubuntu 上装过各类软件(我装的 Sogou 输入法,里面的 fcitx 源影响了速度,甚至有时候直接卡这不动),更改了软件源或者作过其它的工具更改,按照前面的配置亲测可行。若是你以前在 Ubuntu Server 版上装过,直接把文件 SCP 过来,若是虚拟机之间不能通信,能够先 SCP 到宿主机,再从宿主机经过文件共享的方式共享到 Ubuntu Desktop。
而后运行就能够了,有了前面的基础就很简单了。

那就看直接看结果吧:




3.后记

说实话,这不太算技术文章,纯属我的记录。原本不太想写,可是感受国内环境对开发者有点不友好,若是这篇文章能对初学者有部分帮助我就满意了,可以使初学者继续学习下去。而后这是部署完以后写的,部署的过程远不如写的这么轻松,可是我如今有信心去解决部署过程当中碰到的问题,这才是重点。但愿你也是。每一个人的环境都不同,出现的问题也不可能同样,因此若是你照上面作了尚未解决能够留言你们一块儿讨论。

最后:多谢阅读祝你们一遍过 ^_^

相关文章
相关标签/搜索