安装OpenStack

Page content

最近因为课程需要安装OpenStack,现在就记录一下安装 OpenStack all-in-one 的方法和步骤。
因为仅仅为了做实验,权衡了各种安装方法后选择了使用DevStack。

如果您是在国外,或者装置在国外,或者您有特殊方法让您的装置出国,那么安装将会相当简单。
如果不是,那采取这种方法来安装的话会麻烦不少。


首先介绍一下所使用的环境。
作业系统方面所使用的是Ubuntu Server 20.04.4 LTS
将要安装 OpenStack 版本为 Zed
作业系统中需要预先安装好gitpip

准备工作

如果装置在中国,
建议先更改DNS和让各种工具走代理。

更改DNS

Ubuntu Server 20.04 使用了netplan,更改DNS需要修改netplan相关的配置文件
※请按照实际情况修改为装置上所对应的文件名。

vim /etc/netplan/00-installer-config.yaml  

然后在对应网卡上添加相关参数,修改完的文件看起来应该是这样。

network:  
  ethernets:  
    ens33:  
      dhcp4: true  
      nameservers:  
        addresses: [8.8.8.8, 8.8.4.4]  
  version: 2  

然后让systemd-resolved不要使用127.0.0.53进行解析。

ln -s -f /run/systemd/resolve/resolv.conf /etc/resolv.conf  

使用代理

前提是您已施展了魔法。
首先是往系统添加HTTP_PROXYHTTPS_PROXY
假定魔法的IP位址为127.0.0.1,连接埠为1080

export HTTP_PROXY="http://127.0.0.1:1080"  
export HTTPS_PROXY="http://127.0.0.1:1080"  

建议不要添加socks代理,因为加进去之后pip有可能会出现问题。
接下来让git走代理,执行以下指令:

git config --global http.proxy http://127.0.0.1:1080  

然后让pip也走代理,
pip属实比较离谱。网上都说设定好了HTTP_PROXY之后pip自己会走代理。但是我看来看去都好像它好像都完全没有走代理。pip如果想走代理的话,需要每次在指令后加--proxy这个flag。pip也不像git那样能一行指令使它全部都走代理。
后来我想到了可以用alias

alias pip="pip --proxy http://127.0.0.1:1080"  
alias pip3="pip3 --proxy http://127.0.0.1:1080"  

至此,准备工作就完成了。
另外建议在此时先 take snapshot,以备不时之需。
take snapshot

开始安装

下面的步骤基本上都在DevStack的文档上复制粘贴就行。
以下是节选自文档,并翻译。

下载 DevStack

git clone https://opendev.org/openstack/devstack  
cd devstack  

devstack这个repo中包含了安装OpenStack所需的脚本、模板和配置文件等。

创建local.conf

devstack的根目录下,创建local.conf这个配置文件。
这个文件包含一些组件的密码。
将以下粘贴进去,其中ADMIN_PASSWORD可以改成你自己的密码。

[[local|localrc]]  
ADMIN_PASSWORD=secret  
DATABASE_PASSWORD=$ADMIN_PASSWORD  
RABBIT_PASSWORD=$ADMIN_PASSWORD  
SERVICE_PASSWORD=$ADMIN_PASSWORD  

万事俱备,开始安装!

./stack.sh  

接下来,
请坐和放宽,执行此任务需要一定的时间。
海内存知己,天涯若比邻,请稍等……
DevStack正在帮你搞定一切。
这通常不会太久。
它正在处理一些事情。
再等一下下就好了,请不要关闭电脑。
不巧的是,它花费的时间比通常要长。
……
滚回到以前的版本
【确定】【取消】
rollback
(((全部划掉

如果顺利的话,他就会显示这个,就是安装完成了。

This is your host IP address: 192.168.70.140  
This is your host IPv6 address: ::1  
Horizon is now available at http://192.168.70.140/dashboard  
Keystone is serving at http://192.168.70.140/identity/  
The default users are: admin and demo  
The password: 114514  
  
Services are running under systemd unit files.  
For more information see:  
https://docs.openstack.org/devstack/latest/systemd.html  
  
DevStack Version: zed  
Change: 48417ca241cacff8f4398910792489a59a359afb Merge "Drop centos 8 stream testing" 2022-04-26 19:57:12 +0000  
OS Version: Ubuntu 20.04 focal  
  
2022-04-27 00:56:28.051 | stack.sh completed in 1562 seconds.  

如果你不幸出现问题需要滚回,那么,
rollback
请!
如果不想这么暴力的话,可以执行devstack目录下的clean.shunstack.sh,然后再sudo rm -rf /opt/stack,然后就可以重新来过了。

我在安装的时候遇到了各种各样的问题,
包括但不限于什么 sha256checksum fail,什么连接到github空路由、什么pip安装依赖fail,balabala的,基本上出现这种问题的原因都是没有留学,基本上检查一下你的电脑和里面的软件有没有成功留学,重新运行一下安装程序就OK。

done


ref:
DevStack - DevStack documentation
How to Set DNS Nameservers on Ubuntu 18.04
Ubuntu系统上systemd-resolved不使用127.0.0.53的方法


番外:下载和导入镜像

下载

OpenStack自带一个用于测试的CirrOS
如果想用其他的作业系统,除了自己制作镜像,还可以下载现成的。
OpenStack提供了一个列表,可以直接去下载。

比如说我现在想整一个debian的。

debian

点进去这个 Debian provides images for direct download
然后找到你所需要的东西,比如说我现在需要这个.qcow2格式的。

debian1

直接下载。

导入

下载完后,打开 OpenStack 的 dashboard.

Import

左侧菜单依次选择 Project -> Compute -> Images
进入Image页面后,选择 Create Image
然后该选啥选啥。

Import

最后点下面蓝色的Create Image,然后坐和放宽等它上传完,就可以了。