CentOS中使用Packstack(RDO)快速部署OpenStack单节点实验环境

Packstack主要是由Redhat推出的用于概念验证(PoC)环境快速部署的工具。Packstack是一个命令行工具,它使用Python封装了Puppet模块,通过SSH在服务器上部署OpenStack。使用Packstack可以快速部署一套OpenStack环境,适合初学者用来体验OpenStack的功能,熟悉基础的OpenStack命令。但是因为隐藏了技术细节,还是需要仔细查看OpenStack官方文档,然后一步步手工安装OpenStack的各个组件,来加深对OpenStack的理解。

OpenStack与CentOS兼容情况


OpenStack版本 RedHat6/CentOS6 RedHat7/CentOS7 RedHat8/CentOS8 RedHat9/CentOS9
Diablo × x x
Essex × x x
Folsom × x x
Grizzly × x x
Havana × x x
Icehouse x x
Juno x x x
Kilo x x x
Liberty x x x
Mitaka x x x
Newton x x x
Ocata x x x
Pike x x x
Queens x x x
Rocky x x x
Stein x x x
Train x x
Ussuri x x x
Victoria x x x
Wallaby x x x
Xena x x x
Yoga x x
Zed x x x
Antelope x x x

环境规划


主机名 配置 操作系统 IP地址 OpenStack版本 备注
allinone 4核8G CentOS7.9(最小化安装) 10.211.55.4 Rocky 开启虚拟化支持

系统初始化


配置主机名

1
hostnamectl set-hostname allinone

添加本地host解析

1
2
3
cat >> /etc/hosts << EOF
10.211.55.4 allinone
EOF

关闭NetworkManager服务

1
2
systemctl stop NetworkManager
systemctl disable NetworkManager

关闭防火墙

1
2
systemctl stop firewalld
systemctl disable firewalld

关闭selinux

1
2
3
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
reboot

安装软件库


更新已安装的软件包

1
yum update -y

安装RDO库

1
yum install https://rdo.fedorapeople.org/rdo-release.rpm -y

说明
CentOS7上最新支持OpenStack Train版本,因此上述命令安装的是OpenStack Train版本的RDO库,如果想要安装OpenStack之前的版本,可以访问https://repos.fedorapeople.org/repos/openstack/找到对应版本的rpm文件安装即可。例如本文要安装的是OpenStack Rocky版,安装命令如下

1
yum install https://repos.fedorapeople.org/repos/openstack/openstack-rocky/rdo-release-rocky-2.noarch.rpm -y

安装Packstack


1
yum install openstack-packstack -y

安装OpenStack


快速运行

执行以下命令在本机上部署所有服务

1
packstack --allinone

说明
可以通过执行packstack --help查询命令参数,并根据实际情况配置选择安装哪些服务,指定部分配置。以下是我剔除部分非必须服务并增加外部网卡配置参数的命令,其中os-neutron-ovs-bridge-interfaces参数的网卡名称需根据实际环境修改

1
packstack --allinone --os-swift-install=n --os-aodh-install=n --os-heat-install=n --os-heat-cfn-install=n --os-ceilometer-install=n --provision-demo=n --provision-tempest=n --os-neutron-ovs-bridge-mappings=extnet:br-ex --os-neutron-ovs-bridge-interfaces=br-ex:eth0

非交互式运行

使用下述命令生成一个answer file

1
packstack --gen-answer-file=config.txt

编辑answer file文件,每个配置项都含有详细的说明,例如我们不想安装glance,只需要将CONFIG_GLANCE_INSTALL设置为n即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[general]

# Path to a public key to install on servers. If a usable key has not
# been installed on the remote servers, the user is prompted for a
# password and this key is installed so the password will not be
# required again.
CONFIG_SSH_KEY=/root/.ssh/id_rsa.pub

# Default password to be used everywhere (overridden by passwords set
# for individual services or users).
CONFIG_DEFAULT_PASSWORD=

# The amount of service workers/threads to use for each service.
# Useful to tweak when you have memory constraints. Defaults to the
# amount of cores on the system.
CONFIG_SERVICE_WORKERS=%{::processorcount}

# Specify 'y' to install MariaDB. ['y', 'n']
CONFIG_MARIADB_INSTALL=y

# Specify 'y' to install OpenStack Image Service (glance). ['y', 'n']
CONFIG_GLANCE_INSTALL=y

......

运行以下命令开始部署

1
packstack --answer-file=config.txt

安装成功后会出现**** Installation completed successfully ******的提示,类似如下。

1
2
3
4
5
6
7
8
9
10
 **** Installation completed successfully ******

Additional information:
* A new answerfile was created in: /root/packstack-answers-20230131-235826.txt
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* File /root/keystonerc_admin has been created on OpenStack client host 10.211.55.4. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://10.211.55.4/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* The installation log file is available at: /var/tmp/packstack/20230131-235826-wDHV9o/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20230131-235826-wDHV9o/manifests

根据提示访问http://10.211.55.4/dashboard打开OpenStack Dashboard,登录账号密码查看/root/keystonerc_admin中的OS_USERNAMEOS_PASSWORD变量获取

上传cirros镜像


执行以下命令下载cirros镜像

说明
cirros官网在国内访问可能会受限,可通过其他途径下载镜像后再上传到服务器

1
wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img

执行以下命令上传cirros镜像

1
2
source /root/keystonerc_admin
glance image-create --name "cirros-0.3.5" --file /root/cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility public --property hw_qemu_guest_agent=yes --progress

刷新OpenStack Dashboard,单击管理员>计算>镜像可以看到刚上传的cirros镜像

创建网络与路由


创建内部网络

左上角选择admin租户,单击管理员>网络>网络,单击创建网络

填写名称,项目选择admin,供应商网络类型选择VXLAN,段ID在1~16777215之间自定义即可,勾选共享的,单击下一步

填写子网名称网络地址网关IP,单击下一步

单击已创建完成内部网络创建

创建外部网络

左上角选择admin租户,单击管理员>网络>网络,单击创建网络

填写名称,项目选择admin,供应商网络类型选择Flat,物理网络填写extnet,勾选共享的外部网络,单击下一步

填写子网名称网络地址网关IP,单击下一步

说明
外部网络的网络地址与网关IP均要与部署OpenStack主机的网段和网关保持一致

取消勾选激活DHCP,单击已创建完成外部网络创建

创建路由器并绑定接口

左上角选择admin租户,单击项目>网络>路由,单击新建路由

填写路由名称,单击新建路由完成路由创建

单击创建成功后的路由右侧的设置网关

外部网络选择上面创建的外部网络(本文中为PublicNet),单击提交完成外部网关接口添加

单击路由名称进入详情页

选择接口选项卡,单击增加接口

子网选择上面创建的内部网络(本文中为PrivateNet),单击提交完成内部接口添加

创建云服务器


左上角选择admin租户,单击项目>计算>实例,单击创建实例

填写实例名称,单击下一项

设置卷大小(GB),选择是否创建新卷删除实例时是否删除卷,选择镜像文件,单击下一项

选择实例类型,单击下一项

选择虚拟机所在网络,单击创建实例开始云服务器创建,其余配置保持默认即可

说明
不要把云服务器创建在外部网络中

等待云服务器创建成功后可单击右侧操作栏中的控制台进入云服务器控制台,验证云服务器网络是否正常。至此,一套OpenStack单节点实验环境部署完成

参考文档