diff --git a/README.md b/README.md index f1c64fe6..dabc26f9 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ Go from a [bootc](https://containers.github.io/bootc/) compatible derived contai * `raw`: RAW disk image an MBR or GPT partition table * `anaconda-iso`: Unattended installation method (USB sticks / install-on-boot) * `vmdk`: Usable in vSphere +* `vhd`: Virtual Hard Disk The list above is what is supported by the underlying `bootc-image-builder` technology. The list can [be found here](https://github.com/osbuild/bootc-image-builder?tab=readme-ov-file#-image-types). diff --git a/docs/vm_guide.md b/docs/vm_guide.md index 92e83c0b..4b0d9f88 100644 --- a/docs/vm_guide.md +++ b/docs/vm_guide.md @@ -13,6 +13,7 @@ There are **many** solutions to deploy a virtual machine image and this document * `anaconda-iso`: BalenaEtcher is recommended for writing unattended ISO installer files to storage devices to create bootable media. It's user-friendly and cross-platform. [Download balenaEtcher](https://www.balena.io/etcher/). * `vmdk`: VMware Workstation and VMware ESXi are two prominent platforms that support the VMDK format. They provide comprehensive tools for running and managing virtual machines. [VMware Workstation](https://www.vmware.com/products/workstation-pro.html), [VMware ESXi](https://www.vmware.com/products/esxi-and-esx.html). * `ami`: Amazon EC2 uses the AMI format to launch new virtual servers. You can manage AMIs using Amazon's own tools like AWS Management Console. [Amazon EC2](https://aws.amazon.com/ec2/). +* `vhd`: Usable on multiple applications such as Microsoft Hyper-V and Azure. ## Recommended Development & Testing diff --git a/packages/backend/src/build-disk-image.ts b/packages/backend/src/build-disk-image.ts index 637f382c..1a991b35 100644 --- a/packages/backend/src/build-disk-image.ts +++ b/packages/backend/src/build-disk-image.ts @@ -43,6 +43,8 @@ export async function buildExists(folder: string, types: BuildType[]) { imageName = 'vmdk/disk.vmdk'; } else if (type === 'anaconda-iso') { imageName = 'bootiso/disk.iso'; + } else if (type === 'vhd') { + imageName = 'vpc/disk.vhd'; } const imagePath = resolve(folder, imageName); diff --git a/packages/frontend/src/Build.svelte b/packages/frontend/src/Build.svelte index d58eea71..705ae2a3 100644 --- a/packages/frontend/src/Build.svelte +++ b/packages/frontend/src/Build.svelte @@ -558,6 +558,12 @@ export function goToHomePage(): void { on:click={e => updateBuildType('ami', e.detail)}> Amazon Machine Image (*.ami) + updateBuildType('vhd', e.detail)}> + Virtual Hard Disk (*.vhd) +
diff --git a/packages/shared/src/models/bootc.ts b/packages/shared/src/models/bootc.ts index 12d11d1e..55b3fb24 100644 --- a/packages/shared/src/models/bootc.ts +++ b/packages/shared/src/models/bootc.ts @@ -16,7 +16,7 @@ * SPDX-License-Identifier: Apache-2.0 ***********************************************************************/ -export type BuildType = 'qcow2' | 'ami' | 'raw' | 'vmdk' | 'anaconda-iso'; +export type BuildType = 'qcow2' | 'ami' | 'raw' | 'vmdk' | 'anaconda-iso' | 'vhd'; export interface BootcBuildInfo { id: string; diff --git a/tests/playwright/src/bootc-extension.spec.ts b/tests/playwright/src/bootc-extension.spec.ts index c7a73a79..34905c02 100644 --- a/tests/playwright/src/bootc-extension.spec.ts +++ b/tests/playwright/src/bootc-extension.spec.ts @@ -125,7 +125,7 @@ test.describe('BootC Extension', () => { imageBuildFailed = false; }); - const types = ['QCOW2', 'AMI', 'RAW', 'VMDK', 'ISO']; + const types = ['QCOW2', 'AMI', 'RAW', 'VMDK', 'ISO', 'VHD']; for (const type of types) { test.describe.serial('Building images ', () => {