There's a packer script called ubuntu2204.pkr.hcl in this repo
It accepts the following parameter:
variable "azure_tags" {
type = map(string)
default = {}
}
I've been trying to call this from a PowerShell script as below:
$azureTags = @{
BusinessUnit = "IDS"
Environment = "Production"
}
packer build -var "capture_name_prefix=$ResourcesNamePrefix" `
-var "client_id=$ClientId" `
-var "client_secret=$ClientSecret" `
-var "install_password=$InstallPassword" `
-var "location=$Location" `
-var "resource_group=$ResourceGroup" `
-var "storage_account=$StorageAccount" `
-var "subscription_id=$SubscriptionId" `
-var "temp_resource_group_name=$TempResourceGroupName" `
-var "tenant_id=$TenantId" `
-var "virtual_network_name=$VirtualNetworkName" `
-var "virtual_network_resource_group_name=$VirtualNetworkRG" `
-var "virtual_network_subnet_name=$VirtualNetworkSubnet" `
-var "run_validation_diskspace=$env:RUN_VALIDATION_FLAG" `
-var "azure_tags=$($azureTags | ConvertTo-Json -Compress)" `
-color=false `
$TemplatePath
This is giving the following error:
Build ubuntu2204 VM Error: Variables not allowed on value for var.azure_tags from arguments line 1:
I'm new to packer, anyone see what I've got wrong?
I think that has something to do with the quotes of the serialized json.
This worked for me with packer 1.9.2
.
Given this file file.pkr.hcl
:
variable "azure_tags" {
type = map(string)
default = {}
}
$azureTags = @{
BusinessUnit = "IDS"
Environment = "Production"
}
$tags=$($azureTags | ConvertTo-Json -Compress)
packer console -var "azure_tags=$($tags -replace '([\\]*)"', '$1$1\"')" .\file.pkr.hcl
>
> var.azure_tags
{
"BusinessUnit" = "IDS"
"Environment" = "Production"
}