通过 Devstack 安装¶
注意
本文档的内容已确认在使用 Tacker 2024.2 Dalmatian 时有效。
概述¶
基于 Devstack 的安装需要 local.conf 文件。该文件包含安装所需的各种配置选项。
Tacker 提供了一些示例 local.conf 模板,可用于基于 Devstack 的 Tacker 安装。您可以在 tacker 仓库的 ${TACKER_ROOT}/devstack 目录中找到它们。
Devstack 支持通过在您的 local.conf 中指定分支名称来从不同的代码分支进行安装。
要安装最新版本,请使用
master分支。要基于特定版本进行安装,请使用相应的分支名称。例如,要安装
2024.2 Dalmatian版本,请使用stable/2024.2。
进行安装时,Devstack 中的 stack.sh 脚本应以启用 sudo 的非 root 用户身份运行。添加一个单独的用户 stack 并授予相关权限是使用 Devstack 安装的不错方法。
硬件要求¶
我们建议您的系统满足以下硬件要求
注意
这些是安装 Openstack 和 Kubernetes 作为 VIM 的参考值,通常需要最多的资源。实际上,更多参数会影响所需的资源。
标准 |
推荐 |
|---|---|
CPU |
4 核或更多 |
RAM |
16 GB 或更多 |
Storage |
80 GB 或更多 |
注意
我们建议在虚拟机中运行 DevStack,而不是在裸机服务器上。如果您必须在裸机服务器上运行 devstack,建议使用具有 至少两个网络接口 的服务器。
操作系统¶
如果您没有偏好,我们建议使用最新 LTS 版本的 Ubuntu 的干净且最小化安装。
DevStack 尝试支持 Ubuntu 的两个最新 LTS 版本。有关详细信息,请参阅 Devstack。
安装¶
Devstack 安装脚本 stack.sh 需要 local.conf。
因此,安装 tacker 的第一步是克隆 Devstack 并准备您的 local.conf。
下载 DevStack
通过 git 获取 Devstack,如果需要,可以选择特定分支,然后进入目录。
$ git clone https://opendev.org/openstack/devstack -b <branch-name> $ cd devstack
在
local.conf文件中启用 tacker 相关的 Devstack 插件可以手动创建
local.conf,也可以从 Tacker 仓库 复制。如果从仓库复制,请将其重命名为local.conf。我们基本上有两种配置选择
一体化模式
一体化模式在一台机器上安装完整的 Devstack 环境,包括 Tacker。
注意
在 local.conf 中设置
TACKER_MODE="all"以进行一体化模式。如果 local.conf 中省略了 TACKER_MODE,则默认设置TACKER_MODE="all"。有两种示例用于
一体化模式OpenStack 作为 VIM。
用于具有 OpenStack 的一体化模式的示例
local.conf文件位于${TACKER_ROOT}/devstack/local.conf.example。请参阅
local.conf.example的内容[[local|localrc]] ############################################################ # Customize the following HOST_IP based on your installation ############################################################ HOST_IP=127.0.0.1 ADMIN_PASSWORD=devstack MYSQL_PASSWORD=devstack RABBIT_PASSWORD=devstack SERVICE_PASSWORD=$ADMIN_PASSWORD SERVICE_TOKEN=devstack ############################################################ # Customize the following section based on your installation ############################################################ # Pip PIP_USE_MIRRORS=False USE_GET_PIP=1 #OFFLINE=False #RECLONE=True # Logging LOGFILE=$DEST/logs/stack.sh.log VERBOSE=True ENABLE_DEBUG_LOG_LEVEL=True ENABLE_VERBOSE_LOG_LEVEL=True # Neutron ML2 with OpenVSwitch Q_PLUGIN=ml2 Q_AGENT=ovn # Disable security groups LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver # Enable heat, networking-sfc and barbican enable_plugin heat https://opendev.org/openstack/heat master enable_plugin networking-sfc https://opendev.org/openstack/networking-sfc master enable_plugin barbican https://opendev.org/openstack/barbican master # Aodh enable_plugin aodh https://opendev.org/openstack/aodh master # Tacker enable_plugin tacker https://opendev.org/openstack/tacker master enable_service n-novnc enable_service n-cauth disable_service tempest [[post-config|/etc/neutron/dhcp_agent.ini]] [DEFAULT] enable_isolated_metadata = True # NOTE: workaround for Cinder image volume cache problem. # https://bugs.launchpad.net/cinder/+bug/1953704 [[post-config|/etc/cinder/cinder.conf]] [lvmdriver-1] image_volume_cache_enabled = False
OpenStack 和 Kubernetes 作为 VIM。
一体化模式与 Kubernetes 的区别在于部署 devstack-plugin-container。
用于具有 Kubernetes 的一体化模式的示例
local.conf文件位于${TACKER_ROOT}/devstack/local.conf.kubernetes请参阅
local.conf.kubernetes的内容[[local|localrc]] ############################################################ # Customize the following HOST_IP based on your installation ############################################################ HOST_IP=127.0.0.1 ADMIN_PASSWORD=devstack MYSQL_PASSWORD=devstack RABBIT_PASSWORD=devstack SERVICE_PASSWORD=$ADMIN_PASSWORD SERVICE_TOKEN=devstack ############################################################ # Customize the following section based on your installation ############################################################ # Pip PIP_USE_MIRRORS=False USE_GET_PIP=1 #OFFLINE=False #RECLONE=True # Logging LOGFILE=$DEST/logs/stack.sh.log VERBOSE=True ENABLE_DEBUG_LOG_LEVEL=True ENABLE_VERBOSE_LOG_LEVEL=True # Neutron ML2 with OpenVSwitch Q_PLUGIN=ml2 Q_AGENT=ovn # Disable security groups LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver # Enable neutron, heat, networking-sfc and barbican enable_plugin neutron https://opendev.org/openstack/neutron master enable_plugin heat https://opendev.org/openstack/heat master enable_plugin networking-sfc https://opendev.org/openstack/networking-sfc master enable_plugin barbican https://opendev.org/openstack/barbican master # Aodh enable_plugin aodh https://opendev.org/openstack/aodh master # Tacker enable_plugin tacker https://opendev.org/openstack/tacker master enable_service n-novnc enable_service n-cauth disable_service tempest # Enable devstack-plugin-container, crio KUBERNETES_VIM=True # It is necessary to specify the patch version # because it is the version used when executing "apt-get install" command. K8S_VERSION="1.30.5" K8S_TOKEN="9agf12.zsu5uh2m4pzt3qba" CONTAINER_ENGINE="crio" CRIO_VERSION="1.30.5" enable_plugin devstack-plugin-container https://opendev.org/openstack/devstack-plugin-container master [[post-config|/etc/neutron/dhcp_agent.ini]] [DEFAULT] enable_isolated_metadata = True # NOTE: workaround for Cinder image volume cache problem. # https://bugs.launchpad.net/cinder/+bug/1953704 [[post-config|/etc/cinder/cinder.conf]] [lvmdriver-1] image_volume_cache_enabled = False
注意
上述 local.conf.kubernetes 仅适用于 Ubuntu。因为 Devstack-plugin-container 仅支持在 Ubuntu 上构建 Kubernetes 集群。
独立模式
独立模式仅安装 Tacker 环境以及一些强制的 OpenStack 服务。
注意
在 local.conf 中设置
TACKER_MODE="standalone"以进行独立模式。用于独立模式的示例
local.conf文件位于${TACKER_ROOT}/devstack/local.conf.standalone请参阅
local.conf.standalone的内容[[local|localrc]] ############################################################ # Customize the following HOST_IP based on your installation ############################################################ HOST_IP=127.0.0.1 SERVICE_HOST=127.0.0.1 SERVICE_PASSWORD=devstack ADMIN_PASSWORD=devstack SERVICE_TOKEN=devstack DATABASE_PASSWORD=root RABBIT_PASSWORD=password ENABLE_HTTPD_MOD_WSGI_SERVICES=True KEYSTONE_USE_MOD_WSGI=True # Logging LOGFILE=$DEST/logs/stack.sh.log VERBOSE=True ENABLE_DEBUG_LOG_LEVEL=True ENABLE_VERBOSE_LOG_LEVEL=True GIT_BASE=${GIT_BASE:-https://opendev.org} TACKER_MODE=standalone USE_BARBICAN=True enable_plugin networking-sfc ${GIT_BASE}/openstack/networking-sfc enable_plugin barbican ${GIT_BASE}/openstack/barbican enable_plugin tacker ${GIT_BASE}/openstack/tacker
注意
独立模式用于运行 FT 的 Zuul 环境。有关 FT 的更多信息,请参阅 tacker 的功能测试用例 或每个 Zuul 环境中使用的 local.conf。
执行安装脚本
保存
local.conf后,我们可以在终端中运行stack.sh以开始安装。$ ./stack.sh
使用 PostgreSQL 作为 Tacker 数据库¶
通过 Devstack 安装时,MySQL 默认用作 Tacker 数据库后端。
要将 PostgreSQL 用作 Tacker 数据库后端,请执行以下命令。
安装 PostgreSQL 并登录。
$ sudo apt install postgresql postgresql-contrib $ sudo -i -u postgres $ psql
创建 PostgreSQL 数据库和用户。
CREATE DATABASE tacker; CREATE ROLE tacker WITH CREATEDB LOGIN PASSWORD '<TACKERDB_PASSWORD>'; exit;
修改
postgresql.conf并重启 PostgreSQL 服务器。注意
postgresql.conf的位置因发行版而异。对于 Ubuntu 发行版,请修改/etc/postgresql/{POSTGRESQL_VERSION}/main/postgresql.conf。将
escape作为bytea_output在postgresql.conf中插入为值。bytea_output = 'escape'
重启 PostgreSQL 服务器。
$ sudo systemctl restart postgresql.service
修改
tacker.conf以使用 PostgreSQL 并重启 Tacker 服务器。编辑
/etc/tacker/tacker.conf中的 [database] 配置如下。[database] connection = postgresql://tacker:<POSTGRES_PASSWORD>@<POSTGRES_IP>/tacker?client_encoding=utf8
重启 Tacker 服务器。
$ sudo systemctl restart devstack@tacker.service $ sudo systemctl restart devstack@tacker-conductor.service
激活 Openstack 的 python 虚拟环境并填充 Tacker 数据库。
注意
根据您的环境,激活虚拟环境后可能需要安装
psycopg2python 库。您可以在 OpenStack 的要求 中找到库的版本。$ source /opt/stack/data/venv/bin/activate (venv) $ tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head