# Multi-IP NFS Backup target mapping file configuration

## Introduction <a href="#id-1-introduction" id="id-1-introduction"></a>

Filename and location:

```
triliovault-cfg-scripts/common/triliovault_nfs_map_input.yml
```

This file is used only when the user wants to configure 'multiple IP/endpoints based NFS share' as a backup target for Trilio. In all other cases like single IP NFS, S3 this file does not get used. Follow regular install doc.

If the user is using multiple-IP/endpoints based NFS share as a backup target for triliovault then triliovault mounts any one IP/endpoint on a given compute node for a given NFS share. Users can distribute NFS share IPs/endpoints across compute nodes.

'`triliovault_nfs_map_input.yml`' file is a tool that users can use to distribute/load balance NFS share endpoints across compute nodes in a given cloud.

{% hint style="info" %}
*Note: Two IPs/endpoints of same NFS share on single compute node is invalid scenario and not required because in backend it stores data at same place.*
{% endhint %}

## Examples <a href="#id-2-examples" id="id-2-examples"></a>

### Using hostnames

Here, the User has ‘one’ NFS share exposed with three IP addresses. 192.168.1.34, 192.168.1.35, 192.168.1.33\
Share directory path is: `/var/share1`

So, this NFS share supports the following full paths that clients can mount:

```
192.168.1.33:/var/share1 
192.168.1.34:/var/share1 
192.168.1.35:/var/share1
```

There are 32 compute nodes in the OpenStack cloud.\
30 node hostnames have the following naming pattern

```
prod-compute-1.trilio.demo 
prod-compute-2.trilio.demo 
prod-compute-3.trilio.demo 
. 
. 
. 
prod-compute-30.trilio.demo
```

The remaining 2 node hostnames do not follow any format/pattern.

```
compute_bare.trilio.demo 
compute_virtual
```

Now the mapping file will look like this

```
multi_ip_nfs_shares: 
 - "192.168.1.34:/var/share1": ['prod-compute-[1:10].trilio.demo', 'compute_bare.trilio.demo'] 
   "192.168.1.35:/var/share1": ['prod-compute-[11:20].trilio.demo', 'compute_virtual'] 
   "192.168.1.33:/var/share1": ['prod-compute-[21:30].trilio.demo'] 

single_ip_nfs_shares: []
```

### **Using IPs**

Compute node IP range used here: 172.30.3.11-40 and 172.30.4.40, 172.30.4.50 Total of 32 compute nodes

```
multi_ip_nfs_shares: 
 - "192.168.1.34:/var/share1": ['172.30.3.[11:20]', '172.30.4.40'] 
   "192.168.1.35:/var/share1": ['172.30.3.[21:30]', '172.30.4.50'] 
   "192.168.1.33:/var/share1": ['172.30.3.[31:40]'] 

single_ip_nfs_shares: []
```

{% hint style="info" %}
Other complex examples are available on github at [triliovault-cfg-scripts/common/examples-multi-ip-nfs-map at master · trilioData/triliovault-cfg-scripts](https://github.com/trilioData/triliovault-cfg-scripts/tree/master/common/examples-multi-ip-nfs-map)
{% endhint %}

## **Getting the correct compute hostnames/IPs**

### **RHOSP or TripleO**

Use the following command to get compute hostnames. Check the ‘Name' column. Use these exact hostnames in `'triliovault_nfs_map_input.yml`' file.

In the following command output, ‘**overcloudtrain1-novacompute-0**' and ‘**overcloudtrain1-novacompute-1**' are correct hostnames.

{% hint style="info" %}
Run this command on undercloud by sourcing 'stackrc'.
{% endhint %}

```
(undercloud) [stack@ucqa161 ~]$ openstack server list
+--------------------------------------+-------------------------------+--------+----------------------+----------------+---------+
| ID                                   | Name                          | Status | Networks             | Image          | Flavor  |
+--------------------------------------+-------------------------------+--------+----------------------+----------------+---------+
| 8c3d04ae-fcdd-431c-afa6-9a50f3cb2c0d | overcloudtrain1-controller-2  | ACTIVE | ctlplane=172.30.5.18 | overcloud-full | control |
| 103dfd3e-d073-4123-9223-b8cf8c7398fe | overcloudtrain1-controller-0  | ACTIVE | ctlplane=172.30.5.11 | overcloud-full | control |
| a3541849-2e9b-4aa0-9fa9-91e7d24f0149 | overcloudtrain1-controller-1  | ACTIVE | ctlplane=172.30.5.25 | overcloud-full | control |
| 74a9f530-0c7b-49c4-9a1f-87e7eeda91c0 | overcloudtrain1-novacompute-0 | ACTIVE | ctlplane=172.30.5.30 | overcloud-full | compute |
| c1664ac3-7d9c-4a36-b375-0e4ee19e93e4 | overcloudtrain1-novacompute-1 | ACTIVE | ctlplane=172.30.5.15 | overcloud-full | compute |
+--------------------------------------+-------------------------------+--------+----------------------+----------------+---------+
```

### **Kolla-Ansible OpenStack**

Compute hostnames/IPs should match in kolla-ansible inventory file and triliovault\_nfs\_map\_input.yml.

If IP addresses are sued in kolla-ansible inventory file then the same IP addresses should be used in ‘triliovault\_nfs\_map\_input.yml' file too.\
\
If the kolla-ansible deploy command looks like the following,

`kolla-ansible -i multinode deploy`

then, the inventory file is 'multinode'. Generally, it is available at “/root/multinode“.

### **OpenStack Ansible**

Compute hostnames/IPs should match in the Openstack Ansible inventory file and triliovault\_nfs\_map\_input.yml

If IP addresses have been used in the Openstack-ansible inventory file then you should use the same IP addresses in the ‘triliovault\_nfs\_map\_input.yml' file too.

Generally inventory file available at *`/etc/openstack_deploy/openstack_user_config.yml`*

Openstack Ansible deploy command looks like following,

`openstack-ansible os-tvault-install.yml`

Openstack Ansible automatically picks up values that the user has set in the file openstack\_user\_config.yml


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.trilio.io/openstack/t4o-4.3/deployment/multi-ip-nfs-backup-target-mapping-file-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
