通过 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

  1. 下载 DevStack

    通过 git 获取 Devstack,如果需要,可以选择特定分支,然后进入目录。

    $ git clone https://opendev.org/openstack/devstack -b <branch-name>
    $ cd devstack
    
  2. local.conf 文件中启用 tacker 相关的 Devstack 插件

    可以手动创建 local.conf,也可以从 Tacker 仓库 复制。如果从仓库复制,请将其重命名为 local.conf

    我们基本上有两种配置选择

    1. 一体化模式

      一体化模式在一台机器上安装完整的 Devstack 环境,包括 Tacker。

      注意

      在 local.conf 中设置 TACKER_MODE="all" 以进行一体化模式。如果 local.conf 中省略了 TACKER_MODE,则默认设置 TACKER_MODE="all"

      有两种示例用于 一体化 模式

      1. 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
        
      2. 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 集群。

    2. 独立模式

      独立模式仅安装 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。

  3. 执行安装脚本

    保存 local.conf 后,我们可以在终端中运行 stack.sh 以开始安装。

    $ ./stack.sh
    

使用 PostgreSQL 作为 Tacker 数据库

通过 Devstack 安装时,MySQL 默认用作 Tacker 数据库后端。

要将 PostgreSQL 用作 Tacker 数据库后端,请执行以下命令。

  1. 安装 PostgreSQL 并登录。

    $ sudo apt install postgresql postgresql-contrib
    $ sudo -i -u postgres
    $ psql
    
  2. 创建 PostgreSQL 数据库和用户。

    CREATE DATABASE tacker;
    CREATE ROLE tacker WITH CREATEDB LOGIN PASSWORD '<TACKERDB_PASSWORD>';
    exit;
    
  3. 修改 postgresql.conf 并重启 PostgreSQL 服务器。

    注意

    postgresql.conf 的位置因发行版而异。对于 Ubuntu 发行版,请修改 /etc/postgresql/{POSTGRESQL_VERSION}/main/postgresql.conf

    escape 作为 bytea_outputpostgresql.conf 中插入为值。

    bytea_output = 'escape'
    

    重启 PostgreSQL 服务器。

    $ sudo systemctl restart postgresql.service
    
  4. 修改 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
    
  5. 激活 Openstack 的 python 虚拟环境并填充 Tacker 数据库。

    注意

    根据您的环境,激活虚拟环境后可能需要安装 psycopg2 python 库。您可以在 OpenStack 的要求 中找到库的版本。

    $ source /opt/stack/data/venv/bin/activate
    (venv) $ tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head