Ubuntu 22.04
Sponsored Link

OpenStack Zed : Add Windows instance image2023/01/31

 
Add Windows instance image to Glance.
This example is based on the Openstack System like follows.
------------+-----------------------------+-----------------------------+------------
            |                             |                             |
        eth0|10.0.0.30                eth0|10.0.0.50                eth0|10.0.0.51
+-----------+-----------+     +-----------+-----------+     +-----------+-----------+
|   [ dlp.srv.world ]   |     | [ network.srv.world ] |     |  [ node01.srv.world ] |
|     (Control Node)    |     |     (Network Node)    |     |     (Compute Node)    |
|                       |     |                       |     |                       |
|  MariaDB    RabbitMQ  |     |      Open vSwitch     |     |        Libvirt        |
|  Memcached  Nginx     |     |     Neutron Server    |     |      Nova Compute     |
|  Keystone   httpd     |     |      OVN-Northd       |     |      Open vSwitch     |
|  Glance     Nova API  |     |  Nginx  iSCSI Target  |     |   OVN Metadata Agent  |
|  Cinder API           |     |     Cinder Volume     |     |     OVN-Controller    |
+-----------------------+     +-----------------------+     +-----------------------+

[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@node01:~#
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O /home/virtio-win.iso
# install Windows

root@node01:~# virt-install \
--name Win2k22 \
--ram 6144 \
--disk path=/var/kvm/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@node01:~# virt-install \
--name Win2k22 \
--ram 6144 \
--disk path=/var/kvm/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.secboot.fd,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/OVMF/OVMF_VARS.ms.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.
[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@node01:~#
openstack image create "Win2k22" --file /var/kvm/images/Win2k22.img --disk-format qcow2 --container-format bare --public
# if you installed Windows with secure boot, add properties like follows

root@node01:~#
openstack image create "Win2k22" --file /var/kvm/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 |
+----+-----------+------+------+-----------+-------+-----------+
| 0  | m1.small  | 2048 |   10 |         0 |     1 | True      |
| 1  | m1.medium | 8192 |   45 |         0 |     4 | True      |
+----+-----------+------+------+-----------+-------+-----------+

ubuntu@dlp ~(keystone)$
openstack image list

+--------------------------------------+------------+--------+
| ID                                   | Name       | Status |
+--------------------------------------+------------+--------+
| 126bc335-fc00-478d-b84a-a9e79eba2574 | Ubuntu2204 | active |
| f374ad82-8e44-40bf-a93f-b332dd67cc67 | Win2k22    | active |
+--------------------------------------+------------+--------+

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

+--------------------------------------+------------+------------------------+----------------------------------+------+
| ID                                   | Name       | Description            | Project                          | Tags |
+--------------------------------------+------------+------------------------+----------------------------------+------+
| 64ab1a43-1de2-4cf6-a0b3-5e4c8b64aeb0 | default    | Default security group | 4dd1e1f6bac441ff9c77002c3ab4c58a | []   |
| 8757368a-e07f-494f-9fc3-f3c19d79d1d9 | secgroup01 | secgroup01             | 4dd1e1f6bac441ff9c77002c3ab4c58a | []   |
+--------------------------------------+------------+------------------------+----------------------------------+------+

ubuntu@dlp ~(keystone)$
openstack network list

+--------------------------------------+---------+--------------------------------------+
| ID                                   | Name    | Subnets                              |
+--------------------------------------+---------+--------------------------------------+
| 394ec727-7e9a-473e-8068-45aa841a9ac2 | public  | ea6cb6cb-74ed-4007-bd25-b3fb84111e84 |
| 7336a271-bec9-4d33-8dc5-e9f3a9892ed7 | private | a454cf3e-fef5-46f6-8468-4a26cbd14983 |
+--------------------------------------+---------+--------------------------------------+

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

ubuntu@dlp ~(keystone)$
openstack server create --flavor m1.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    |
+--------------------------------------+--------------+--------+------------------------+---------+-----------+
| 6df16866-7c4f-45d7-99d7-b06622fbbf47 | Windows-2022 | ACTIVE | private=192.168.100.31 | Win2k22 | m1.medium |
+--------------------------------------+--------------+--------+------------------------+---------+-----------+

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%3D1011c36d-30cd-4931-ae07-aa06a47f74d7 |
+----------+-----------------------------------------------------------------------------------------------+
[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.
  * follow is the instance with enabling secure boot
Matched Content