Skip to content

Commit

Permalink
chore: add Windows Server 2k25 template
Browse files Browse the repository at this point in the history
The OS has medium and large flavor, server and highperformance workload.

Signed-off-by: Karel Simon <ksimon@redhat.com>
  • Loading branch information
ksimon1 committed Sep 20, 2024
1 parent cda2fdd commit 88a5084
Show file tree
Hide file tree
Showing 3 changed files with 236 additions and 0 deletions.
12 changes: 12 additions & 0 deletions generate-templates.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -374,3 +374,15 @@
- {flavor: large, workload: highperformance, memsize: "8Gi", cpus: 2, iothreads: True, emulatorthread: True, multiqueue: True, tablet: True, default: False}
vars:
osinfoname: win2k22

- name: Generate Windows server 2025 templates
template:
src: windows2k25.tpl.yaml
dest: "{{ playbook_dir }}/dist/templates/windows2k25-{{ item.workload }}-{{ item.flavor }}.yaml"
with_items:
- {flavor: medium, workload: server, memsize: "4Gi", cpus: 1, iothreads: False, emulatorthread: False, multiqueue: False, tablet: True, default: True}
- {flavor: medium, workload: highperformance, memsize: "4Gi", cpus: 1, iothreads: True, emulatorthread: True, multiqueue: True, tablet: True, default: False}
- {flavor: large, workload: server, memsize: "8Gi", cpus: 2, iothreads: False, emulatorthread: False, multiqueue: False, tablet: True, default: False}
- {flavor: large, workload: highperformance, memsize: "8Gi", cpus: 2, iothreads: True, emulatorthread: True, multiqueue: True, tablet: True, default: False}
vars:
osinfoname: win2k25
20 changes: 20 additions & 0 deletions osinfo-db-override/os/microsoft.com/win-2k25.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<libosinfo version="0.0.1">
<!-- Licensed under the GNU General Public License version 2 or later.
See http://www.gnu.org/licenses/ for a copy of the license text -->
<os id="http://microsoft.com/win/2k25">
<short-id>win2k25</short-id>
<name>Microsoft Windows Server 2025</name>
<vendor>Microsoft Corporation</vendor>
<family>winnt</family>
<distro>win</distro>
<resources arch="x86_64">
<minimum>
<cpu>1000000000</cpu>
<n-cpus>2</n-cpus>
<ram>4294967296</ram>
<storage>68719476736</storage>
</minimum>
</resources>
</os>
</libosinfo>
204 changes: 204 additions & 0 deletions templates/windows2k25.tpl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
apiVersion: template.openshift.io/v1
kind: Template
metadata:
name: windows2k25-{{ item.workload }}-{{ item.flavor }}
annotations:
openshift.io/display-name: "Microsoft Windows 2k25 VM"
description: >-
Template for Microsoft Windows 2k25 VM.
A PVC with the Windows disk image must be available.
tags: "hidden,kubevirt,virtualmachine,windows"
iconClass: "icon-windows"
openshift.io/provider-display-name: "KubeVirt"
openshift.io/documentation-url: "https://github.com/kubevirt/common-templates"
openshift.io/support-url: "https://github.com/kubevirt/common-templates/issues"
template.openshift.io/bindable: "false"
template.kubevirt.io/version: v1alpha1
defaults.template.kubevirt.io/disk: rootdisk
defaults.template.kubevirt.io/network: default
template.kubevirt.io/editable: |
/objects[0].spec.template.spec.domain.cpu.cores
/objects[0].spec.template.spec.domain.memory.guest
/objects[0].spec.template.spec.domain.devices.disks
/objects[0].spec.template.spec.volumes
/objects[0].spec.template.spec.networks
name.os.template.kubevirt.io/win2k25: {{ lookup('osinfo', osinfoname).name }}
labels:
os.template.kubevirt.io/win2k25: "true"
workload.template.kubevirt.io/{{ item.workload }}: "true"
flavor.template.kubevirt.io/{{ item.flavor }}: "true"
template.kubevirt.io/type: "base"
template.kubevirt.io/version: "{{ lookup('env', 'VERSION') | default('devel', true) }}"
{% if item.default %}
template.kubevirt.io/default-os-variant: "true"
{% endif %}
objects:
- apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: ${NAME}
labels:
vm.kubevirt.io/template: windows2k25-{{ item.workload }}-{{ item.flavor }}
vm.kubevirt.io/template.version: "{{ lookup('env', 'VERSION') | default('devel', true) }}"
vm.kubevirt.io/template.revision: "{{ lookup('env', 'REVISION') | default(1, true) }}"
app: ${NAME}
annotations:
vm.kubevirt.io/validations: |
[
{
"name": "minimal-required-memory",
"path": "jsonpath::.spec.domain.memory.guest",
"rule": "integer",
"message": "This VM requires more memory.",
"min": {{ lookup('osinfo', osinfoname)["minimum_resources.architecture=x86_64.ram"] }}
}, {
"name": "windows-virtio-bus",
"path": "jsonpath::.spec.domain.devices.disks[*].disk.bus",
"valid": "jsonpath::.spec.domain.devices.disks[*].disk.bus",
"rule": "enum",
"message": "virtio disk bus type has better performance, install virtio drivers in VM and change bus type",
"values": ["virtio"],
"justWarning": true
}, {
"name": "windows-disk-bus",
"path": "jsonpath::.spec.domain.devices.disks[*].disk.bus",
"valid": "jsonpath::.spec.domain.devices.disks[*].disk.bus",
"rule": "enum",
"message": "disk bus has to be either virtio or sata or scsi",
"values": ["virtio", "sata", "scsi"]
}, {
"name": "windows-cd-bus",
"path": "jsonpath::.spec.domain.devices.disks[*].cdrom.bus",
"valid": "jsonpath::.spec.domain.devices.disks[*].cdrom.bus",
"rule": "enum",
"message": "cd bus has to be sata",
"values": ["sata"]
}, {
"name": "minimal-required-cores",
"path": "jsonpath::.spec.domain.cpu.cores",
"rule": "integer",
"message": "This VM requires more cores.",
"min": 2
}
]
spec:
dataVolumeTemplates:
- apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: ${NAME}
spec:
storage:
resources:
requests:
storage: 64Gi
sourceRef:
kind: DataSource
name: ${DATA_SOURCE_NAME}
namespace: ${DATA_SOURCE_NAMESPACE}
runStrategy: Halted
template:
metadata:
annotations:
vm.kubevirt.io/os: "windows2k25"
vm.kubevirt.io/workload: "{{ item.workload }}"
vm.kubevirt.io/flavor: "{{ item.flavor }}"
labels:
kubevirt.io/domain: ${NAME}
kubevirt.io/size: {{ item.flavor }}
spec:
architecture: amd64
domain:
clock:
utc: {}
timer:
hpet:
present: false
pit:
tickPolicy: delay
rtc:
tickPolicy: catchup
hyperv: {}
cpu:
sockets: {{ item.cpus }}
cores: 2
threads: 1
{% if item.iothreads or item.emulatorthread %}
dedicatedCpuPlacement: True
{% endif %}
{% if item.emulatorthread %}
isolateEmulatorThread: True
{% endif %}
memory:
guest: {{ item.memsize }}
features:
acpi: {}
apic: {}
smm: {}
hyperv:
relaxed: {}
vapic: {}
vpindex: {}
spinlocks:
spinlocks: 8191
synic: {}
synictimer:
direct: {}
tlbflush: {}
frequencies: {}
reenlightenment: {}
ipi: {}
runtime: {}
reset: {}
firmware:
bootloader:
efi:
secureBoot: true
persistent: true
devices:
{% if item.multiqueue and item.cpus > 1 %}
networkInterfaceMultiqueue: True
{% endif %}
disks:
- disk:
{% if item.workload == "highperformance" %}
bus: virtio
{% else %}
bus: sata
{% endif %}
name: rootdisk
interfaces:
- masquerade: {}
{% if item.multiqueue %}
model: virtio
{% else %}
model: e1000e
{% endif %}
name: default
{% if item.tablet %}
inputs:
- type: tablet
bus: usb
name: tablet
{% endif %}
tpm:
persistent: true
terminationGracePeriodSeconds: 3600
volumes:
- dataVolume:
name: ${NAME}
name: rootdisk
networks:
- name: default
pod: {}
parameters:
- name: NAME
description: VM name
generate: expression
from: "windows2k25-[a-z0-9]{6}"
- name: DATA_SOURCE_NAME
description: Name of the DataSource to clone
value: win2k25
- name: DATA_SOURCE_NAMESPACE
description: Namespace of the DataSource
value: kubevirt-os-images

0 comments on commit 88a5084

Please sign in to comment.