Install via Devstack¶
Note
The content of this document has been confirmed to work using Tacker 2024.2 Dalmatian.
Overview¶
Devstack based installation requires local.conf
file.
This file contains different configuration options required for
installation.
Tacker provides some sample local.conf
templates which can be
used for Devstack based Tacker installation.
You can find them in ${TACKER_ROOT}/devstack
directory in the
tacker repository.
Devstack supports installation from different code branches by
specifying branch name in your local.conf
.
For latest version installation, use
master
branch.For specific release based installation, use corresponding branch name. For ex, to install
2024.2 Dalmatian
release, usestable/2024.2
.
For installation, stack.sh
script in Devstack should be run as a
non-root user with sudo enabled.
Add a separate user stack
and granting relevant privileges is a
good way to install via Devstack.
Hardware Requirements¶
We recommend that your system meets the following hardware requirements:
Note
These are reference values to install Openstack and Kubernetes as VIM
which generally requires the most resources. In reality, more parameters
affect required resources.
Criteria |
Recommended |
---|---|
CPU |
4 cores or more |
RAM |
16 GB or more |
Storage |
80 GB or more |
Note
We recommend that you run DevStack in a VM, rather than on your bare-metal server. If you have to run devstack on a bare-metal server, It is recommended to use a server that has at least two network interfaces.
Operation System¶
If you do not have a preference, we recommend to
use a clean and minimal install of latest LTS version of Ubuntu
.
DevStack attempts to support the two latest LTS releases of Ubuntu. For details, please refer to Devstack.
Install¶
Devstack installation script stack.sh
expects local.conf
.
So the first step of installing tacker is to clone Devstack and prepare your
local.conf
.
Download DevStack
Get Devstack via git, with specific branch optionally if you prefer, and go down to the directory.
$ git clone https://opendev.org/openstack/devstack -b <branch-name> $ cd devstack
Enable tacker related Devstack plugins in
local.conf
fileThe
local.conf
can be created manually, or copied from Tacker repo. If you copied from repo, rename it aslocal.conf
.We have two choices for configuration basically:
All-in-one mode
All-in-one mode installs full Devstack environment including Tacker in one machine.
Note
TACKER_MODE="all"
is set in local.conf for all-in-one mode. If TACKER_MODE is omitted in local.conf,TACKER_MODE="all"
is set by default.There are two examples for
all-in-one
mode:OpenStack as VIM.
The example
local.conf
file for all-in-one mode with OpenStack is available at${TACKER_ROOT}/devstack/local.conf.example
.Refer below the contents of
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 and Kubernetes as VIM.
The difference between all-in-one mode with Kubernetes is to deploy devstack-plugin-container.
The example
local.conf
for all-in-one mode with Kubernetes is available at${TACKER_ROOT}/devstack/local.conf.kubernetes
Refer below the contents of
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
Note
The above local.conf.kubernetes only works on Ubuntu. Because Devstack-plugin-container only supports building Kubernetes clusters on Ubuntu.
Standalone mode
Standalone mode installs only Tacker environment with some mandatory OpenStack services.
Note
TACKER_MODE="standalone"
is set in local.conf for standalone mode.The example
local.conf
for standalone mode is available at${TACKER_ROOT}/devstack/local.conf.standalone
Refer below the contents of
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
Execute installation script
After saving the
local.conf
, we can runstack.sh
in the terminal to start installation.$ ./stack.sh
Use PostgreSQL as Tacker database¶
When installing via Devstack, MySQL is used as Tacker database backend by default.
To use PostgreSQL as Tacker database backend, execute the following command.
Install PostgreSQL and login.
$ sudo apt install postgresql postgresql-contrib $ sudo -i -u postgres $ psql
Create PostgreSQL database and user.
CREATE DATABASE tacker; CREATE ROLE tacker WITH CREATEDB LOGIN PASSWORD '<TACKERDB_PASSWORD>'; exit;
Modify
postgresql.conf
and restart PostgreSQL server.Note
The location of
postgresql.conf
is different for each distribution. For Ubuntu distribution, modify/etc/postgresql/{POSTGRESQL_VERSION}/main/postgresql.conf
.Insert
escape
as the value ofbytea_output
inpostgresql.conf
.bytea_output = 'escape'
Restart PostgreSQL server.
$ sudo systemctl restart postgresql.service
Modify
tacker.conf
for PostgreSQL and restart Tacker server.Edit the configuration of [database] in
/etc/tacker/tacker.conf
as follows.[database] connection = postgresql://tacker:<POSTGRES_PASSWORD>@<POSTGRES_IP>/tacker?client_encoding=utf8
Restart Tacker server.
$ sudo systemctl restart devstack@tacker.service $ sudo systemctl restart devstack@tacker-conductor.service
Activate the python virtual environment for Openstack and populate Tacker database.
Note
The
psycopg2
python library may need to be installed based on your environment after activating the virtual environment. You can find the version of the library in Requirements of OpenStack.$ source /opt/stack/data/venv/bin/activate (venv) $ tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head