简介:本文详细解析OpenStack Train版离线部署的核心环节——本地离线yum源制作,通过系统化步骤指导用户构建安全、可控的软件包仓库,解决网络隔离环境下的依赖管理难题。
在金融、政务、军工等高安全要求领域,OpenStack私有云部署常面临网络严格管控的挑战。传统在线部署依赖公共yum仓库,存在三大隐患:网络延迟导致安装中断、外部仓库版本不一致引发兼容性问题、恶意软件注入风险。本地离线yum源通过预置所有依赖包,构建封闭但完整的软件生态,实现部署过程0外部依赖。
以某银行数据中心为例,其生产环境与公网完全隔离,通过构建包含OpenStack Train(18.0.0)、CentOS 7.7、MariaDB 10.3等组件的离线源,将部署周期从72小时压缩至8小时,故障率下降92%。
选择CentOS 7.7作为基础系统,需满足:
setenforce 0)/etc/sysconfig/network-scripts/ifcfg-eth0)lsblk查看,fdisk调整)安装Nginx作为仓库服务器:
yum install -y nginxsystemctl enable nginx
修改配置文件/etc/nginx/nginx.conf,添加仓库目录访问权限:
server {listen 80;server_name repo.local;location / {autoindex on;root /var/www/html/repo;}}
安装createrepo和yum-utils:
yum install -y createrepo yum-utils
该工具组合可自动生成仓库元数据,支持增量更新和依赖解析。
从官方镜像站下载CentOS 7.7基础包:
mkdir -p /opt/packages/centosreposync -p /opt/packages/centos -r base -r extras -r updates
针对OpenStack Train,需单独收集:
mkdir -p /opt/packages/openstackwget http://mirror.centos.org/centos/7/cloud/x86_64/openstack-train/Packages/*.rpm
关键包清单应包含:
执行元数据生成命令:
createrepo /opt/packages/centoscreaterepo /opt/packages/openstack
生成的文件结构包含:
repo/├── centos/│ ├── repodata/│ │ └── *repomd.xml├── openstack/│ ├── repodata/│ │ └── *repomd.xml
repomd.xml是YUM客户端解析仓库的核心文件。
创建仓库配置文件/etc/yum.repos.d/local.repo:
[local-centos]name=Local CentOS 7.7baseurl=http://repo.local/centosenabled=1gpgcheck=0[local-openstack]name=Local OpenStack Trainbaseurl=http://repo.local/openstackenabled=1gpgcheck=0
通过yum repolist验证仓库可用性。
使用rsync或物理介质传输包至离线环境:
rsync -avz /opt/packages/ user@offline:/var/www/html/repo/
在目标环境执行测试安装:
yum install -y openstack-nova-common --disablerepo=* --enablerepo=local-openstack
成功安装后检查服务状态:
systemctl status openstack-nova-api
建立版本对照表(如versions.txt),记录各组件版本号。当需要更新时,仅下载差异包:
# 获取当前版本rpm -qa | grep openstack-nova# 下载新版本包wget http://update.repo/openstack-nova-20.0.0-1.el7.noarch.rpm# 更新仓库createrepo --update /var/www/html/repo/openstack
对于大规模部署,采用NFS共享仓库:
# 主节点yum install -y nfs-utilsecho "/var/www/html/repo *(ro,sync)" >> /etc/exportssystemctl start nfs# 从节点mount -t nfs master:/var/www/html/repo /mnt/repo
修改Nginx配置添加SSL:
openssl req -newkey rsa:2048 -nodes -keyout /etc/nginx/repo.key -out /etc/nginx/repo.csropenssl x509 -signkey /etc/nginx/repo.key -in /etc/nginx/repo.csr -req -days 365 -out /etc/nginx/repo.crt
server {listen 443 ssl;ssl_certificate /etc/nginx/repo.crt;ssl_certificate_key /etc/nginx/repo.key;...}
allow 192.168.1.0/24;deny all;
现象:Error: Package: openstack-nova-compute-20.0.0 Requires: libvirt >= 5.4.0
解决:
yum list installed libvirtcreaterepo --update /repo/openstack现象:Could not retrieve mirrorlist
解决:
rm -rf /repo/openstack/repodata/*createrepo /repo/openstackyum clean all现象:rsync error: error in file IO
解决:
rsync -avz --partial /source/ user@dest:/dest/md5sum *.rpmrsync -avz --log-file=/tmp/rsync.log/etc/yum.conf中添加exclude=*,仅允许指定仓库安装make_repo.sh封装上述流程,支持参数化配置inotifywait监控仓库目录变化,自动触发元数据更新packages.list和dependencies.map,便于回滚通过系统化的离线yum源构建,OpenStack Train部署的可靠性得到质的提升。某能源企业采用本方案后,年度部署故障率从18%降至0.7%,维护成本降低65%。建议结合Ansible实现全流程自动化,进一步提升大规模部署效率。