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 - masterbranch.
- For specific release based installation, use corresponding branch name. For ex, to install - 2024.2 Dalmatianrelease, use- stable/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.conffile- The - local.confcan be created manually, or copied from Tacker repo. If you copied from repo, rename it as- local.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-onemode:- OpenStack as VIM. - The example - local.conffile 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.conffor 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.conffor 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 - Note - Standalone mode is used in Zuul environments that run FT. For more information about FT, see Functional testcases for tacker or the local.conf used in each Zuul environment. 
 
- Execute installation script - After saving the - local.conf, we can run- stack.shin 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.confand restart PostgreSQL server.- Note - The location of - postgresql.confis different for each distribution. For Ubuntu distribution, modify- /etc/postgresql/{POSTGRESQL_VERSION}/main/postgresql.conf.- Insert - escapeas the value of- bytea_outputin- postgresql.conf.- bytea_output = 'escape' - Restart PostgreSQL server. - $ sudo systemctl restart postgresql.service 
- Modify - tacker.conffor PostgreSQL and restart Tacker server.- Edit the configuration of [database] in - /etc/tacker/tacker.confas 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 - psycopg2python 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 
