Skip to content

Feature: azure ​

Description ​

A platform feature that builds a Garden Linux image for Microsoft Azure. Artifacts are delivered as .raw and .vhd files.

What it does ​

Installs cloud-init and azure-vm-utils for instance initialization on Azure and configures platform-specific settings:

  • Time synchronization: uses chrony (instead of systemd-timesyncd, which is excluded) synchronized to the Hyper-V PTP clock device.
  • Cloud-init: removes growpart, resizefs, and ntp modules (partition growth is handled in the initramfs; NTP is managed by chrony).
  • Kernel command line: sets console and NVMe timeout parameters for the Azure environment.
  • NVMe: includes NVMe modules in the initramfs via a dracut drop-in.
  • Network: marks Azure-managed network devices as unmanaged so that systemd-networkd does not interfere with them.
  • Image conversion: convert.vhd produces a fixed-size .vhd image for Azure.

Files ​

Files present in this feature and their purpose. See the feature file reference for the semantics of each file type.

FilePurpose
convert.vhd (ref)Converts the .raw artifact to a fixed-size .vhd image for Azure import.
exec.config (ref)Strips growpart, resizefs, and ntp modules from cloud-init configuration and disables cloud-init network management.
file.exclude (ref)Removes the systemd-timesyncd override and the udf module blacklist from the rootfs.
file.include.markers.yaml (ref)Maps files to test-coverage marker IDs.
info.yaml (ref)Declares type: platform and included/excluded features.
pkg.exclude (ref)Prevents installation of systemd-timesyncd (replaced by chrony).
pkg.include (ref)Installs chrony, cloud-init, azure-vm-utils, python3-passlib, and python3-cffi-backend.
file.include/etc/chrony/chrony.conf (file.include)Configures chrony to use the Hyper-V PTP clock device (/dev/ptp_hyperv) as the primary time source.
file.include/etc/cloud/cloud.cfg.d/01_debian-cloud.cfg (file.include)Debian-specific cloud-init configuration baseline.
file.include/etc/dracut.conf.d/67-azure-nvme-modules.conf (file.include)Includes Azure NVMe kernel modules in the initramfs.
file.include/etc/kernel/cmdline.d/10-console.cfg (file.include)Sets the kernel console parameter for the Azure serial console.
file.include/etc/kernel/cmdline.d/45-nvme-timeout.cfg (file.include)Sets NVMe I/O timeout parameters for Azure storage.
file.include/etc/systemd/99-azure-unmanaged-devices.network (file.include)Marks Azure-internal network interfaces as unmanaged by systemd-networkd.
file.include/etc/systemd/system/chronyd.service.d/10-after_dev-ptp_hyperv.device.conf (file.include)Orders chronyd to start after the Hyper-V PTP device is available.
file.include/etc/systemd/system-preset/00-chrony-disable.preset (file.include)Disables chronyd by default so it is only activated when the PTP device is present.
file.include/etc/udev/rules.d/60-hyperv-ptp.rules (file.include)Creates a stable /dev/ptp_hyperv symlink when the Hyper-V PTP device appears.
file.include/etc/udev/rules.d/66-azure-storage.rules (file.include)Sets Azure storage device attributes via udev.
file.include/etc/udev/rules.d/99-azure-product-uuid.rules (file.include)Makes the Azure product UUID available as a udev property for cloud-init.

Includes:

  • cloud — provides common cloud-init integration and base cloud configuration shared across cloud platforms.

Further reading ​