Skip to content

[WIP] Draft proposal for new image tomls#16184

Draft
realsdx wants to merge 2 commits intotomls/base/mainfrom
sudipta/image-delivery-tomls-poc
Draft

[WIP] Draft proposal for new image tomls#16184
realsdx wants to merge 2 commits intotomls/base/mainfrom
sudipta/image-delivery-tomls-poc

Conversation

@realsdx
Copy link
Contributor

@realsdx realsdx commented Mar 13, 2026

This PR proposes extending Azure Linux image definitions with delivery metadata so they can be consumed by TEE.

As part of that, images.toml is changed to a thin include based registry and image definitions are moved into per-image *.image.toml files alongside their KIWI definitions. The new manifest shape introduces fields such as name, distro, delivery, and variants so image delivery mechanisms and constraints can be defined closer to the image itself.

Scope: Introduce image delivery definitions
* means this field is intentionally unresolved in the manifest and must be filled in by a later delivery, publish, or fulfillment step. The key is still declared here so downstream tooling knows the field exists and can provide or validate it.

Note: It has not been verified with azldev. Runtime support in azldev is still needed for the new image fields.

@realsdx realsdx force-pushed the sudipta/image-delivery-tomls-poc branch from 32b5986 to 4df7dfd Compare March 13, 2026 13:40
@@ -0,0 +1,4 @@
[images.container-base]
description = "Container Base Image"
distro = "azurelinux"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is distro identified here?

@@ -0,0 +1,29 @@
[images.vm-base]
description = "VM Base Image"
distro = "azurelinux"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto regarding distro as well.

version = "*"

[images.vm-base.delivery.vhd]
vhd_path = "*"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the * for? What does this mean?

[images.vm-base.delivery.vhd]
vhd_path = "*"

[images.vm-base.delivery.shared_gallery]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've also been working on drafting what publishing info looks like. Since these are going to need to look different across branches of the product, we're going to need to place that in the distro TOMLs.

Consider something like this:

[distros.azurelinux.versions.azl4-dev-stage1.outputs]
source-lookaside-caches = ["azl4-dev-lookaside-cache"]
package-repos = ["azl4-alpha1-rpms-base"]
image-stores = ["azl4-alpha1-acr", "azl4-alpha1-acg"]

[[resources.alpha1-acg]]
publish-labels = ["base-vm"]
interface-type = "azure-compute-gallery"
backend = "azure-compute-gallery"
resource-urn = "/subscriptions/e4ab81f8-030f-4593-a8f2-3ea2c7630a19/resourceGroups/azl-preview-publishing/providers/Microsoft.Compute/galleries/azlpubStagingGalleryoxz2o4gw"
images = [
    { name = "AzureLinuxAlpha1-x64", arch = "x86_64" },
    { name = "AzureLinuxAlpha1-arm64", arch = "aarch64" }
]

The image itself just needs to indicate that it should be published to any targets with the base-vm label.

What do you think?


[images.vm-base.variants]
architectures = [
"amd64",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor note: we should use x86_64 and aarch64 as the standard arch names.

"amd64",
"arm64",
]
hyperv_generations = [
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd expect gen1 and gen2 to be different kiwi image profiles. How would you anticipate this metadata be used? What's the reasons for/against the gen1 vs. gen2 images just being modeled as different images?

distro = "azurelinux"
definition = { type = "kiwi", path = "vm-base.kiwi" }

[images.vm-base.delivery.marketplace]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See below; for any publishing targets that need to be branch-differentiated/specific, the metadata needs to be split: some branch-specific distro metadata around publishing targets, and some per-artifact identification of which artifacts should be published.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants