azure-image-builder

Build Azure managed images and Azure Compute Gallery images with Packer. Use when creating custom images for Azure VMs.

INSTALLATION
npx skills add https://github.com/hashicorp/agent-skills --skill azure-image-builder
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$27

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 .

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card