Installation

Assumptions

Some assumptions that are made about the configuration of your system are noted below.

It is assumed that…

  • …you already have an OpenStack cloud deployed, for which…

    • …the host from which Tenks is executed (localhost) has access to the OpenStack APIs. These are used for Ironic node enrolment and Nova flavor registration.

    • …the OpenStack OS_* authentication variables are present in localhost’s environment. These can typically be sourced from your openrc file.

  • … a distinct network device (interface or bridge) is present for each physical network that a hypervisor is connected to.

Pre-Requisites

Currently, Tenks supports the following OS distributions on the hypervisor:

  • CentOS Stream 9

  • Debian Bullseye (11)

  • Rocky Linux 9

  • Ubuntu Jammy 22.04

To avoid conflicts with Python packages installed by the system package manager it is recommended to install Tenks in a virtualenv. Ensure that the virtualenv Python module is available. For cloning and working with the Tenks source code repository, Git is required. These pre-requisites can be installed with a command such as:

$ yum install --assumeyes python-virtualenv git

If using Open vSwitch for networking, it must be installed and running. Please see the Open vSwitch docs for more details.

Tenks Installation

Create a virtualenv for Tenks. For example:

$ virtualenv tenks

Activate the virtualenv and update pip:

$ source tenks/bin/activate
(tenks) $ pip install --upgrade pip

Obtain the Tenks source code and change into the directory. For example:

(tenks) $ git clone https://opendev.org/openstack/tenks.git
(tenks) $ cd tenks

Install Tenks and its requirements using the source code checkout:

(tenks) $ pip install .

Tenks has dependencies on Ansible roles that are hosted by Ansible Galaxy. These can be installed by a command such as:

(tenks) $ ansible-galaxy install --role-file=requirements.yml --roles-path=ansible/roles/

If you now wish to run Tenks (see Running Tenks), keep your virtualenv active. If not, deactivate it:

(tenks) $ deactivate