手动安装¶
注意
本文档内容已确认在使用 Tacker 2024.2 Dalmatian 时有效。
注意
本安装指南的内容特定于 Ubuntu。 此安装指南中的某些步骤可能对其他发行版无效。
本文档描述了如何手动安装和运行 Tacker。
先决条件¶
安装所需组件。
确保已安装 Tacker 所需的所有最小 OpenStack 组件,例如 Keystone 和 Barbican。 请参阅以下列表以安装所需的 OpenStack 组件。
创建
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 安装 文档。
创建 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
创建 OpenStack 用户、角色和端点。
设置管理员凭据以访问仅管理员 CLI 命令。
$ source admin-openrc
创建
tacker用户并设置service项目的管理员角色。注意
项目名称可以是
service或services,具体取决于您的 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
创建
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 | +-------------+----------------------------------+
为
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 | +--------------+----------------------------------+
克隆 Tacker 仓库。
注意
您应该使用安装其他 OpenStack 组件的用户来安装 Tacker。 确保在安装前更改用户。 如果您为 OpenStack 组件设置了特定的 Python 环境,请确保也更改 Python 环境。
注意
将命令中的
<branch_name>替换为特定的分支名称,例如stable/2024.2。$ cd ~ $ git clone https://opendev.org/openstack/tacker.git -b <branch_name>
安装 Tacker 服务器。
$ pip3 install ./tacker
创建 Tacker 的目录。
需要用于存储日志和提取的 CSAR 文件的目录。
注意
在多节点部署的情况下,
csar_files目录应配置在共享存储上。$ mkdir -p log/tacker \ data/tacker/vnfpackages \ data/tacker/csar_files
生成示例 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-rootwrapTacker 配置文件中应包含以下最低配置。
$ 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
为 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
创建
/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/
填充 Tacker 数据库。
$ tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head
为了使 Tacker 可以由 systemd 控制,请编辑并复制
tacker.service和tacker-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
启动 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