# Hetzner-specific image role defaults — build server type, snapshot retention, ARM64 locations. { hetzner_image_role | default = { os_base | default = "debian-12", provider | default = "hetzner", template_name | default = "hetzner_build_image.j2", build_server_type | default = "cax11", location | default = "fsn1", state | default = 'keep, state_config | default = { freshness_days | default = 30, }, packages | default = [], labels | default = {}, hardware | default = { allowed_types | default = ["cax11", "cax21", "cax31"], min_memory_gb | default = 2, min_disk_gb | default = 20, network_required | default = true, ports_required | default = [], ssh_required | default = true, }, }, # x86_64 Debian base image with custom GPT partition layout. # Produces a snapshot with: sda1=bios_grub, sda2=root (~root_size_gb), sda3=data (remainder). # Use this role when deploying to server types larger than the builder (cx22); # the root partition stays small and extra disk is available for sda3 expansion. hetzner_base_image_role | default = { os_base | default = "debian-12", provider | default = "hetzner", template_name | default = "hetzner_base_image_build.j2", build_server_type | default = "cx22", location | default = "fsn1", state | default = 'keep, state_config | default = { freshness_days | default = 30, }, packages | default = [], labels | default = {}, partition_layout | default = { root_size_gb | default = 5, data_part | default = "ext4", # "ext4" | "unallocated" }, hardware | default = { allowed_types | default = ["cx22", "cx32", "cx42"], min_memory_gb | default = 2, min_disk_gb | default = 5, # root actual usage after debootstrap network_required | default = true, ports_required | default = [], ssh_required | default = true, }, }, }