> 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/tvo-4.0/deployment/spinning-up-the-triliovault-vm.md).

# Spinning up the Trilio VM

{% hint style="warning" %}
For Canonical Openstack it is not necessary to spin up the Trilio VM.
{% endhint %}

The Trilio Appliance is delivered as qcow2 image and runs as VM on top of a KVM Hypervisor.

{% hint style="info" %}
This guide shows the tested way to spin up the Trilio Appliance on a RHV Cluster. Please contact a RHV Administrator and Trilio Customer Success Agent in case of incompatibility with company standards.
{% endhint %}

## Creating the cloud-init image

The Trilio appliance is utilizing cloud-init to provide the initial network and user configuration.

Cloud-init is reading it's information either from a metadata server or from a provided cd image. Trilio is utilizing the cd image.

### Needed tools

To create the cloud-init image it is required to have genisoimage available.

```
#For RHEL and centos
yum install genisoimage
#For Ubuntu 
apt-get install genisoimage
```

### Providing the Metadata

Cloud-init is using two files for it's metadata.

The first file is called `meta-data` and contains the information about the network configuration.\
Below is an example of this file.

{% hint style="danger" %}
Keep the hostname localhost. The hostname gets changed through the configuration step. Changing the hostname will lead to the tvault-config service not properly starting, blocking further configuration.
{% endhint %}

```
[root@kvm]# cat meta-data
instance-id: triliovault
network-interfaces: |
   auto eth0
   iface eth0 inet static
   address 158.69.170.20
   netmask 255.255.255.0
   gateway 158.69.170.30

   dns-nameservers 11.11.0.51
local-hostname: localhost
```

{% hint style="warning" %}
The instance-id has to match the VM name in virsh
{% endhint %}

The second file is called `user-data` and contains little scripts and information to set up for example the user passwords.\
Below is an example of this file.

```
[root@kvm]# cat user-data
#cloud-config
chpasswd:
  list: |
    root:password1
    stack:password2
  expire: False
```

### creating the image file

{% hint style="info" %}
Both files meta-data and user-data are needed. Even when one is empty, is it needed to create a working cloud-init image.
{% endhint %}

The image is getting created using genisoimage follwing this general command:

`genisoimage -output <name>.iso -volid cidata -joliet -rock </path/user-data> </path/meta-data>`

An example of this command is shown below.

```
genisoimage  -output tvault-firstboot-config.iso -volid cidata -joliet -rock user-data meta-data
```

## Spining up the Trilio appliance

{% hint style="info" %}
The Trilio Appliance qcow2 image can be downloaded from the [Trilio customer portal](https://trilio.force.com/io/login). Please contact your Trilio sales or technical lead to get access to the portal.
{% endhint %}

After the cloud-init image has been created the TriloVault appliance can be spun up on the desired KVM server.

Extract the Trilio QCOW2 tar file using the following command :

```
tar Jxvf TrilioVault_file.tar.xz
```

See below an example command, how to spin up the Trilio appliance using virsh and the created iso image.

```
virt-install -n triliovault-vm  --memory 24576 --vcpus 8 \
--os-type linux \ 
--disk tvault-appliance-os-3.0.154.qcow2,device=disk,bus=virtio,size=40 \
--network bridge=virbr0,model=virtio \
--network bridge=virbr1,model=virtio \
--graphics none \
--import \
--disk path=tvault-firstboot-config.iso,device=cdrom
```

{% hint style="info" %}
It is of course possible to spin up the Trilio appliance without a cloud-init iso-image.\
It will spin up with default values.
{% endhint %}

## Uninstalling cloud-init after first boot

Once the Trilio appliance is up and running with it's initial configuration is it recommended to uninstall cloud-init.

{% hint style="info" %}
If cloud-init is not installed it will rerun the network configuration upon every boot. Setting the network configuration back to DHCP, if no metadata is provided.
{% endhint %}

To uninstall cloud-init, follow the example below.

```
sudo apt-get purge cloud-init
```
