CentOS Stream8 基于 Packstack 搭建 OpenStack 云平台全流程实战
CentOS-Stream-8-packstack安装OpenStack-Victoria
摘要:本文详细介绍了在 CentOS Stream 8 环境下使用 packstack 自动化部署 OpenStack Victoria 的完整流程。主要内容包括:1)前期资源与环境准备(虚拟机配置、网络拓扑规划);2)模板虚拟机准备(yum源配置、基础软件安装、系统清理);3)OpenStack 节点准备(克隆虚拟机、配置主机名、IP地址、NTP服务);4)packstack 安装与配置(生成应答文件、修改关键参数、关闭 NetworkManager);5)安装完成后的测试与优化(登录 Dashboard、开启 network 服务、配置命令补全)。通过分步操作指南和详细命令示例,帮助读者快速搭建可用的 OpenStack Victoria 环境。
前期准备
1、资源清单
- CentOS-Stream-8 (minimal安装) - CentOS-Stream-8-20240603.0-x86_64-dvd1.iso
- vmware workstation17.5
- OpenStack-Victoria
2、虚拟机硬件配置
- controller: 4CPU 8G内存 1张网卡:NAT 100G系统盘
- compute: 4CPU 8G内存 1张网卡:NAT 100G系统盘
- 按照个人情况配置内存
3、网络拓扑
vmware网络设置:
- NAT网络, 开启DHCP, 192.168.108.0/24, 网关192.168.108.2, DNS 192.168.108.2
说明:
- Windows环境vmware的NAT网络网关为192.168.108.2
- Linux环境vmware的NAT网络网关为192.168.108.1
/etc/hosts:
192.168.108.10 controller 192.168.108.11 compute步骤一:准备模板虚拟机
基于 CentOS-Stream-8 模板制作的模板,克隆出一个虚拟机(openstack_template),作为 openstack模板虚拟机。
配置yum源
完整克隆,克隆好后,开机配置
配置yum源
[root@localhost ~]# rm -rf /etc/yum.repos.d/*[root@localhost ~]# cat <<EOF > /etc/yum.repos.d/openstack.repo[centos-openstack-victoria]name=CentOS8- OpenStack victoriabaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/cloud/x86_64/openstack-victoria/gpgcheck=0enabled=1[highavailability]name=CentOS Stream8- HighAvailabilitybaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/HighAvailability/x86_64/os/gpgcheck=0enabled=1[nfV]name=CentOS Stream8- NFVbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/NFV/x86_64/os/gpgcheck=0enabled=1[rt]name=CentOS Stream8- RTbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/RT/x86_64/os/gpgcheck=0enabled=1[resilientstorage]name=CentOS Stream8- ResilientStoragebaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/ResilientStorage/x86_64/os/gpgcheck=0enabled=1[extras-common]name=CentOS Stream8- Extras packagesbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/extras-common/gpgcheck=0enabled=1[extras]name=CentOS Stream$releasever- Extrasbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/os/gpgcheck=0enabled=1[centos-ceph-pacific]name=CentOS - Ceph Pacificbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific/gpgcheck=0enabled=1[centos-rabbitmq-38]name=CentOS-8 - RabbitMQ38baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/messaging/x86_64/rabbitmq-38/gpgcheck=0enabled=1[centos-nfv-openvswitch]name=CentOS Stream8- NFV Openvswitchbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/nfv/x86_64/openvswitch-2/gpgcheck=0enabled=1[baseos]name=CentOS Stream8- BaseOSbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/BaseOS/x86_64/os/gpgcheck=0enabled=1[appstream]name=CentOS Stream8- AppStreambaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/AppStream/x86_64/os/gpgcheck=0enabled=1[powertools]name=CentOS Stream8- PowerToolsbaseurl=https://mirrors.aliyun.com/centos-vault/8-stream/PowerTools/x86_64/os/gpgcheck=0enabled=1EOF[root@localhost ~]# yum clean all[root@localhost ~]# yum makecache安装方便操作环境包及基础软件包
[root@localhost ~]# yum install -y bash-completion vim open-vm-tools net-tools chrony.x86_64[root@localhost ~]# source /usr/share/bash-completion/bash_completion设置/etc/hosts
[root@localhost ~]# echo '192.168.108.10 controller' >> /etc/hosts[root@localhost ~]# echo '192.168.108.11 compute' >> /etc/hosts关闭SELinux
[root@localhost ~]# sed -i '/^SELINUX=/CSELINUX=disabled/' /etc/selinux/config编辑网卡信息
[root@localhost ~]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts]# vim ifcfg-ens160配置内容:
TYPE=Ethernet BOOTPROTO=dhcp NAME=ens160 DEVICE=ens160 ONBOOT=yes清除密钥信息
[root@localhost ~]# cd /etc/ssh/[root@localhost ssh]# rm -rf ssh_host_*清除Machine ID
[root@localhost ~]# cat /dev/null > /etc/machine-id[root@localhost ~]# cat /etc/machine-id关闭操作系统并拍快照
[root@localhost ~]# poweroff步骤二:准备openstack节点
克隆虚拟机并修改基础配置
采用完全克隆方法克隆出其他2台虚拟机(openstack_controller,openstack_compute)。
同样的操作克隆计算节点
注意:2节点的CPU需要开启虚拟化支持。
两节点配置不同的IP,主机名
两节点分别开机,做以下配置。
配置主机名
controller:
[root@localhost ~]# hostnamectl set-hostname controllercompute:
[root@localhost ~]# hostnamectl set-hostname compute配置IP地址
controller:
[root@controller ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160配置内容:
TYPE=Ethernet BOOTPROTO=none #这行从dhcp变更为none NAME=ens160 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.108.10 NETMASK=255.255.255.0 GATEWAY=192.168.108.2 DNS1=192.168.108.2[root@controller ~]# nmcli connection reload ens160[root@controller ~]# nmcli connection up ens160compute:
[root@compute ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160配置内容:
TYPE=Ethernet BOOTPROTO=none #这行从dhcp变更为none NAME=ens160 DEVICE=ens160 ONBOOT=yes IPADDR=192.168.108.11 NETMASK=255.255.255.0 GATEWAY=192.168.108.2 DNS1=192.168.108.2[root@compute ~]# nmcli connection reload ens160[root@compute ~]# nmcli connection up ens160配置NTP
controller:
[root@controller ~]# vim /etc/chrony.conf修改配置:
3 # pool 2.centos.pool.ntp.org iburst 4 server ntp.aliyun.com iburst 22 # Allow NTP client access from local network. 23 #allow 192.168.0.0/16 24 allow 192.168.108.0/24启动服务:
[root@controller ~]# systemctl restart chronyd[root@controller ~]# systemctl enable chronydcompute:
[root@compute ~]# vim /etc/chrony.conf修改配置:
# pool 2.centos.pool.ntp.org iburst server controller iburst启动服务:
[root@compute ~]# systemctl restart chronyd[root@compute ~]# systemctl enable chronyd关闭操作系统,拍摄快照
controller:
[root@controller ~]# poweroffcompute:
[root@compute ~]# poweroff步骤三:安装OpenStack和测试
控制节点安装packstack
controller:
[root@controller ~]# yum install -y openstack-packstack生成应答文件
controller:
[root@controller ~]# packstack --gen-answer-file=answers.txtPackstack changed given value to required value /root/.ssh/id_rsa.pub Additional information: * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS plugin. Geneve will be used as the encapsulation methodfortenant networks更改应答文件
controller:
[root@controller ~]# vim answers.txt修改以下配置项:
60 CONFIG_HEAT_INSTALL=y 97 CONFIG_COMPUTE_HOSTS=192.168.108.10,192.168.108.11 909 CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:ens160 1169 CONFIG_PROVISION_DEMO=n修改密码(示例为huawei):
[root@controller ~]# sed -i.bak -r 's/(.+PW)=[0-9a-z]+\+\\/huawei/g' answers.txt关闭NetworkManager
CentOS 8 版本默认使用 NetworkManager 管理网络,但它会和 openstack 网络组件产生冲突,从而导致告警或错误。
controller:
[root@controller ~]# systemctl stop NetworkManager; systemctl disable NetworkManager; systemctl mask NetworkManagercompute:
[root@compute ~]# systemctl stop NetworkManager; systemctl disable NetworkManager; systemctl mask NetworkManager根据应答文件配置安装openstack
controller:
[root@controller ~]# packstack --answer-file=answers.txt注意:安装过程中,会在
Testing if ...controller.pp步骤停留很长时间,预计40-50分钟,其他步骤很快。
安装完成
安装成功后会输出以下信息:
- 登录凭据存储在
/root/keystoner_admin文件中。 - 访问 OpenStack Dashboard 浏览:
http://192.168.108.10/dashboard - 安装日志文件位于:
/var/tmp/packstack/20240920-102825-faid5f5g/openstack-setup.log
登录测试
- 用户名:admin
- 密码:huawei
开启network服务
controller:
[root@controller ~]# systemctl start network[root@controller ~]# systemctl enable networkcompute:
[root@compute ~]# systemctl start network[root@compute ~]# systemctl enable network配置OpenStack命令补全
# 将命令写入到/etc/bash_completion.d/, 路径一定要写正确[root@controller ~]# openstack complete >> /etc/bash_completion.d/complete关机拍快照
openstack_controller 和 openstack_compute 两个节点分别拍摄快照,至此安装结束。
