> For the complete documentation index, see [llms.txt](https://docs.trilio.io/openstack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.trilio.io/openstack/deployment/installing-on-kolla.md).

# Getting started with Trilio on Kolla-Ansible OpenStack

## 1] Plan for Deployment

Refer to the link [Resources](/openstack/about-trilio-for-openstack/artifacts.md) to get release specific values of the placeholders, **`triliovault_tag`**, **`triliovault_dms_tag`**, **`trilio_branch`** and **`kolla_base_distro`** in this document as per the Openstack environment:

Trilio requires OpenStack CLI to be installed and available for use on the Kolla Ansible Control node.

## 2] Prepare Trilio deployment scripts

{% hint style="info" %}
Starting with T4O 6.2.1, Kolla-Ansible deployments on **Epoxy (2025.1)** and **Flamingo (2025.2)** use a single automation script, `prepare_install_upgrade.py`, to hook Trilio into Kolla-ansible. This replaces the previous manual steps of appending `globals.yml`, `passwords.yml`, `site.yml`, and the inventory file by hand.
{% endhint %}

### 2.1] Activate virtual environment

Export and activate the kolla virtual environment. The venv path depends on the base distro of your Kolla deployment:

```
export venv_path="/opt/kolla-venv"
source $venv_path/bin/activate
```

### 2.2] Clone Trilio Deployment Scripts

Clone triliovault-cfg-scripts GitHub repository on Kolla ansible server at '/root' or any other directory of your preference.

```
git clone -b {{ trilio_branch }} https://github.com/trilioData/triliovault-cfg-scripts.git
cd triliovault-cfg-scripts/kolla-ansible/ansible
```

## 3] Prepare Trilio deployment for your OpenStack release

Run `prepare_install_upgrade.py` to append the Trilio global variables, passwords, site.yml content, and inventory entries for your OpenStack release into the corresponding Kolla-ansible files.

```
python3 scripts/prepare_install_upgrade.py \
  --os-release <2025.1 or 2025.2> \
  --mode install \
  --venv-path $venv_path \
  --inventory-file <kolla inventory file, e.g. /root/multinode> \
  --globals-file /etc/kolla/globals.yml
```

* `--os-release`:arrow\_right: Use `2025.1` for Epoxy or `2025.2` for Flamingo.
* `--mode`:arrow\_right: Use `install` for a fresh Trilio installation.
* `--venv-path`:arrow\_right: The kolla virtual environment path exported in the previous step.
* `--inventory-file`:arrow\_right: Path to your cloud’s kolla-ansible inventory file.
* `--globals-file`:arrow\_right: Path to your cloud’s `globals.yml` file.

## 4] Edit globals.yml to set Trilio parameters

Edit `/etc/kolla/globals.yml` file to fill Trilio build details.\
You will find the Trilio related parameters at the end of `globals.yml` file.\
Details like Trilio version, cloud admin details, etc need to be filled out.

Following is the list of parameters that the usr needs to edit.

| Parameter                                                                                                                                   | Defaults/choices              | comments                                                                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| cloud\_admin\_username                                                                                                                      | \<cloud\_admin\_username >    | Use the username of cloud admin user. The user must to have assigned a 'creator' role                                                                                                       |
| cloud\_admin\_password                                                                                                                      | \<cloud\_admin\_password >    | Use the password of cloud admin user                                                                                                                                                        |
| cloud\_admin\_projectname                                                                                                                   | \<cloud\_admin\_projectname > | Use the project name of cloud admin user                                                                                                                                                    |
| cloud\_admin\_projectid                                                                                                                     | \<cloud\_admin\_projectid >   | Use the project ID of cloud admin user                                                                                                                                                      |
| cloud\_admin\_domainname                                                                                                                    | \<cloud\_admin\_domainname >  | Use the domain name of cloud admin user                                                                                                                                                     |
| cloud\_admin\_domainid                                                                                                                      | \<cloud\_admin\_domainid >    | Use the domain ID of cloud admin user                                                                                                                                                       |
| trustee\_role                                                                                                                               | \<trustee\_role >             | <p>Comma separated list of trustee roles required.</p><p>For Zed, trustee\_role should be <code>creator</code>.</p><p>For Antelope, trustee\_role should be <code>creator,member</code></p> |
| os\_endpoint\_type                                                                                                                          | \<internal/public >           | Choose required endpoint type which Trilio APIs will use for communication                                                                                                                  |
| triliovault\_tag                                                                                                                            | \<triliovault\_tag >          | Use the triliovault tag as per your Kolla openstack version. Exact tag is mentioned in the 1st step                                                                                         |
| triliovault\_dms\_tag                                                                                                                       | \<triliovault\_dms\_tag >     | Use the triliovault dms tag as per your Kolla openstack version. Exact tag is mentioned in the 1st step                                                                                     |
| horizon\_image\_full                                                                                                                        | Uncomment                     | <p>By default, Trilio Horizon container would not get deployed.</p><p>Uncomment this parameter to deploy Trilio Horizon container instead of OpenStack Horizon container.</p>               |
| triliovault\_docker\_username                                                                                                               | \<dockerhub-login-username>   | <p>Default docker user of Trilio<br>(read permission only).<br>Get the Dockerhub login credentials from Trilio Sales/Support team</p>                                                       |
| triliovault\_docker\_password                                                                                                               | \<dockerhub-login-password>   | <p>Password for default docker user of Trilio<br>Get the Dockerhub login credentials from Trilio Sales/Support team</p>                                                                     |
| triliovault\_docker\_registry                                                                                                               | **Default value:** docker.io  | <p>Edit this value if a different container registry for Trilio containers is to be used.<br>Containers need to be pulled from docker.io and pushed to chosen registry first.</p>           |
| In the case of a different registry than docker hub, Trilio containers need to be pulled from docker.io and pushed to preferred registries. |                               |                                                                                                                                                                                             |

## 5] Pull container images

Activate the login into dockerhub for Trilio tagged containers on the control node(s), then pull the Trilio container images based on the existing inventory file.

> Please get the Dockerhub login credentials from Trilio Sales/Support team

```
ansible -i <kolla inventory file> control -m shell -a "docker login -u <docker-login-username> -p <docker-login-password> docker.io" --become

kolla-ansible pull -i <kolla inventory file> --tags triliovault
```

## 6] Deploy Trilio

Run the deploy command using the existing inventory file.

```
kolla-ansible deploy -i <kolla inventory file> --tags triliovault
```

{% hint style="info" %}
Post deployment for multipath enabled environment, log into respective datamover container and add uxsock\_timeout with value as 60000 (i.e. 60 sec) in /etc/multipath.conf. Restart datamover container
{% endhint %}

## 7] Verify Trilio deployment

Verify on the nodes that are supposed to run the Trilio containers, that those are available and healthy.

The example is shown for 6.2.0 release from Kolla Rocky Epoxy setup.

```
[root@controller0 ~]# docker ps | grep datamover-api
00f3020fceda   trilio/kolla-rocky-trilio-datamover-api:6.2.0-2025.1       "dumb-init --single-…"   52 minutes ago   Up 52 minutes                       triliovault_datamover_api

[root@controller0 ~]# docker ps -a | grep wlm
dbd99e869b83   trilio/kolla-rocky-trilio-wlm:6.2.0-2025.1                 "dumb-init --single-…"   52 minutes ago   Up 52 minutes                       triliovault_wlm_cron
e93d538aa647   trilio/kolla-rocky-trilio-wlm:6.2.0-2025.1                 "dumb-init --single-…"   52 minutes ago   Up 52 minutes                       triliovault_wlm_scheduler
9b5771d1d588   trilio/kolla-rocky-trilio-wlm:6.2.0-2025.1                 "dumb-init --single-…"   52 minutes ago   Up 52 minutes                       triliovault_wlm_workloads
c3f3d6d3e0d8   trilio/kolla-rocky-trilio-wlm:6.2.0-2025.1                 "dumb-init --single-…"   52 minutes ago   Up 52 minutes                       triliovault_wlm_api
7ada694768b6   trilio/kolla-rocky-trilio-wlm:6.2.0-2025.1                 "dumb-init --single-…"   2 hours ago      Exited (0) 2 hours ago              wlm_cloud_trust

[root@controller0 ~]# docker ps | grep dms
68c1c7d40389   trilio/kolla-rocky-trilio-dms:6.2.0                        "dumb-init --single-…"   54 minutes ago   Up 54 minutes                       triliovault_dms

[root@controller0 ~]# ssh compute0 "docker ps | grep datamover"
d18ed6f3a796   trilio/kolla-rocky-trilio-datamover:6.2.0-2025.1          "dumb-init --single-…"   54 minutes ago   Up 54 minutes                   triliovault_datamover

[root@controller0 ~]# ssh compute0 "docker ps | grep dms"
cdb5dc0e1950   trilio/kolla-rocky-trilio-dms:6.2.0                       "dumb-init --single-…"   54 minutes ago   Up 54 minutes                   triliovault_dms

[root@controller0 ~]# docker ps | grep horizon
6edf2374a4c7   trilio/kolla-rocky-trilio-horizon-plugin:6.2.0-2025.1      "dumb-init --single-…"   56 minutes ago   Up 56 minutes (healthy)             horizon

```

## 8] Create cloud admin trust

Replace the inventory file path and run the below command to create cloud admin trust.

```
# For Epoxy and Flamingo
ansible-playbook -i {{ kolla inventory file }} $venv_path/share/kolla-ansible/ansible/roles/triliovault/tasks/wlm_cloud_trust.yml -e "@/etc/kolla/globals.yml"
```

### 8.1] Verify cloud admin trust created

Login to any controller node and check the logs of wlm\_cloud\_trust container. This should show the cloud admin trust created.

```
ssh controller
docker logs wlm_cloud_trust
```

## 9] Install a new Backup Target

To add a new backup target, refer to the [Add backup target](/openstack/admin-guide/backup-targets/add-a-backup-target.md).

## 10] Troubleshooting Tips

### 10.1] Check Trilio containers and their startup logs

To see all TriloVault containers running on a specific node use the docker ps command.

```
docker ps -a | grep trilio
```

To check the startup logs use the docker logs \<container name> command.

```
docker logs triliovault_datamover_api
docker logs triliovault_datamover
docker logs triliovault_wlm_api
docker logs triliovault_wlm_scheduler
docker logs triliovault_wlm_cron
docker logs triliovault_wlm_workloads
docker logs triliovault_dms
docker logs wlm_cloud_trust
```

### 10.2] Trilio Horizon tabs are not visible in OpenStack

Verify that the Trilio Appliance is configured. The Horizon tabs are only shown, when a configured Trilio appliance is available.

Verify that the Trilio horizon container is installed and in a running state.

```
docker ps | grep horizon
```

### 10.3] Trilio Service logs

* Trilio workloadmgr api service logs on workloadmgr api node

```
/var/log/kolla/triliovault-wlm-api/triliovault-wlm-api.log
```

* Trilio workloadmgr cron service logs on workloadmgr cron node

```
/var/log/kolla/triliovault-wlm-cron/triliovault-wlm-cron.log
```

* Trilio workloadmgr scheduler service logs on workloadmgr scheduler node

```
/var/log/kolla/triliovault-wlm-scheduler/triliovault-wlm-scheduler.log
```

* Trilio workloadmgr workloads service logs on workloadmgr workloads node

```
/var/log/kolla/triliovault-wlm-workloads/triliovault-wlm-workloads.log
```

* Trilio datamover api service logs on datamover api node

```
/var/log/kolla/triliovault-datamover-api/triliovault-datamover-api.log
```

* Trilio datamover service logs on datamover node

```
/var/log/kolla/triliovault-datamover/triliovault-datamover.log
```

## 11] Advanced configurations - \[Optional]

We are using cinder's ceph user for interacting with Ceph cinder storage. This user name is defined using parameter - 'ceph\_cinder\_user' in the file '/etc/kolla/globals.yaml'.

{% hint style="info" %}
Details about multiple ceph configuration can be found [here](/openstack/advanced-configuration/advanced-ceph-configurations/additions-for-multiple-ceph-configurations.md).
{% endhint %}
