Deploying the VMs requires `libvirt` to be installed and configured correctly.
You may either use [your local libvirt setup](#local-libvirt-setup) if it meets the requirements, or use a [containerized libvirt in docker](#containerized-libvirt).
## Containerized libvirt
Constellation will automatically deploy a containerized libvirt instance, if no connection URI is defined in the Constellation config file.
Follow the steps in our [libvirt readme](../../cli/internal/libvirt/README.md) if you wish to build your own image.
Using a virtual TPM (vTPM) with QEMU only works if swtpm is version 0.7 or newer!
Ubuntu 22.04 currently ships swtpm 0.6.3, so you need to install swtpm [from launchpad](https://launchpad.net/~stefanberger/+archive/ubuntu/swtpm-jammy/).
1. Uninstall current version of swtpm (if installed)
```shell-session
sudo apt remove swtpm swtpm-tools
```
2. Add ppa (this command shows the ppa for Ubuntu 22.04 jammy but others are available)
Once you created a cluster via constellation you can connect to the virtual machines using the following commands. First, run
```shell-session
virsh -c qemu+tcp://localhost:16599/system
```
which gives you a new `virsh` shell. In this shell, you can run
```shell-session
list
```
to see the created virtual machines, as well as their status. This should look something like this:
```txt
Id Name State
------------------------------------------
1 constell-control-plane-0 running
2 constell-worker-0 running
```
If you want to connect to one of those machines, run
```shell-session
console <ID>
```
where `<ID>` would be the id of your virtual machine as seen above (e.g. `1`). After that, press Enter another time and you should drop into a shell on the virtual machine.
Please note that connecting via `qemu+tcp` is not encrypted and should not be used in a security relevant environment.