# Getting started with Trilio on Canonical OpenStack

Trilio and Canonical have started a partnership to ensure a native deployment of Trilio using JuJu Charms.

Those JuJu Charms are publicly available as Open Source Charms.

{% hint style="info" %}
Pease refer [Resources](https://docs.trilio.io/openstack/about-trilio-for-openstack/artifacts) section for required Charm details.
{% endhint %}

## Prerequisite

A Canonical OpenStack base setup deployed for a required release. Refer [Compatibility Matrix](https://docs.trilio.io/openstack/about-trilio-for-openstack/support-matrix)

## Steps to install the Trilio charms

#### 1. Export the OpenStack base bundle

```
juju export-bundle --filename openstack_base_file.yaml
```

#### 2. Create a Trilio overlay bundle as per the OpenStack setup release using the charms given above.

{% hint style="info" %}
NFS options for Cohesity NFS : nolock,soft,timeo=600,intr,lookupcache=none,nfsvers=3,retrans=10
{% endhint %}

{% hint style="danger" %}
Trilio File Search functionality requires that the Trilio Workload manager (trilio-wlm) be deployed as a virtual machine. File Search *will not* function if the Trilio Workload manager (trilio-wlm) is running as a lxd container(s).
{% endhint %}

{% hint style="danger" %}
If trilio-wlm service is assigned to any nova-compute node then wlm mysql router service fails to start. Hence, please ensure to assign trilio-wlm service to some other node.
{% endhint %}

Sample Trilio overlay bundles (*T5O release wise*) available in `triliovault-cfg-scripts` repository at path : `juju-charms/sample_overlay_bundles`

{% hint style="info" %}
Value of `trilio_branch` can be taken from release specific [Resources](https://docs.trilio.io/openstack/about-trilio-for-openstack/artifacts)
{% endhint %}

```
git clone https://github.com/trilioData/triliovault-cfg-scripts.git
cd triliovault-cfg-scripts
git checkout {{ trilio_branch }}
cd juju-charms/sample_overlay_bundles
```

Following table provides the details of various values to be updated in overlay bundle.

| **Parameters**                | **Summary**                                                                                                                                         |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| triliovault-pkg-source        | Trilio debian package repo url; Refer release specific [Resources](https://docs.trilio.io/openstack/about-trilio-for-openstack/artifacts) page      |
| machines                      | List of Machines available on canonical openstack setup                                                                                             |
| channel                       | Channel name as provided in release specific [Resources](https://docs.trilio.io/openstack/about-trilio-for-openstack/artifacts) page                |
| revision                      | Latest values as provided by Trilio. Refer release specific [Resources](https://docs.trilio.io/openstack/about-trilio-for-openstack/artifacts) page |
| trilio-backup-targets         | List of all the back up targets and respective details which user wants to have deployed against T4O                                                |
| backup-target-name            | Name of the back up target; can be any relevant string as defined by the user                                                                       |
| backup-target-type            | s3 or nfs                                                                                                                                           |
| is-default                    | Can be `true` or `false`; ideally only one backup target can have is-default set to `true`                                                          |
| s3-type                       | Can be set as `amazon_s3` or `other_s3`                                                                                                             |
| s3-access-key                 | S3 Access Key                                                                                                                                       |
| s3-secret-key                 | S3 Secret Key                                                                                                                                       |
| s3-region-name                | S3 Region                                                                                                                                           |
| s3-bucket                     | S3 bucket                                                                                                                                           |
| s3-endpoint-url               | To be kept blank as set in sample overlay bundle                                                                                                    |
| s3-signature-version          | To be set as `default`                                                                                                                              |
| s3-auth-version               | To be set as `DEFAULT`                                                                                                                              |
| s3-ssl-enabled                | Set `true` for SSL enabled S3 endpoint URL                                                                                                          |
| s3-ssl-verify                 | Set `true` for SSL enabled S3 endpoint URL                                                                                                          |
| s3-self-signed-cert           | Set as `true` if S3 SSL/TLS certificates are self signed, else `false`                                                                              |
| s3-ssl-ca\_cert               | Required if S3 SSL/TLS certificates are self signed, else the parameter to be left blank.                                                           |
| s3-bucket-object-lock-enabled | Set as `true` of S3 bucket is having object lock enabled, else set as `false`                                                                       |
| nfs-shares                    | NFS server IP and share path                                                                                                                        |
| nfs-options                   | Options as per respective NFS server                                                                                                                |

#### 3. T4O Deployment

3.1] Do a dry run to check if the Trilio bundle is working

{% code fullWidth="true" %}

```
juju deploy --dry-run ./openstack_base_file.yaml --overlay <Trilio bundle path>
```

{% endcode %}

3.2] Trigger deployment

{% code fullWidth="true" %}

```
juju deploy ./openstack_base_file.yaml --overlay <Trilio bundle path>
```

{% endcode %}

3.3] Wait until all the Trilio units are deployed successfully. Check the status via `juju status` command.

#### 4. Post Deployment Steps

4.1] Once the deployment is complete, perform the below operations:

a. Create cloud admin trust & add licence

{% tabs %}
{% tab title="Juju 3.x" %}
{% code overflow="wrap" %}

```
juju run --wait trilio-wlm/leader create-cloud-admin-trust password=<openstack admin password>
juju attach-resource trilio-wlm license=<Path to trilio license file>
juju run --wait trilio-wlm/leader create-license
```

{% endcode %}
{% endtab %}

{% tab title="Juju 2.x" %}
{% code overflow="wrap" %}

```
juju run --wait trilio-wlm/leader create-cloud-admin-trust password=<openstack admin password>
juju attach-resource trilio-wlm license=<Path to trilio license file>
juju run-action --wait trilio-wlm/leader create-license
```

{% endcode %}
{% endtab %}
{% endtabs %}

**Note**: Reach out to the Trilio support team for the license file.

#### 5. Verify the T4O Deployment

5.1] After T4O deployment steps are over, it can take sometime for all units to get deployed successfully. Deployment is considered successful when all the units show `Unit is Ready` in the message column.

To verify the same, following command (*& sample output*) can be used to fetch the Trilio units/applications.

{% code overflow="wrap" %}

```
juju status | grep -i trilio

trilio-data-mover               5.2.8.14  active      3  trilio-charmers-trilio-data-mover      latest/candidate   22  no       Unit is ready
trilio-data-mover-mysql-router  8.0.39    active      3  mysql-router                           8.0/stable        200  no       Unit is ready
trilio-dm-api                   5.2.8     active      1  trilio-charmers-trilio-dm-api          latest/candidate   17  no       Unit is ready
trilio-dm-api-mysql-router      8.0.39    active      1  mysql-router                           8.0/stable        200  no       Unit is ready
trilio-horizon-plugin           5.2.8.8   active      1  trilio-charmers-trilio-horizon-plugin  latest/candidate   10  no       Unit is ready
trilio-wlm                      5.2.8.15  active      1  trilio-charmers-trilio-wlm             latest/candidate   18  no       Unit is ready
trilio-wlm-mysql-router         8.0.39    active      1  mysql-router                           8.0/stable        200  no       Unit is ready
  trilio-data-mover-mysql-router/2   active    idle            172.20.1.5                          Unit is ready
  trilio-data-mover/1                active    idle            172.20.1.5                          Unit is ready
  trilio-data-mover-mysql-router/0*  active    idle            172.20.1.7                          Unit is ready
  trilio-data-mover/2                active    idle            172.20.1.7                          Unit is ready
  trilio-data-mover-mysql-router/1   active    idle            172.20.1.8                          Unit is ready
  trilio-data-mover/0*               active    idle            172.20.1.8                          Unit is ready
  trilio-horizon-plugin/0*           active    idle            172.20.1.27                         Unit is ready
trilio-dm-api/0*                     active    idle   1/lxd/2  172.20.1.29     8784/tcp            Unit is ready
  trilio-dm-api-mysql-router/0*      active    idle            172.20.1.29                         Unit is ready
trilio-wlm/0*                        active    idle   1        172.20.1.4      8780/tcp            Unit is ready
  trilio-wlm-mysql-router/0*         active    idle            172.20.1.4                          Unit is ready
```

{% endcode %}

#### 6. Troubleshooting T4O Deployment

6.1] To debug any specific unit : juju debug-log --include \<UNIT\_NAME\_IN\_ERROR>

Eg. If trilio-wlm/6 unit is in 'error' state, it's logs can be fetched using following command. Specific correct unit number from respective deployment using `juju status` command.

`juju debug log --include trilio-wlm/6`

**For multipath enabled environments, perform the following actions**

1. log into each nova compute node
2. add uxsock\_timeout with value as 60000 (i.e. 60 sec) in /etc/multipath.conf
3. restart tvault-contego service
