在 DevStack 中安装 Trove

此页面描述了如何设置一个可用于部署 Trove 的工作开发环境。

使用 Trove 配置 DevStack

Trove 可以通过使用它提供的基于插件的接口在 DevStack 中启用和安装。

注意

以下步骤已在 Ubuntu 22.04/24.04 和 Rocky Linux 9 上得到全面验证。

注意

在部署带有 Trove 的 DevStack 之前,请确保至少有 16 GB 的 RAM 可用,因为它需要大量的内存才能正常运行。

DevStack 应以启用 sudo 的非 root 用户身份运行(通常,像“ubuntu”或“cloud-user”这样的云镜像的标准登录名都可以)。

使用 stack 用户(默认用户是 ubuntu)克隆 DevStack 仓库,并切换到 DevStack 目录

git clone https://opendev.org/openstack/devstack
cd devstack/

注意

您可以通过运行位于 devstack/tools 目录中的 create-stack-user.sh 脚本来创建 stack 用户

如果您不使用云镜像,请创建一个单独的 stack 用户来运行 DevStack

$ sudo useradd -s /bin/bash -d /opt/stack -m stack

确保 stack 用户的家目录对所有人都有执行权限,因为基于 RHEL 的发行版会以 700 创建它,而 Ubuntu 21.04+ 则以 750 创建它,这可能在部署期间导致问题。

$ sudo chmod +x /opt/stack

由于此用户将对您的系统进行许多更改,因此它应该具有 sudo 权限

$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
$ sudo -u stack -i

使用以下最小 DevStack 配置创建 local.conf 文件,将 HOST_IP 更改为您自己的 DevStack 主机 IP 地址

[[local|localrc]]
RECLONE=False
HOST_IP=<your-host-ip-here>

enable_plugin trove https://opendev.org/openstack/trove
enable_plugin trove-dashboard https://opendev.org/openstack/trove-dashboard

LIBS_FROM_GIT+=,python-troveclient
ADMIN_PASSWORD=password
DATABASE_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
LOGFILE=$DEST/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=False
LOGDAYS=1

IPV4_ADDRS_SAFE_TO_USE=10.111.0.0/26
FIXED_RANGE=10.111.0.0/26
NETWORK_GATEWAY=10.111.0.1
FLOATING_RANGE=172.30.5.0/24
PUBLIC_NETWORK_GATEWAY=172.30.5.1

# Pre-requisites
ENABLED_SERVICES=rabbit,mysql,key

# Horizon
enable_service horizon

# Nova
enable_service n-api
enable_service n-cpu
enable_service n-cond
enable_service n-sch
enable_service n-api-meta
enable_service placement-api
enable_service placement-client

# Glance
enable_service g-api
enable_service g-reg

# Cinder
enable_service cinder
enable_service c-api
enable_service c-vol
enable_service c-sch

Q_AGENT=ovn
Q_ML2_PLUGIN_MECHANISM_DRIVERS=ovn,logger
Q_ML2_PLUGIN_TYPE_DRIVERS=local,flat,vlan,geneve
Q_ML2_TENANT_NETWORK_TYPE="geneve"
enable_service ovn-northd
enable_service ovn-controller
enable_service q-ovn-metadata-agent

# Neutron
enable_service q-svc

# Disable Neutron agents not used with OVN.
disable_service q-agt
disable_service q-l3
disable_service q-dhcp
disable_service q-meta

# Enable services, these services depend on neutron plugin.
enable_plugin neutron https://opendev.org/openstack/neutron
enable_service q-trunk
enable_service q-dns
enable_service q-port-forwarding
enable_service q-qos
enable_service neutron-segments
enable_service q-log

# Enable neutron tempest plugin tests
enable_plugin neutron-tempest-plugin https://opendev.org/openstack/neutron-tempest-plugin
OVN_BUILD_MODULES=True
ENABLE_CHASSIS_AS_GW=True

# Swift
ENABLED_SERVICES+=,swift
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
SWIFT_REPLICAS=1
SWIFT_MAX_FILE_SIZE=5368709122

请查看 选项,您可以用来定制 Trove 安装。

运行 DevStack

运行 stack.sh 脚本

./stack.sh

完成之后,您可以看到有一个 MySQL 数据存储可用于创建 Trove 实例

$ openstack datastore version list mysql
+--------------------------------------+------------------+
| ID                                   | Name             |
+--------------------------------------+------------------+
| 9726354d-f989-4a68-9c5f-6e37b1bccc74 | 5.7              |
| f81a8448-2f6e-4746-8d97-866ab7dcccee | inactive_version |
+--------------------------------------+------------------+

创建您的第一个 Trove 实例

请参阅 创建和访问数据库,了解详细步骤。