Encrypt VNC Console Connections
When you deploy Oracle Linux Virtualization Manager using FIPS enabled systems, you must ensure VNC console connections are encrypted.
Enable VNC Encryption at Cluster Level
When you have deployed Oracle Linux Virtualization Manager on FIPS enabled systems, you must enable VNC encryption to access virtual machine consoles. Do this at the cluster level:
- From the Administration Portal, go to Compute > Clusters.
- Edit the Cluster where you want to enable VNC Encryption.
- Click on the Console tab on the left.
- Check the Enable VNC Encryption checkbox and then click OK.
Reinstall KVM Host
After enabling VNC encryption, you are prompted to reinstall the KVM host, which applies all the required options to enable the VNC encrypted console connection.
Note:
On all hosts assigned to the self-hosted engine, from the Reinstall dialog go to the Hosted-Engine tab and select Deploy.- From the Administration Portal, go to Compute > Hosts.
- Select a host to configure, click Management, and then click Maintenance.
- Click the Installation button.
- Select Reinstall and uncheck "Reboot host after installation".
- Click OK.
Run VNC SASL Ansible Playbook on KVM Hosts
To apply the playbook, the KVM host must be in Maintenance mode. You can run the playbook on more than one host at a time. Add all KVM hosts to be configured to the /etc/hosts
file, one host per line. Ensure that those hosts are in Maintenance mode before applying the playbook.
- From the Administration Portal, go to Compute > Hosts.
- Select the host you want to configure, click Management, and then click Maintenance.
- SSH into the Engine server.
- Ansible tries to find the best Python interpreter to use. Set it to
/usr/bin/python3
to avoid errors, then run theovirt-vnc-sasl.yml
playbook:# cd /usr/share/ovirt-engine/ansible-runner-service-project/project/ # sed -ri.orig '/defaults/ainterpreter_python = /usr/bin/python3' ansible.cfg # echo "IP-OR-HOSTNAME" > hosts # ansible-playbook --ask-pass --inventory=hosts ovirt-vnc-sasl.yml
Full output example:
# cd /usr/share/ovirt-engine/ansible-runner-service-project/project/ # echo "192.168.0.102" > hosts # sed -ri.orig '/defaults/ainterpreter_python = /usr/bin/python3' ansible.cfg # ansible-playbook --ask-pass --inventory=hosts ovirt-vnc-sasl.yml SSH password: PLAY [all] ********************************************************************* TASK [Gathering Facts] ********************************************************* ok: [192.168.0.102] TASK [ovirt-host-setup-vnc-sasl : Create SASL QEMU config file] **************** ok: [192.168.0.102] TASK [ovirt-host-setup-vnc-sasl : Use saslpasswd2 to create file with dummy user] *** ok: [192.168.0.102] TASK [ovirt-host-setup-vnc-sasl : Set ownership of the password db] ************ ok: [192.168.0.102] TASK [ovirt-host-setup-vnc-sasl : Modify qemu config file - enable VNC SASL authentication] *** ok: [192.168.0.102] PLAY RECAP ********************************************************************* 192.168.0.102 : ok=5 changed=5 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Note:
You might receive the following error message when running theovirt-vnc-sasl.yml
playbook:ERROR! The requested handler 'populate service facts and restart libvirtd' / was not found in either the main handlers list nor in the listening handlers list
This error is due to the auto-detected Python version being used. To fix it, add the interpreter_python
option to the local ansible.cfg
file and then rerun the playbook to complete all tasks.
# cd /usr/share/ovirt-engine/ansible-runner-service-project/project/ # sed -ri.orig '/defaults/ainterpreter_python = /usr/bin/python3' ansible.cfg