CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1
CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1
OpenStack及Kolla项目的最新稳定版产品不再提供对CentOS-Stream-9的容器镜像支持,但考虑到 Rocky-9对RHEL/CentOS-Stream-9进行了binary级别的兼容,因此在CentOS-Stream-9上仿冒Rocky-9进行容器化安装OpenStack 2024.1应该是可行的。
结论:方法可行,但在deploy阶段会遇到一些奇奇怪怪的问题,需要多一点耐心在destroy和deploy之间反复横跳。


部署过程(All-In-One模式):
su - root
dnf update -y
hostnamectl status
ip addr
echo "192.168.136.201 controller-openstack" | tee -a /etc/hosts
ssh-keygen -t rsa
ls -Fhlart $HOME/.ssh/
cat $HOME/.ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys
ls -Fhlart $HOME/.ssh/
chmod 644 $HOME/.ssh/authorized_keys
ssh controller-openstack
ssh root@controller-openstack
dnf update -y
dnf config-manager --enable crb
dnf repolist
dnf install -y git python3-devel libffi-devel gcc openssl-devel python3-libselinux
mkdir -vp /root/venv
python3 --version
python3 -m venv /root/venv/
ls -Fhlart /root/venv/
source /root/venv/bin/activate
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U pip
pip3 install 'ansible-core>=2.15,<2.16.99'
ansible --version
pip install git+https://opendev.org/openstack/kolla-ansible@stable/2024.1
ls -Fhlart /root/venv/
ls -Fhlart /root/venv/share/
ls -Fhlart /root/venv/share/kolla-ansible/
cat /root/venv/share/kolla-ansible/requirements.yml
ls -Fhlart /root/.ansible/collections/ansible_collections/
grep -n "docker_yum_url" /root/.ansible/collections/ansible_collections/*/*/*/*/*/* |tee -a /root/venv/ansible_collectionsTMP.txt
nano /root/.ansible/collections/ansible_collections/openstack/kolla/roles/docker/defaults/main.yml
grep -n "docker_yum_url" /root/.ansible/collections/ansible_collections/openstack/kolla/roles/docker/defaults/main.yml
mkdir -vp /etc/kolla
chown $USER:$USER /etc/kolla/
cp -r /root/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
cp /root/venv/share/kolla-ansible/ansible/inventory/all-in-one /etc/kolla/
cat -n /etc/hosts
nano /etc/kolla/all-in-one
head -n 20 /etc/kolla/all-in-one
nano /etc/kolla/globals.yml
grep -Ev "^#|^$" /etc/kolla/globals.yml
kolla-genpwd
grep -n "keystone_admin_password" /etc/kolla/passwords.yml
sed -i 's#keystone_admin_password:.*#keystone_admin_password: 自定义密码#g' /etc/kolla/passwords.yml
grep -n "keystone_admin_password" /etc/kolla/passwords.yml
lsblk
fdisk -l
pvcreate /dev/nvme0n1
pvdisplay
vgcreate cinder-volumes /dev/nvme0n1
vgdisplay
ansible -i /etc/kolla/all-in-one all -m ping
kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers -vvvv
kolla-ansible -i /etc/kolla/all-in-one prechecks -vvvv
kolla-ansible -i /etc/kolla/all-in-one pull -vvvv
docker image list
kolla-ansible -i /etc/kolla/all-in-one deploy -vvvv
docker ps
docker ps | wc -l
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/2024.1
kolla-ansible -i /etc/kolla/all-in-one post-deploy
/root/venv/share/kolla-ansible/init-runonce
ls -Fhlart /etc/kolla/
cat -n /etc/kolla/clouds.yaml
deactivate
本次部署用到的 globals.yml:
---
workaround_ansible_issue_8743: yes
kolla_base_distro: "rocky"
openstack_release: "2024.1"
kolla_internal_vip_address: "192.168.136.205"
kolla_external_vip_address: "{{ kolla_internal_vip_address }}"
kolla_container_engine: docker
docker_registry: quay.nju.edu.cn
network_interface: "ens160"
neutron_external_interface: "ens192"
neutron_plugin_agent: "openvswitch"
keepalived_virtual_router_id: "51"
enable_container_healthchecks: "yes"
enable_openstack_core: "yes"
enable_hacluster: "no"
enable_haproxy: "yes"
enable_keepalived: "{{ enable_haproxy | bool }}"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
cinder_volume_group: "cinder-volumes"
nova_compute_virt_type: "kvm"
nova_console: "novnc"
本次部署用到的 ansible-inventory 文件:【仅修改了前20行中的内容,其他部分保持不变】
[control]
controller-openstack
[network]
controller-openstack
[compute]
controller-openstack
[storage]
controller-openstack
[monitoring]
controller-openstack
[deployment]
controller-openstack
本次部署用到的 docker-image 清单:

quay.nju.edu.cn/openstack.kolla/nova-compute:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/keystone-ssh:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/keystone:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/placement-api:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/keystone-fernet:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/neutron-server:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/neutron-openvswitch-agent:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/cinder-volume:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/cinder-backup:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/neutron-metadata-agent:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/neutron-dhcp-agent:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/neutron-l3-agent:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/cinder-scheduler:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/cinder-api:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/horizon:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/nova-ssh:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/nova-novncproxy:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/nova-scheduler:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/nova-api:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/nova-conductor:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/glance-api:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/heat-api:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/heat-engine:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/heat-api-cfn:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/mariadb-server:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/nova-libvirt:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/openvswitch-vswitchd:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/kolla-toolbox:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/openvswitch-db-server:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/mariadb-clustercheck:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/fluentd:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/memcached:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/haproxy:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/rabbitmq:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/keepalived:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/cron:2024.1-rocky-9
quay.nju.edu.cn/openstack.kolla/iscsid:2024.1-rocky-9
相关文章:
CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1
CentOS-Stream-9仿冒Rocky-9通过Kolla-ansible部署OpenStack 2024.1 OpenStack及Kolla项目的最新稳定版产品不再提供对CentOS-Stream-9的容器镜像支持,但考虑到 Rocky-9对RHEL/CentOS-Stream-9进行了binary级别的兼容,因此在CentOS-Stream-9上仿冒Rocky…...
Python机器学习实战:分类算法之支持向量机-垃圾邮件识别
为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 目录 支持向量机算法介绍 练习题 Python代码与分析 支持向量机和朴素贝叶斯的联系 支持向量机算法介绍 支持向量机&#…...
秒懂Linux之自动化构建工具-make/Makefile
目录 一.前文摘要 二.make/Makefile 一.前文摘要 在学习自动化构建工具前我们先来补充一下动静态库的相关指令 动态库指令 gcc -o 文件(重命名) 源文件 静态库指令 gcc -o 文件(重命名) 源文件 -static 二.make/Makefile 怎么形…...
.net core + vue 搭建前后端分离的框架
目录 步骤一:创建.NET Core后端项目 步骤二:创建Vue.js前端项目 步骤三:集成后端和前端项目 步骤一:创建.NET Core后端项目 安装.NET Core SDK: 确保你的开发环境中已安装了最新版本的.NET Core SDK。你可以从 .NET …...
小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用
小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用 案例分析 案例概述 使用 KVM 及 GlusterFS 技术,结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余 分布式复制卷 主要用于需要冗余的情况下把一个文件存放在两个或两个…...
centos安装mysql 5.7版本
因为要继续第二阶段的学习,windows里面的mysql版本,很多设置没有。因此弄了一个虚拟机,安装了centos,在里面安装mysql。 看了《centos安装mysql 5.7版本》里面有设置my.cnf文件,这个在虚拟机里面编辑,手动敲…...
SQL——查询sql执行顺序
在SQL查询中,虽然我们在编写查询时遵循一定的逻辑顺序(SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY),但实际上,数据库在执行这些查询时遵循的是不同的物理执行顺序。这个物理执行顺序是数据库管理系统࿰…...
钉耙编程(3)
1001深度自同构 Problem Description 对于无向图中的点,定义一个点的度为与其相连的边的条数。 对于一棵有根树,定义一个点的深度为该点到根的距离。 对于由若干有根树构成的森林,定义该森林是深度自同构的,当且仅当森林中任意…...
python 线程池处理文件
使用多线程来加速文件复制的过程,可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。代码如下: import glob import os import shutil from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath image.replace…...
AI技术和大模型对人才市场的影响
012024 AI技术和大模型 2024年AI技术和大模型呈现出多元化和深入融合的趋势,以下是一些关键的技术方向和特点: 1. 生成式AI 生成式AI(Generative AI)在2024年继续快速发展,它能够创造全新的内容,而不仅仅…...
解释“location”和“position”
Explanation of “Location” and “Position” Location and position are terms often used interchangeably in everyday language, but they can have distinct meanings depending on the context. Below, we explore their definitions, differences, and examples of u…...
Netty 必知必会(三)—— ByteBuf
Netty ByteBuf工作原理,和NIO里ByteBuffer区别? Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。 ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,…...
芋道以开源之名行下作之事 恬不知耻 标榜自己开源 公开源码+sql 不用再加入知识星球
资源 链接: https://pan.baidu.com/s/1TeuxbAUfLQ5_BqMBF1kniQ?pwdcqud 提 取码: cqud 依次为后端、补充版的sql、前端 此文档内安装部署等一应俱全...
wordpress中,wp_posts 文章的状态 有哪些,分别对应什么数值
在WordPress中,wp_posts 表存储了网站上的所有内容,包括文章(posts)、页面(pages)、自定义文章类型(custom post types)等。这个表有一个名为 post_status 的字段,用于标…...
输入成绩问题(c语言)
1.问题:期中考试开始了,大家想要取得好成绩,争夺前五名,从键盘输入n个学生成绩(不超过40个),输出每组的前五名的成绩 两行,第一行输入一个整数,表示n个学生(…...
基于域名+基于ip+基于端口的虚拟主机+上线商务系统
一、回顾 1.jdk环境 tomcat服务器需要jdk环境 版本对应 tomcat9>jdk1.8 配置系统变量JAVA_HOME sed -i $aexport JAVA_HOME/usr/local/jdk22/ /etc/profile sed -i $aexport PATH$JAVA_HOME/bin:$PATH /etc/profile source /etc/profile java -version java…...
vue每次路由跳转前将页面滚动到顶部
在Vue.js应用中,特别是使用Vue Router进行页面路由管理时,router.beforeEach是一个非常有用的导航守卫(Navigation Guard)。它允许你在路由跳转之前执行一些逻辑,比如权限验证、页面跳转前的数据加载、滚动位置重置等。…...
【Qt】QDateTimeEdit
在Qt中,QDateEdit是用于选择日期的微调框,QTimeEdit是用于选择小时和分钟的微调框 QDateTimeEdit则是基于QDateEdit和QTimeEdit的组合控件,能够同时显示日期和时间,并允许用户以交互方式编辑日期 常用属性 属性说明dateTime时间…...
Redis和Mysql如何保持数据一致性
一般情况下,Redis是用来实现应用和数据库之间读操作得缓存层,主要目的是减少数据库IO,还可以提升数据的IO性能。 当应用程序需要去读取某个数据时,会首先尝试去Redis里面加载,如果命中就直接返回,如果没有…...
Java中Optional相关
Java中Optional相关 orElse 提供默认值以确保不会返回 null。 适用于默认情况下的备选值或简单计算结果。 // 如果 optionalName 为空,返回 "Unknown" Optional<String> optionalName Optional.empty(); String result optionalName.orElse(&q…...
FlexASIO音频优化实战指南:从延迟卡顿到高保真体验的转型方案
FlexASIO音频优化实战指南:从延迟卡顿到高保真体验的转型方案 【免费下载链接】FlexASIO A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME. 项目地址: https://g…...
为什么DownKyi能成为B站视频下载的首选工具?3个让你无法拒绝的理由
为什么DownKyi能成为B站视频下载的首选工具?3个让你无法拒绝的理由 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去…...
三步搞定全网资源下载:手把手教你使用res-downloader网络资源嗅探工具
三步搞定全网资源下载:手把手教你使用res-downloader网络资源嗅探工具 【免费下载链接】res-downloader 资源下载器、网络资源嗅探,支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: http…...
词向量实战指南:从基础原理到工业级部署的完整教程
词向量实战指南:从基础原理到工业级部署的完整教程 【免费下载链接】AI-For-Beginners 微软推出的人工智能入门指南项目,适合对人工智能和机器学习感兴趣的人士学习入门知识,内容包括基本概念、算法和实践案例。特点是简单易用,内…...
告别Delay!用STM32硬件定时器实现非阻塞软件IIC,实测F429/H743性能对比
告别Delay!用STM32硬件定时器实现非阻塞软件IIC,实测F429/H743性能对比 在嵌入式开发中,IIC总线因其简单的两线制设计和广泛的外设支持,成为连接各类传感器的首选方案。然而,当MCU缺乏硬件IIC外设或引脚被占用时&#…...
别再只盯着代码了!手把手教你读懂Cartographer的PGM和YAML地图文件(附Notepad++实操)
从二进制到坐标系:Cartographer地图文件深度解析与实战调参指南 当你第一次打开Cartographer生成的.pgm和.yaml文件时,是否感觉像在解读某种外星密码?那些数字和参数背后,藏着机器人如何理解世界的秘密。本文将带你像侦探一样拆解…...
QT项目实战:zlib数据压缩与解压缩的集成与应用
1. 为什么QT项目需要zlib数据压缩 在开发QT应用程序时,我们经常会遇到需要处理大量数据的场景。比如网络传输中的文件发送、本地日志文件的存储、或者游戏资源包的打包。这时候数据压缩就显得尤为重要了。zlib作为一个轻量级的高效压缩库,可以帮助我们将…...
AudioSeal Pixel Studio代码实例:检测结果可视化图表生成脚本
AudioSeal Pixel Studio代码实例:检测结果可视化图表生成脚本 1. 工具概述与核心价值 AudioSeal Pixel Studio是一款基于Meta开源的AudioSeal算法构建的专业音频水印工具。它能够在保持原始音频质量的前提下,为音频文件嵌入几乎不可察觉的数字水印&…...
2026年国产化人事管理系统TOP10榜单发布:从信创适配到AI提效的选型指南
国产化人事管理系统的竞争,已经从基础人事与算薪,上升到信创环境适配、集团多级管控、复杂用工合规,以及AI在招聘与员工服务中的真实提效。2026年这份TOP10榜单中,红海云更偏向国央企与大型集团的一体化与信创全栈适配;…...
Windows安全中心总提示驱动不兼容?手把手教你清理老旧驱动,为内存完整性扫清障碍
Windows驱动深度清理指南:彻底解决内存完整性兼容性问题 每次打开Windows安全中心,那个刺眼的"驱动不兼容"提示总让人心烦?这不仅仅是烦人的弹窗问题,更是系统安全与性能的潜在威胁。作为长期使用Windows的资深用户&…...
