Getting started with Trilio on Red-Hat OpenStack Platform (RHOSP)
Last updated
Was this helpful?
Last updated
Was this helpful?
The is the supported and recommended method to deploy and maintain any RHOSP installation.
Trilio is integrating natively into the RHOSP Director. Manual deployment methods are not supported for RHOSP.
Refer to the link to get release specific values of the placeholders, viz Container URLs
, trilio_branch
, RHOSP Version
and CONTAINER-TAG-VERSION
in this document as per the Openstack environment:
Backup target storage is used to store backup images taken by Trilio and details needed for configuration:
The following backup target types are supported by Trilio
a) NFS
Need NFS share path
b) Amazon S3
- S3 Access Key - Secret Key - Region - Bucket name
c) Other S3 compatible storage (Like Ceph based S3)
- S3 Access Key - Secret Key - Region - Endpoint URL (Valid for S3 other than Amazon S3) - Bucket name
The following steps are to be done on the undercloud
node on an already installed RHOSP environment.
The overcloud-deploy command has to be run successfully already and the overcloud should be available.
All commands need to be run as a stack
user on the undercloud
node
The following command clones the triliovault-cfg-scripts github repository.
If your backup target is CEPH S3 with SSL and SSL certificates are self-signed or authorized by a private CA, then the user needs to provide a CA chain certificate to validate the SSL requests. For all s3 backup target with self signed TLS certificates, user need to copy ca chain files in following location and in given file name format in trilio puppet module. Edit <S3_BACKUP_TARGET_NAME>, <S3_SELF_SIGNED_CERT_CA_CHAIN_FILE> parameters in following command.
For example if S3_BACKUP_TARGET_NAME = BT2_S3 and your S3_SELF_SIGNED_CERT_CA_CHAIN_FILE='s3-ca.pem' then command to copy this ca chain file to trilio puppet module would be
Trilio contains multiple services. Add these services to your roles_data.yaml
.
Add the following services to the roles_data.yaml
All commands need to be run as a 'stack' user
This service needs to share the same role as the keystone
and database
service.
In the case of the pre-defined roles, these services will run on the role Controller
.
In the case of custom-defined roles, it is necessary to use the same role where OS::TripleO::Services::Keystone
service installed.
Add the following line to the identified role:
This service needs to share the same role as the nova-compute
service.
In the case of the pre-defined roles will the nova-compute
service run on the role Compute
.
In the case of custom-defined roles, it is necessary to use the role that the nova-compute
service uses.
Add the following line to the identified role:
All commands need to be run as a 'stack' user
There are three registry methods available in the RedHat OpenStack Platform.
Remote Registry
Local Registry
Satellite Server
Follow this section when 'Remote Registry' is used.
In this method, container images get downloaded directly on overcloud nodes during overcloud deploy/update command execution. Users can set the remote registry to a redhat registry or any other private registry that they want to use.
The user needs to provide credentials for the registry in containers-prepare-parameter.yaml
file.
Make sure other OpenStack service images are also using the same method to pull container images. If it's not the case you can not use this method.
Populate containers-prepare-parameter.yaml
with content like the following. Important parameters are push_destination: false
,
ContainerImageRegistryLogin: true and registry credentials.
Trilio container images are published to registry registry.connect.redhat.com
.
Credentials of registry 'registry.redhat.io' will work for registry.connect.redhat.com
registry too.
Note: This file containers-prepare-parameter.yaml
Note: File 'containers-prepare-parameter.yaml' gets created as output of command 'openstack tripleo container image prepare'. Refer above document by RedHat
3. Make sure you have network connectivity to the above registries from all overcloud nodes. Otherwise image pull operation will fail.
4. The user needs to manually populate the trilio_env.yaml
file with Trilio container image URLs as given below:
At this step, you have configured Trilio image URLs in the necessary environment file.
Follow this section when 'local registry' is used on the undercloud.
In this case, it is necessary to push the Trilio containers to the undercloud registry.
Trilio provides shell scripts that will pull the containers from registry.connect.redhat.com
and push them to the undercloud and update the trilio_env.yaml
.
At this step, you have downloaded Trilio container images and configured Trilio image URLs in the necessary environment file.
Follow this section when a Satellite Server is used for the container registry.
Populate the trilio_env.yaml
with container URLs.
At this step, you have downloaded Trilio container images into the RedHat satellite server and configured Trilio image URLs in the necessary environment file.
Edit /home/stack/triliovault-cfg-scripts/redhat-director-scripts/<RHOSP_RELEASE_DIRECTORY>/environments/trilio_env.yaml
file and provide backup target details and other necessary details in the provided environment file. This environment file will be used in the overcloud deployment to configure Trilio components. Container image names have already been populated in the preparation of the container images. Still, it is recommended to verify the container URLs.
You don't need to provide anything for resource_registry
, keep it as it is.
CloudAdminUserName
Default value is admin
.
Provide the cloudadmin user name of your overcloud
CloudAdminProjectName
Default value is admin
.
Provide the cloudadmin project name of your overcloud
CloudAdminDomainName
Default value is default
.
Provide the cloudadmin project name of your overcloud
CloudAdminPassword
Provide the cloudadmin user's password of your overcloud
ContainerTriliovaultDatamoverImage
Trilio Datamover Container image name have already been populated in the preparation of the container images.
Still it is recommended to verify the container URL.
ContainerTriliovaultDatamoverApiImage
Trilio DatamoverApi Container image name have already been populated in the preparation of the container images.
Still it is recommended to verify the container URL.
ContainerTriliovaultWlmImage
Trilio WLM Container image name have already been populated in the preparation of the container images.
Still it is recommended to verify the container URL.
ContainerHorizonImage
Horizon Container image name have already been populated in the preparation of the container images.
Still it is recommended to verify the container URL.
TrilioBackupTargets
List of Backup Targets for TrilioVault. These backup targets will be used to store backups taken by TrilioVault. Backup target examples and format of NFS and S3 types are already provided in the trilio_env.yaml file. Details of respective prameters under TrilioBackupTargets given in next section
TrilioDatamoverOptVolumes
User can specify list of extra volumes that they want to mount on 'triliovault_datamover' container.
Refer the Configure Custom Volume/Directory Mounts for the Trilio Datamover Service
section in this doc
T4O supports setting up multiple target backend for storing snapshots. User can define any number of storage backends as required. At a high level, NFS and S3 are supported.
Following table provides the details of parameters to be set in trilio_env.yaml
file against all the S3 target backends.
backup_target_name
User Defined Name of the target backend. Can be any name which can help in quick identifying respective target
backup_target_type
s3
is_default
Can be true
or false
. Ideally, any one of the multiple target backends specified in trilio_env.yaml
file must be marked as true
.
s3_type
Could be either of amazon s3
OR ceph_s3
depending upon which S3 is to be configured with T4O.
s3_access_key
S3 Access Key
s3_secret_key
S3 Secret Key
s3_region_name
S3 Region name
s3_bucket
S3 Bucket
s3_endpoint_url
S3 endpoint url
s3_signature_version
Provide S3 signature version
s3_auth_version
Provide S3 auth version
s3_ssl_enabled
true
s3_ssl_verify
true
s3_self_signed_cert
true
s3_bucket_object_lock_enabled
If S3 bucket is having object lock enabled, then this should be set as true
else false
Following table provides the details of parameters to be set in trilio_env.yaml
file against all the NFS target backends.
backup_target_name
User Defined Name of the target backend. Can be any name which can help in quick identifying respective target
backup_target_type
nfs
is_default
Can be true
or false
. Ideally, any one of the multiple target backends specified in trilio_env.yaml
file must be marked as true
.
nfs_options
'nolock,soft,timeo=600,intr,lookupcache=none,nfsvers=3,retrans=10'
These parameter set NFS mount options. Keep default values, unless a special requirement exists
is_multi_ip_nfs
true
or false
depending upon whether the storage backend is NFS having single or multiple IP.
nfs_shares
NFS IP and share path. To be kept in case of single IP NFS. Eg. 11.30.1.10:/mnt/share
multi_ip_nfs_map
NFS IPs and share paths. To be kept in case of multiple NFS IPs. Sample below multi_ip_nfs_map:  controller1: 192.168.2.3:/var/nfsshare  controller2: 192.168.2.4:/var/nfsshare  compute0: 192.168.3.2:/var/nfsshare  compute1: 192.168.3.4:/var/nfsshare
After you fill in details of backup targets in trilio_env.yaml, user needs to run following script from ‘scripts' directory on undercloud node. This script will update ‘services/triliovault-object-store.yaml' file. User don’t need to verify that.
For only this section user needs to source the cloudrc file of overcloud node
The output will be written to
For TrilioVault functionality to work, we need the following Linux kernel modules to be loaded on all controllers and compute nodes(Where Trilio WLM and Datamover services are going to be installed).
All commands need to be run as a 'stack' user on undercloud node
trilio_defaults.yaml
in overcloud deploy command with `-e` option as shown below.This YAML file holds the default values, like default Trustee Role is creator
and Keystone endpoint interface is Internal
. There are some other parameters as well those User can update as per their requirements.
trilio_env.yaml
roles_data.yaml
trilio_passwords.yaml
trilio_defaults.yaml
Use the correct Trilio endpoint map file as per the available Keystone endpoint configuration. You have to remove your OpenStack's endpoint map file from overcloud deploy command and instead of that use Trilio endpoint map file.
Instead of tls-endpoints-public-dns.yaml
file, use triliovault-cfg-scripts/redhat-director-scripts/<RHOSP_RELEASE_DIRECTORY>/environments/trilio_env_tls_endpoints_public_dns.yaml
Instead of tls-endpoints-public-ip.yaml
file, usetriliovault-cfg-scripts/redhat-director-scripts/<RHOSP_RELEASE_DIRECTORY>/environments/trilio_env_tls_endpoints_public_ip.yaml
Instead of tls-everywhere-endpoints-dns.yaml
file, usetriliovault-cfg-scripts/redhat-director-scripts/<RHOSP_RELEASE_DIRECTORY>/environments/trilio_env_tls_everywhere_dns.yaml
Instead of no-tls-endpoints-public-ip.yaml
file, usetriliovault-cfg-scripts/redhat-director-scripts/<RHOSP_RELEASE_DIRECTORY>/environments/trilio_env_non_tls_endpoints_ip.yaml
To include new environment files use -e
option and for roles data files use -r
option.\
Below is an example of an overcloud deploy command with Trilio environment:
Trilio components will be deployed using puppet scripts.
=> If any Trilio containers do not start well or are in a restarting state on the Controller/Compute node, use the following logs to debug.
triliovault_nfs_map_input.yml
in the current directory and provide compute host and NFS share/IP map.Get the overcloud Controller and Compute hostnames from the following command. Check Name
column. Use exact host names in the triliovault_nfs_map_input.yml
file.
Below is an example of how you can set the multi-IP NFS details:
You can not configure the different IPs for the Controllers/WLM nodes, you need to use the same share on all the controller nodes. You can configure the different IPs for Compute/Datamover nodes
If pip isn't available please install pip on the undercloud.
Expand the map file to create a one-to-one mapping of the compute nodes and the NFS shares.
The result will be stored in the triliovault_nfs_map_output.yml
file
Open file triliovault_nfs_map_output.yml
available in the current directory and validate that all compute nodes are covered with all the necessary NFS shares.
triliovault-cfg-scripts/redhat-director-scripts/<RHOSP_RELEASE_DIRECTORY>/environments/trilio_nfs_map.yaml
Validate the changes in the file triliovault-cfg-scripts/redhat-director-scripts/<RHOSP_RELEASE_DIRECTORY>/environments/trilio_nfs_map.yaml
trilio_nfs_map.yaml
) in overcloud deploy command with '-e' option as shown below.MultiIPNfsEnabled
is set to true in the trilio_env.yaml
file and that NFS is used as a backup target.Following is the HAproxy conf file location on HAproxy nodes of the overcloud. Trilio Datamover API service HAproxy configuration gets added to this file.
Trilio Datamover HAproxy default configuration from the above file looks as follows:
The user can change the following configuration parameter values.
To change these default values, you need to do the following steps. i) On the undercloud node, open the following file for editing.
ii) Search the following entries and edit as required
iii) Save the changes and do the overcloud deployment again to reflect these changes for overcloud nodes.
i) If the user wants to add one or more extra volume/directory mounts to the Trilio Datamover Service container, they can use a variable named 'TrilioDatamoverOptVolumes' is available in the below file.
To add one more extra volume/directoy mount to the Trilio Datamover Service container it is necessary that volumes/directories should already be mounted on the Compute host
ii) The variable 'TrilioDatamoverOptVolumes' accepts a list of volume/bind mounts. User needs to edit the file and add their volume mounts in the below format.
iii) Lastly you need to do overcloud deploy/update.
After successful deployment, you will see that volume/directory mount will be mounted inside the Trilio Datamover Service container.
We are using cinder's ceph user for interacting with Ceph cinder storage. This user name is defined using parameter - 'ceph_cinder_user'.
Trilio containers are pushed to the RedHat Container Registry
.
Registry URL: 'registry.connect.redhat.com'. For Container URLs
, please refer
Redhat document for remote registry method:
Pull the Trilio containers on the Red Hat Satellite using the given
Please follow to verify the deployment.
In case of the overcloud deployment failing do the following command provide the list of errors. The following document also provides valuable insights:
Edit the input map file triliovault_nfs_map_input.yml
and fill in all the details. Refer to for details about the structure.
Details about multiple ceph configuration can be found .