[ English | 한국어 (대한민국) | Indonesia | 中文 (简体, 中国) | español (México) | English (United Kingdom) | Deutsch ]
使用 DevStack 测试更改¶
开发的重要组成部分是能够测试您开发的更改,并确保它们正常工作。在像 OpenStack 这样复杂的生态系统中,还需要能够验证您的代码的互操作性。您可能对 Cinder 进行更改,但该更改也会影响 Nova 与 Cinder API 的交互方式。
开发人员需要一种简单的方法来部署 OpenStack 云,以便对更改进行功能和互操作性测试。DevStack 的目的就是为此。
什么是 DevStack¶
DevStack 是一组模块化的脚本,可以运行以部署基本的 OpenStack 云,用作演示或测试环境。这些脚本可以在单个裸机节点或虚拟机上运行。它也可以配置为部署到多个节点。DevStack 部署会处理配置数据库和消息队列系统等繁琐的任务,使开发人员能够快速轻松地部署 OpenStack 云。
默认情况下,将安装 OpenStack 的核心服务,但用户可以配置要部署的附加服务。所有服务都从源代码安装。DevStack 将从 git master 拉取服务,除非配置为从稳定分支(例如 stable/pike)克隆。
注意
DevStack 的完整文档可以在 此处 找到。
获取和配置 DevStack¶
要获取 DevStack,您需要从 devstack 仓库下的 openstack 克隆它。
git clone https://opendev.org/openstack/devstack
在继续操作之前,建议为 DevStack 运行的环境设置密码和 IP 地址。这可以通过配置 DevStack 中的 local.conf 文件来完成。
cd ./devstack
cp ./samples/local.conf local.conf
vi ./local.conf
为了简化您与部署的未来交互,您需要设置以下变量
ADMIN_PASSWORD
DATABASE_PASSWORD
RABBIT_PASSWORD
在某些发行版上,您可能还需要设置 HOST_IP。是否需要这样做取决于您的操作系统中网络接口使用的命名约定。
在文件下方是 使用 milestone-proposed 分支 部分。如果希望为一个或多个项目克隆 master 分支以外的分支,可以更改这些变量。
将更改保存到 local.conf 后,您就可以使用 DevStack 部署 OpenStack 云了。
部署 DevStack¶
配置好 local.conf 文件后,执行 DevStack 非常容易。
注意
以下命令需要以具有 sudo 访问权限和 NOPASSWD 配置的用户身份运行。
./stack.sh
注意
上述命令和后续命令示例假定您仍然位于 DevStack 克隆的根目录中。
此时,DevStack 会接管,准备您的节点以充当 OpenStack 云。将执行以下操作
安装所需的软件包(如 mysql 和 rabbitmq)
配置 mysql 和 rabbitmq
将 OpenStack 项目克隆到 /opt/stack/
在 /opt/stack/data 中创建任何必要的临时备份文件来模拟系统
创建并填充每个项目的数据库
注册并启动 OpenStack 服务
stack.sh 运行的日志保存在 /opt/stack/logs/stack.sh.log 中。
验证您的 DevStack 部署¶
如果 DevStack 成功部署了 OpenStack,您应该能够将 Web 浏览器指向 local.conf 中 HOST_IP 指定的 IP,并访问 Horizon。
注意
密码 admin 将设置为您在 local.conf 文件中为 ADMIN_PASSWORD 设置的值
项目服务都已使用 systemd 注册。每个服务都以 devstack@ 为前缀。因此,您可以通过 systemd 验证 Cinder Volume 进程是否正常工作,例如使用以下命令
systemctl status devstack@c-vol.service
由于 systemd 接受通配符,因此可以使用以下命令显示与 DevStack 关联的所有服务的状态
systemctl status devstack@*
还可以通过 systemd 查看正在运行的服务的日志。要显示 Cinder Volume 服务的日志,可以使用以下命令
journalctl -u devstack@c-vol.service
有关使用 systemd 与 DevStack 交互的更完整参考,请参阅 DevStack 中的使用 Systemd 页面。
使用 DevStack 测试更改¶
使用 DevStack 进行开发和测试更改非常容易。开发可以在 /opt/stack/<项目 名称> 下的项目克隆中完成。由于项目是项目 git 仓库的克隆,因此可以创建一个分支并进行开发。
DevStack 使用这些目录中的代码来运行 OpenStack 服务,因此可以通过在项目目录中进行代码更改,然后通过 systemd 重新启动项目的服务来测试任何更改。
这是一个展示该过程的示例。在此示例中,对 Cinder 的 LVM 驱动程序进行了更改
cd /opt/stack/cinder/cinder/volume/drivers
vi lvm.py
*Brilliant Code Improvement Implemented*
sudo systemctl restart devstack@c-vol.service
完成代码更改的测试和开发后,您需要将代码更改推送到 Gerrit 进行审核。由于 /opt/stack 中的项目已经与各自的 git 仓库同步,因此您可以配置 git review,提交您的更改并将更改上传到 Gerrit。
停止 DevStack¶
要关闭在节点上运行的 DevStack 实例,应使用以下命令
./unstack.sh
此命令会清理在节点上执行的 OpenStack 安装。这包括
停止项目服务、mysql 和 rabbitmq
清理 iSCSI 卷
清除临时 LVM 挂载
如果 DevStack 运行失败,首先尝试运行 unstack.sh。如果后续运行失败,可以使用以下命令对 DevStack 组件进行更彻底的删除
./clean.sh
clean.sh 运行执行 unstack.sh 的步骤,再加上额外的清理
删除 /etc 中的项目配置文件
删除日志文件
Hypervisor 清理
删除 .pyc 文件
数据库清理
等