Setup Pre-requisites

Ensure that KVM is installed in your Linux system, refer to the following article for a complete how-to guide:

# Debian based systems
sudo apt update
sudo apt install cockpit
sudo systemctl start cockpit
sudo systemctl enable cockpit

# RHEL based systems
sudo dnf update
sudo dnf install cockpit
sudo systemctl start cockpit
sudo systemctl enable cockpit

Step 2: Create Windows Server VM

virt-install \
 --name win2022_template \
 --ram 4096 \
 --vcpus sockets=1,cores=2 \
 --cpu host \
 --os-variant win2k22 \
 --disk path=/var/lib/libvirt/images/win2022_template.qcow2,size=15,bus=virtio,format=qcow2 \
 --cdrom /var/lib/libvirt/images/en-us_windows_server_2022.iso \
 --disk path=/var/lib/libvirt/images/virtio-win.iso,device=cdrom \
 --network bridge=virbr0 \
 --virt-type kvm \
 --boot uefi \
 --machine q35 \

For Open vSwitch:

--network=bridge:br-ex,model=virtio,virtualport_type=openvswitch \
WARNING  Graphics requested but DISPLAY is not set. Not running virt-viewer.
WARNING  No console to launch for the guest, defaulting to --wait -1

Starting install...
Allocating 'win2022_template.qcow2'                                                                                                                                                |  15 GB  00:00:00
Creating domain...                                                                                                                                                                 |         00:00:00

Domain is still running. Installation may be in progress.
Waiting for the installation to complete.
openstack create windows server 2022 image raw 01
openstack create windows server 2022 image raw 02

Step 3: Windows Server Installation

openstack create windows server 2022 image raw 03
openstack create windows server 2022 image raw 04
openstack create windows server 2022 image raw 05
openstack create windows server 2022 image raw 06
openstack create windows server 2022 image raw 07
openstack create windows server 2022 image raw 08
openstack create windows server 2022 image raw 09
openstack create windows server 2022 image raw 10
openstack create windows server 2022 image raw 11
openstack create windows server 2022 image raw 12
openstack create windows server 2022 image raw 13
openstack create windows server 2022 image raw 14
openstack create windows server 2022 image raw 15

Step 4: Enable Remote Desktop

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Value "0" 
Set-NetFirewallRule -Name "RemoteDesktop-In-TCP-WS" -Enabled True
Get-NetFirewallRule | Where-Object Name -like 'RemoteDesktop*' | Set-NetFirewallRule -Enabled True 
openstack create windows server 2022 image raw 16

Step 5: Cloud-Init and QEMU guest agent configurations

Set-ExecutionPolicy Unrestricted
windows server powershell openstack

Install VirtIO-Win Drivers

openstack create windows server 2022 image raw 17
openstack create windows server 2022 image raw 18
openstack create windows server 2022 image raw 19
openstack create windows server 2022 image raw 20
openstack create windows server 2022 image raw 21

Install qemu-guest-agent

openstack create windows server 2022 image raw 22
openstack create windows server 2022 image raw 23

Step 6: Delete Recovery Partition

openstack create windows server 2022 image raw 24
openstack create windows server 2022 image raw 25
openstack create windows server 2022 image raw 26

Step 7: Install Cloudbase-Init

openstack create windows server 2022 image raw 27
openstack create windows server 2022 image raw 28
openstack create windows server 2022 image raw 29
openstack image create "imagename" --disk-format qcow2 --min-ram 4096 --min-disk 20 --file /path/to/image/imagename.qcow2
openstack image create "Windows-Server-2022" \
  --disk-format qcow2 \
  --container-format bare \
  --file windows-server-2022-cloud.qcow2 \
  --min-ram 4096 \
  --min-disk 20 \
  --property os_type=windows \
  --property hw_disk_bus=virtio \
  --property hw_vif_model=virtio \
  --property hw_firmware_type=uefi \
  --property hw_machine_type=q35 \
  --property hw_rng_model=virtio

Sample Output:

+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                                                                                               |
+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum         | 124f58dfce05e1d710433002ee52f3e6                                                                                                                                                    |
| container_format | bare                                                                                                                                                                                |
| created_at       | 2025-10-14T22:15:08Z                                                                                                                                                                |
| disk_format      | qcow2                                                                                                                                                                               |
| file             | /v2/images/0c5a775a-2913-4e36-af2a-7dc7bfc5ef55/file                                                                                                                                |
| id               | 0c5a775a-2913-4e36-af2a-7dc7bfc5ef55                                                                                                                                                |
| min_disk         | 20                                                                                                                                                                                  |
| min_ram          | 4096                                                                                                                                                                                |
| name             | Windows-Server-2022                                                                                                                                                                 |
| owner            | 095ede96db1e48a388b40dcacb2a97b6                                                                                                                                                    |
| properties       | hw_disk_bus='virtio', hw_firmware_type='uefi', hw_machine_type='q35', hw_rng_model='virtio', hw_vif_model='virtio', os_hash_algo='sha512',                                          |
|                  | os_hash_value='b3682abe0c9b862811b93aaf8991d8fd7f2df429ff19eac105f311a2d2fa6b5e33cad1e89ad31f8089b4b78af92805ac18f91f366d033929cf4c2db3030c4b34', os_hidden='False',                |
|                  | os_type='windows', owner_specified.openstack.md5='', owner_specified.openstack.object='images/Windows-Server-2025', owner_specified.openstack.sha256='', stores='file'              |
| protected        | False                                                                                                                                                                               |
| schema           | /v2/schemas/image                                                                                                                                                                   |
| size             | 14582808576                                                                                                                                                                         |
| status           | active                                                                                                                                                                              |
| tags             |                                                                                                                                                                                     |
| updated_at       | 2025-10-14T22:16:34Z                                                                                                                                                                |
| virtual_size     | 16106127360                                                                                                                                                                         |
| visibility       | shared                                                                                                                                                                              |
+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@osp01 ~(keystone_admin)]# openstack image list
+--------------------------------------+---------------------+--------+
| ID                                   | Name                | Status |
+--------------------------------------+---------------------+--------+
| 7dbabbc7-0e54-4a3a-8936-d844ab1e151b | Cirros              | active |
| 9940658f-3ba2-4830-8355-7fa95116aca5 | Debian-12           | active |
| 0b3cec63-2549-4834-8be1-902a8260991c | Ubuntu-24.04        | active |
| f483321f-8470-43f2-9e6f-9ece12291997 | Windows-server-2022 | active |
+--------------------------------------+---------------------+--------+

You don’t need to perform these operations on your own, CloudSpinx Engineers are available to help you out. Drop us a message and we will respond ASAP.

LEAVE A REPLY

Please enter your comment!
Please enter your name here