azure-image-builder

Build Azure managed images and Azure Compute Gallery images using Packer's azure-arm builder.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "azure-image-builder" with this command: npx skills add hashicorp/agent-skills/hashicorp-agent-skills-azure-image-builder

Azure Image Builder

Build Azure managed images and Azure Compute Gallery images using Packer's azure-arm builder.

Reference: Azure ARM Builder

Note: Building Azure images incurs costs (compute, storage, data transfer). Builds typically take 15-45 minutes depending on provisioning and OS.

Basic Managed Image

packer { required_plugins { azure = { source = "github.com/hashicorp/azure" version = "~> 2.0" } } }

variable "client_id" { type = string sensitive = true }

variable "client_secret" { type = string sensitive = true }

variable "subscription_id" { type = string }

variable "tenant_id" { type = string }

variable "resource_group" { type = string default = "packer-images-rg" }

locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") }

source "azure-arm" "ubuntu" { client_id = var.client_id client_secret = var.client_secret subscription_id = var.subscription_id tenant_id = var.tenant_id

managed_image_resource_group_name = var.resource_group managed_image_name = "my-app-${local.timestamp}"

os_type = "Linux" image_publisher = "Canonical" image_offer = "0001-com-ubuntu-server-jammy" image_sku = "22_04-lts-gen2"

location = "East US" vm_size = "Standard_B2s"

azure_tags = { Name = "my-app" BuildDate = local.timestamp } }

build { sources = ["source.azure-arm.ubuntu"]

provisioner "shell" { inline = [ "sudo apt-get update", "sudo apt-get upgrade -y", ] } }

Azure Compute Gallery

source "azure-arm" "ubuntu" { client_id = var.client_id client_secret = var.client_secret subscription_id = var.subscription_id tenant_id = var.tenant_id

os_type = "Linux" image_publisher = "Canonical" image_offer = "0001-com-ubuntu-server-jammy" image_sku = "22_04-lts-gen2"

location = "East US" vm_size = "Standard_B2s"

shared_image_gallery_destination { resource_group = "gallery-rg" gallery_name = "myImageGallery" image_name = "ubuntu-webapp" image_version = "1.0.${formatdate("YYYYMMDD", timestamp())}" replication_regions = ["East US", "West US 2"] storage_account_type = "Standard_LRS" } }

Authentication

Service Principal

Create service principal

az ad sp create-for-rbac
--name "packer-sp"
--role Contributor
--scopes /subscriptions/<subscription-id>

Set environment variables

export ARM_CLIENT_ID="<client-id>" export ARM_CLIENT_SECRET="<client-secret>" export ARM_SUBSCRIPTION_ID="<subscription-id>" export ARM_TENANT_ID="<tenant-id>"

Managed Identity

source "azure-arm" "ubuntu" { use_azure_cli_auth = true subscription_id = var.subscription_id

... rest of configuration

}

Build Commands

Set authentication

export ARM_CLIENT_ID="your-client-id" export ARM_CLIENT_SECRET="your-client-secret" export ARM_SUBSCRIPTION_ID="your-subscription-id" export ARM_TENANT_ID="your-tenant-id"

Initialize plugins

packer init .

Validate template

packer validate .

Build image

packer build .

Common Issues

Authentication Failed

  • Verify service principal credentials

  • Ensure Contributor role on resource group

  • Check subscription and tenant IDs

Compute Gallery Version Exists

  • Image versions are immutable

  • Use unique version numbers with date/build number

  • Cannot overwrite existing versions

Timeout During Provisioning

  • Check network connectivity from build VM

  • Verify NSG rules allow required traffic

  • Increase timeout if needed

References

  • Azure ARM Builder

  • Azure Compute Gallery

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

terraform-style-guide

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

terraform-test

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

refactor-module

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

terraform-stacks

No summary provided by upstream source.

Repository SourceNeeds Review