手动安装

注意

本文档内容已确认在使用 Tacker 2024.2 Dalmatian 时有效。

注意

本安装指南的内容特定于 Ubuntu。 此安装指南中的某些步骤可能对其他发行版无效。

本文档描述了如何手动安装和运行 Tacker。

先决条件

  1. 安装所需组件。

    确保已安装 Tacker 所需的所有最小 OpenStack 组件,例如 Keystone 和 Barbican。 请参阅以下列表以安装所需的 OpenStack 组件。

  2. 创建 admin-openrc 用于环境变量。

    $ vi admin-openrc
    export OS_PROJECT_DOMAIN_ID=default
    export OS_USER_DOMAIN_ID=default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=<ADMIN_PASSWORD>
    export OS_AUTH_URL=http://<KEYSTONE_IP>/identity
    export OS_INTERFACE=public
    export OS_IDENTITY_API_VERSION=3
    export OS_REGION_NAME=RegionOne
    

指南

安装 Tacker 服务器

注意

如果您想使用 PostgreSQL,请参考 通过 Devstack 安装 文档。

  1. 创建 MySQL 数据库和用户。

    $ mysql -uroot -p
    

    创建数据库 tacker 并授予用户 tacker 在所有表上的权限,密码为 <TACKERDB_PASSWORD>

    mysql> CREATE DATABASE tacker;
    Query OK, 1 row affected (0.30 sec)
    
    mysql> CREATE USER 'tacker'@'localhost' IDENTIFIED BY '<TACKERDB_PASSWORD>';
    Query OK, 0 rows affected (0.58 sec)
    
    mysql> GRANT ALL PRIVILEGES ON tacker.* TO 'tacker'@'localhost';
    Query OK, 0 rows affected (0.18 sec)
    
    mysql> CREATE USER 'tacker'@'%' IDENTIFIED BY '<TACKERDB_PASSWORD>';
    Query OK, 0 rows affected (0.21 sec)
    
    mysql> GRANT ALL PRIVILEGES ON tacker.* TO 'tacker'@'%';
    Query OK, 0 rows affected (0.28 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.18 sec)
    
    mysql> exit;
    bye
    
  2. 创建 OpenStack 用户、角色和端点。

    1. 设置管理员凭据以访问仅管理员 CLI 命令。

      $ source admin-openrc
      
    2. 创建 tacker 用户并设置 service 项目的管理员角色。

      注意

      项目名称可以是 serviceservices,具体取决于您的 OpenStack 发行版。

      $ openstack user create --domain default \
      --password <TACKER_SERVICE_USER_PASSWORD> tacker
      +---------------------+----------------------------------+
      | Field               | Value                            |
      +---------------------+----------------------------------+
      | default_project_id  | None                             |
      | domain_id           | default                          |
      | email               | None                             |
      | enabled             | True                             |
      | id                  | 60c2c54a22db42e2936dc45704760067 |
      | name                | tacker                           |
      | description         | None                             |
      | password_expires_at | None                             |
      +---------------------+----------------------------------+
      $ openstack role add --project service --user tacker admin
      
    3. 创建 tacker 服务。

      $ openstack service create --name tacker \
      --description "Tacker Project" nfv-orchestration
      +-------------+----------------------------------+
      | Field       | Value                            |
      +-------------+----------------------------------+
      | id          | 88c795ad82da450eb642747efabb6594 |
      | name        | tacker                           |
      | type        | nfv-orchestration                |
      | enabled     | True                             |
      | description | Tacker Project                   |
      +-------------+----------------------------------+
      
    4. tacker 服务提供一个端点。

      $ openstack endpoint create --region RegionOne nfv-orchestration \
      public http://<TACKER_NODE_IP>:9890/
      +--------------+----------------------------------+
      | Field        | Value                            |
      +--------------+----------------------------------+
      | enabled      | True                             |
      | id           | 94b7c6175cdd4f51a26bb61676e9afea |
      | interface    | public                           |
      | region       | RegionOne                        |
      | region_id    | RegionOne                        |
      | service_id   | 644e7c170eac450f90cddc9ac3c6a6b1 |
      | service_name | tacker                           |
      | service_type | nfv-orchestration                |
      | url          | http://<TACKER_NODE_IP>:9890     |
      +--------------+----------------------------------+
      $ openstack endpoint create --region RegionOne nfv-orchestration \
      internal http://<TACKER_NODE_IP>:9890/
      +--------------+----------------------------------+
      | Field        | Value                            |
      +--------------+----------------------------------+
      | enabled      | True                             |
      | id           | 8c9ede5c124a4afb9cc9da12486538cb |
      | interface    | internal                         |
      | region       | RegionOne                        |
      | region_id    | RegionOne                        |
      | service_id   | 644e7c170eac450f90cddc9ac3c6a6b1 |
      | service_name | tacker                           |
      | service_type | nfv-orchestration                |
      | url          | http://<TACKER_NODE_IP>:9890     |
      +--------------+----------------------------------+
      $ openstack endpoint create --region RegionOne nfv-orchestration \
      admin http://<TACKER_NODE_IP>:9890/
      +--------------+----------------------------------+
      | Field        | Value                            |
      +--------------+----------------------------------+
      | enabled      | True                             |
      | id           | 519c22404027446cba4bd9399f72cc54 |
      | interface    | admin                            |
      | region       | RegionOne                        |
      | region_id    | RegionOne                        |
      | service_id   | 644e7c170eac450f90cddc9ac3c6a6b1 |
      | service_name | tacker                           |
      | service_type | nfv-orchestration                |
      | url          | http://<TACKER_NODE_IP>:9890     |
      +--------------+----------------------------------+
      
  3. 克隆 Tacker 仓库。

    注意

    您应该使用安装其他 OpenStack 组件的用户来安装 Tacker。 确保在安装前更改用户。 如果您为 OpenStack 组件设置了特定的 Python 环境,请确保也更改 Python 环境。

    注意

    将命令中的 <branch_name> 替换为特定的分支名称,例如 stable/2024.2

    $ cd ~
    $ git clone https://opendev.org/openstack/tacker.git -b <branch_name>
    
  4. 安装 Tacker 服务器。

    $ pip3 install ./tacker
    
  5. 创建 Tacker 的目录。

    需要用于存储日志和提取的 CSAR 文件的目录。

    注意

    在多节点部署的情况下,csar_files 目录应配置在共享存储上。

    $ mkdir -p log/tacker \
    data/tacker/vnfpackages \
    data/tacker/csar_files
    
  6. 生成示例 Tacker 配置文件并根据需要进行编辑。

    注意

    您也可以在 etc/tacker 的 README 中参考如何生成示例 Tacker 配置文件。

    注意

    在使用 generate_config_file_sample.sh 时忽略任何生成的警告。

    $ cd tacker/
    $ bash tools/generate_config_file_sample.sh
    

    注意

    tacker-rootwrap 的路径因操作系统而异。 您可以使用以下命令找到 tacker-rootwrap 的路径。

    $ which tacker-rootwrap
    

    Tacker 配置文件中应包含以下最低配置。

    $ sudo vi etc/tacker/tacker.conf.sample
    
    [DEFAULT]
    auth_strategy = keystone
    debug = True
    use_syslog = False
    log_dir = <HOME_DIR>/log/tacker
    state_path = <HOME_DIR>/data/tacker
    transport_url = rabbit://<RABBIT_USERID>:<RABBIT_PASSWORD>@<TACKER_NODE_IP>:5672/
    ...
    
    [keystone_authtoken]
    memcached_servers = <TACKER_NODE_IP>:11211
    region_name = RegionOne
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = <TACKER_SERVICE_USER_PASSWORD>
    username = tacker
    auth_url = http://<KEYSTONE_IP>/identity
    interface = public
    auth_type = password
    ...
    
    [glance_store]
    default_backend = file
    filesystem_store_datadir = <HOME_DIR>/data/tacker/csar_files
    ...
    
    [vnf_package]
    vnf_package_csar_path = <HOME_DIR>/data/tacker/vnfpackages
    ...
    
    [agent]
    root_helper = sudo <PATH_TO_TACKER_ROOTWRAP>/tacker-rootwrap /etc/tacker/rootwrap.conf
    ...
    
    [database]
    connection = mysql+pymysql://tacker:<TACKERDB_PASSWORD>@<MYSQL_IP>:3306/tacker?charset=utf8
    
  7. 为 Tacker 设置 rootwrap。

    $ echo "$USER ALL=(root) NOPASSWD: $(which tacker-rootwrap) \
    /etc/tacker/rootwrap.conf *" > temp_file
    $ chmod 0440 temp_file
    $ sudo chown root:root temp_file
    $ sudo mv temp_file /etc/sudoers.d/tacker-rootwrap
    
  8. 创建 /etc/tacker/ 目录并将 etc/tacker 的内容复制到创建的目录中。

    $ sudo install -d -o $USER /etc/tacker
    $ cp etc/tacker/tacker.conf.sample /etc/tacker/tacker.conf
    $ cp etc/tacker/api-paste.ini /etc/tacker/
    $ cp etc/tacker/rootwrap.conf /etc/tacker/
    $ cp -r etc/tacker/rootwrap.d/ /etc/tacker/
    $ cp etc/tacker/prometheus-plugin.yaml /etc/tacker/
    
  9. 填充 Tacker 数据库。

    $ tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head
    
  10. 为了使 Tacker 可以由 systemd 控制,请编辑并复制 tacker.servicetacker-conductor.service 文件到 /etc/systemd/system/ 目录,并重启 systemctl 守护程序。 在复制到系统文件夹之前,请确保将用于安装 Tacker 的用户添加到服务用户,并确保将 Tacker-server 和 Tacker-conductor 的路径更改为正确的路径。

    $ sed -i "/^\[Service\]/a User = $USER" \
    etc/systemd/system/tacker.service
    $ sed -i "s|/usr/local/bin/tacker-server|$(which tacker-server)|g" \
    etc/systemd/system/tacker.service
    $ sudo cp etc/systemd/system/tacker.service /etc/systemd/system/
    
    $ sed -i "/^\[Service\]/a User = $USER" \
    etc/systemd/system/tacker-conductor.service
    $ sed -i "s|/usr/local/bin/tacker-conductor|$(which tacker-conductor)|g" \
    etc/systemd/system/tacker-conductor.service
    $ sudo cp etc/systemd/system/tacker-conductor.service /etc/systemd/system/
    
    $ sudo systemctl daemon-reload
    
  11. 启动 Tacker 服务器。 并启用 Tacker 服务器,以便每次系统重启时都启动 Tacker 服务器。

    $ sudo systemctl start tacker.service
    $ sudo systemctl start tacker-conductor.service
    
    $ sudo systemctl enable tacker.service
    $ sudo systemctl enable tacker-conductor.service
    

    注意

    当使用 openstack 命令访问 Tacker API 时,应使用上述创建的用户创建 Tacker 的 openrc 文件。 并参阅 命令行界面参考,了解如何使用 Tacker 的 openstack 命令。

    $ vi tacker-openrc
    export OS_PROJECT_DOMAIN_ID=default
    export OS_USER_DOMAIN_ID=default
    export OS_PROJECT_NAME=service
    export OS_USERNAME=tacker
    export OS_PASSWORD=<TACKER_SERVICE_USER_PASSWORD>
    export OS_AUTH_URL=http://<KEYSTONE_IP>/identity
    export OS_INTERFACE=public
    export OS_IDENTITY_API_VERSION=3
    export OS_REGION_NAME=RegionOne