Ubuntu 24.04

OpenStack Flamingo : Create Instances (Windows)2025/11/20

 

Create and Start Virtual Machine Instance that Windows is installed.

[1] Create Windows image on a Compute Node and add it to Glance.
For example on here, it creates Windows Server 2022 image.
Download Windows Server 2022 installation ISO beforehand.
# download VirtIO driver for Windows

root@dlp ~(keystone)#
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O /home/virtio-win.iso
# install Windows

root@dlp ~(keystone)# virt-install \
--name Win2k22 \
--ram 6144 \
--disk path=/var/lib/libvirt/images/Win2k22.img,size=40,bus=virtio \
--disk path=/home/virtio-win.iso,device=cdrom \
--vcpus 4 \
--os-variant win2k22 \
--network default,model=virtio \
--graphics vnc,listen=0.0.0.0,password=password \
--video vga \
--cdrom /home/Win2022_EN-US_20348.169.210806-2348.fe.iso 


# if enable secure boot, specify like follows

root@dlp ~(keystone)# virt-install \
--name Win2k22 \
--ram 6144 \
--disk path=/var/lib/libvirt/images/Win2k22.img,size=40,bus=virtio \
--disk path=/home/virtio-win.iso,device=cdrom \
--cpu host-passthrough \
--vcpus=4 \
--os-variant win2k22 \
--network default,model=virtio \
--graphics vnc,listen=0.0.0.0,password=password \
--video virtio \
--cdrom /home/Win2022_EN-US_20348.169.210806-2348.fe.iso \
--features kvm_hidden=on,smm=on \
--boot loader=/usr/share/OVMF/OVMF_CODE_4M.secboot.fd,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/OVMF/OVMF_VARS_4M.fd 
[2] During the installation, load VirtIO driver to detect disks.
Click the [Load driver] link.
[3] Specify a folder under the [virtio-win.iso].
For the case of x64 System, specify the folder [amd64] - [2k22].
After that, proceed installation steps with common procedure.
[4] After finishing installation, logon to the Windows and apply VirtIO driver to the network device.
For others, if you need, apply VirtIO driver to display device and PCI device.
[5] Run PowerShell with admin privilege and change ExecutionPolicy to Unrestricted.
PS > Set-ExecutionPolicy Unrestricted
[6] Download and Install CloudbaseInit.
PS > curl.exe -L https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi -o cloudbaseinit.msi
PS > ./cloudbaseinit.msi
[7] Check boxes all to shutdown Windows after running Sysprep and Click the [Finish] button.
[8] Add Windows image to Glance.
root@dlp ~(keystone)#
openstack image create "Win2k22" --file /var/lib/libvirt/images/Win2k22.img --disk-format qcow2 --container-format bare --public
# if you installed Windows with secure boot, add properties like follows

root@dlp ~(keystone)#
openstack image create "Win2k22" --file /var/lib/libvirt/images/Win2k22.img --disk-format qcow2 --container-format bare --public \
--property hw_firmware_type=uefi --property hw_machine_type=q35 --property os_secure_boot=optional

[9] Create Windows instance with an Openstack user.
ubuntu@dlp ~(keystone)$
openstack flavor list

+----+-----------+-------+------+-----------+-------+-----------+
| ID | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+-------+------+-----------+-------+-----------+
| 1  | m1.tiny   |  2048 |   10 |         0 |     1 | True      |
| 2  | m1.small  |  4096 |   10 |         0 |     2 | True      |
| 3  | m1.medium |  8192 |   10 |         0 |     4 | True      |
| 4  | m1.large  | 16384 |   10 |         0 |     8 | True      |
| 5  | m2.medium |  8192 |   10 |        10 |     4 | True      |
| 6  | m3.medium |  8192 |   50 |         0 |     4 | True      |
+----+-----------+-------+------+-----------+-------+-----------+

ubuntu@dlp ~(keystone)$
openstack image list

+--------------------------------------+------------+--------+
| ID                                   | Name       | Status |
+--------------------------------------+------------+--------+
| c8be4fc8-a3f7-4859-9ae7-8b3843baa619 | Ubuntu2404 | active |
| 3e2d2dfb-88c0-46a5-8d17-3fa116bd56bd | Win2k22    | active |
+--------------------------------------+------------+--------+

ubuntu@dlp ~(keystone)$
openstack security group list

+---------------+------------+---------------+-----------------+------+--------+
| ID            | Name       | Description   | Project         | Tags | Shared |
+---------------+------------+---------------+-----------------+------+--------+
| 9a3074bf-     | default    | Default       | b45ce8ac12c749e | []   | False  |
| 6ba2-4185-    |            | security      | 49e933c84334e79 |      |        |
| 9b16-         |            | group         | de              |      |        |
| fccf852218a0  |            |               |                 |      |        |
| fa4b5619-     | secgroup01 | secgroup01    | b45ce8ac12c749e | []   | False  |
| af27-46a2-    |            |               | 49e933c84334e79 |      |        |
| 97f2-         |            |               | de              |      |        |
| 43b67bc91070  |            |               |                 |      |        |
+---------------+------------+---------------+-----------------+------+--------+

ubuntu@dlp ~(keystone)$
openstack network list

+--------------------------------+------------+--------------------------------+
| ID                             | Name       | Subnets                        |
+--------------------------------+------------+--------------------------------+
| 1a0fa146-6b84-4570-8c02-       | sharednet1 | 80702b4b-1830-4c5b-bc9b-       |
| 30b980c402e8                   |            | 77378f4b16ef                   |
+--------------------------------+------------+--------------------------------+

ubuntu@dlp ~(keystone)$
netID=$(openstack network list | grep sharednet1 | awk '{ print $2 }')
# [admin_pass=***] : set any Administrator password

ubuntu@dlp ~(keystone)$
openstack server create --flavor m3.medium --image Win2k22 --security-group secgroup01 --nic net-id=$netID --property admin_pass="P@ssw0rd01" Windows-2022
ubuntu@dlp ~(keystone)$
openstack server list

+-------------+-------------+---------+---------------+------------+-----------+
| ID          | Name        | Status  | Networks      | Image      | Flavor    |
+-------------+-------------+---------+---------------+------------+-----------+
| dfa4ed6c-   | Windows-    | ACTIVE  | sharednet1=10 | Win2k22    | m3.medium |
| dd7e-41c5-  | 2022        |         | .0.0.249      |            |           |
| 85ea-       |             |         |               |            |           |
| 068f7853a57 |             |         |               |            |           |
| f           |             |         |               |            |           |
| 66db9dc2-   | Ubuntu-2404 | SHUTOFF | sharednet1=10 | Ubuntu2404 | m1.small  |
| 0001-4e71-  |             |         | .0.0.233      |            |           |
| 807d-       |             |         |               |            |           |
| 1b55d353a90 |             |         |               |            |           |
| c           |             |         |               |            |           |
+-------------+-------------+---------+---------------+------------+-----------+

ubuntu@dlp ~(keystone)$
openstack console url show Windows-2022

+----------+-------------------------------------------------------------------+
| Field    | Value                                                             |
+----------+-------------------------------------------------------------------+
| protocol | vnc                                                               |
| type     | novnc                                                             |
| url      | https://dlp.srv.world:6080/vnc_auto.html?path=%3Ftoken%3D466581bc |
|          | -3850-458f-b5a2-400513b679a7                                      |
+----------+-------------------------------------------------------------------+
[10] It needs to change admin password when initial logon.
The current password is the one you set on [openstack server create] command.
[11] That's OK if you logon successfully after changing password.
Matched Content