DevStack 是一个用于快速部署 OpenStack 环境的脚本集,它简化了复杂的安装过程,适合开发测试和小规模部署,在 CentOS 7 系统上使用 DevStack 可以高效搭建功能完备的 OpenStack 平台,以下是详细的部署步骤和注意事项,帮助您顺利完成安装。

系统环境准备
在开始部署前,确保系统满足基本要求,CentOS 7 最小化安装即可,但需安装必要的开发工具和依赖包,执行以下命令更新系统并安装基础组件:
sudo yum update -y sudo yum groupinstall "Development Tools" -y sudo yum install git wget -y
建议为 DevStack 创建一个独立的用户(如 stack),并赋予 sudo 权限,避免使用 root 用户操作,以提升安全性。
网络配置优化
DevStack 默认使用 NAT 模式,但生产环境可能需要调整网络设置,确保系统 hostname 解析正常,可通过 hostnamectl set-hostname <hostname> 修改主机名,关闭防火墙和 SELinux,以避免权限问题:
sudo systemctl stop firewalld sudo systemctl disable firewalld sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
若需启用防火墙,请提前规划端口规则,确保 OpenStack 服务通信不受阻。
获取 DevStack 源码
DevStack 的源码托管在 GitHub 上,建议克隆最新稳定版,切换到 stack 用户并执行:
git clone https://opendev.org/openstack/devstack.git cd devstack
若需指定版本,可通过 git checkout stable/rocky 等命令切换分支,检查 local.conf 配置文件是否存在,若无则根据需求创建。

编写 local.conf 配置文件
local.conf 是 DevStack 的核心配置文件,定义了服务组件和安装选项,以下为示例配置:
[[local|localrc]] ADMIN_PASSWORD=secret DATABASE_PASSWORD=secret RABBIT_PASSWORD=secret SERVICE_PASSWORD=secret # 启用的服务 enable_service=nova,neutron,glance,keystone,horizon # 网络设置 FLAT_INTERFACE=eth0 FLOATING_RANGE=192.168.1.128/25
密码可根据需求自定义,但需确保安全性,若需禁用某些服务(如 Swift),可注释或移除 enable_service 中的对应项。
执行 stack.sh 脚本
配置完成后,运行 stack.sh 开始安装,该过程耗时较长(约 30-60 分钟),需保持网络稳定:
./stack.sh
安装过程中会显示日志进度,若遇错误可查看 stack.log 定位问题,常见问题包括依赖包缺失、磁盘空间不足或网络连接中断,需根据错误提示逐一解决。
验证安装结果
安装成功后,可通过 Horizon 访问 OpenStack Dashboard,默认地址为 http://<ip-address>/horizon,使用 admin/secret 登录,检查核心服务状态:
source openrc admin nova service-list neutron agent-list
若服务列表显示正常,说明部署完成,建议进行简单测试,如创建虚拟机或上传镜像,以验证功能可用性。

常见问题与维护
DevStack 环境主要用于开发测试,生产环境建议使用 Kolla 或 TripleO 等工具,日常维护中,可通过 unstack.sh 清理环境,或 rejoin-stack.sh 重新加入节点,定期备份数据库和配置文件,避免数据丢失。
FAQs
Q1: DevStack 安装过程中提示 "Git command failed" 如何解决?
A1: 通常是由于网络连接问题或 Git 未正确安装,尝试执行 git config --global http.postBuffer 524288000 增加缓冲区大小,或检查代理设置,确保系统可访问 GitHub,必要时更换镜像源。
Q2: 如何清理 DevStack 环境?
A2: 执行 ./unstack.sh 停止所有服务,然后运行 ./clean.sh 删除配置文件和数据,若需彻底卸载,可删除 /opt/stack 目录并重置数据库(如 MariaDB)。