Azure Image Builder
HashiCorpOfficialPublished by HashiCorp
- Skill
- Tool integration
- Cloud and DevOps
- MPL-2.0
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a guide and configuration patterns for using Packer's azure-arm builder to create custom images for Azure. It covers the setup for both standard managed images and Azure Compute Gallery images, including authentication methods like service principals and managed identities, as well as common troubleshooting steps for image builds.
What it does
- Configures Packer templates for Azure managed images
- Defines settings for deploying images to the Azure Compute Gallery
- Provides authentication patterns using service principals or managed identities
- Includes HCL examples for defining OS types, VM sizes, and image locations
- Outlines essential CLI commands for initializing, validating, and building images
- Offers troubleshooting guidance for common authentication and provisioning errors
When to use it
- When you need to automate the creation of standardized, pre-configured VM images for Azure
- When managing custom image versions across multiple Azure regions via the Compute Gallery
- When integrating image creation into a CI/CD pipeline for infrastructure deployment
- When you need to apply security updates or custom software configurations to base OS images
Advantages
- Enables infrastructure-as-code practices for virtual machine image management
- Supports automated replication of images across different Azure regions
- Reduces manual configuration time by automating OS updates and software installation
- Ensures consistency across deployed virtual machine environments
Usage examples
- “How do I configure a Packer template to build a custom Ubuntu image in Azure?”
- The agent provides a HCL template using the azure-arm builder, showing how to specify the source image, VM size, and shell provisioners for updates.
- “What is the process for publishing a custom image to the Azure Compute Gallery?”
- The agent explains how to add the shared_image_gallery_destination block to your Packer configuration to define the gallery, image name, and replication regions.
- “How can I authenticate Packer to Azure using a service principal?”
- The agent provides the CLI commands to create a service principal with the Contributor role and the environment variables required for Packer authentication.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/hashicorp/azure-image-builder/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-image-builder.zip -d .agents/skills
Documentation by HashiCorp
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
Files
- ATTRIBUTION.mdAdded by AutoGineer903 B
- LICENSELicence file added by AutoGineer16.3 KiB
- SKILL.md4.1 KiB
ATTRIBUTION.md
Attribution
This folder is an unmodified copy of the Agent Skill "azure-image-builder", distributed by AutoGineer (https://autogineer.com/agent-skills).
Commit: 5e30fa5c867ba6777c37e4206babfd08049c396f
Published by: HashiCorp (https://github.com/hashicorp)
Publisher: HashiCorp (https://github.com/hashicorp)
Licence: Mozilla Public License 2.0 (https://github.com/hashicorp/agent-skills/blob/5e30fa5c867ba6777c37e4206babfd08049c396f/LICENSE)
Licence evidence: repository licence LICENSE
Retrieved: 2026-11-07
The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.
Files added by AutoGineer
ATTRIBUTION.md: this file, written by AutoGineer
LICENSE: copied from LICENSE
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs a command-line tool
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- HashiCorp
- Publisher
- HashiCorp (Official)
- Source
- hashicorp/agent-skills · plugins/packer/skills/azure-image-builder · commit 5e30fa5
- Licence
- Mozilla Public License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by HashiCorp.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-image-builder.zip