Dela via


Skapa en JSON-mall för Azure Image Builder Bicep eller ARM-mall

Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar

Azure Image Builder använder en Bicep-fil eller en JSON-mallfil för ARM-mallar för att skicka information till Image Builder-tjänsten. I den här artikeln går vi över avsnitten i filerna, så att du kan skapa dina egna. De senaste API-versionerna finns i mallreferens. Om du vill se exempel på fullständiga .json filer kan du läsa Azure Image Builder GitHub.

Det grundläggande formatet är:

{
  "type": "Microsoft.VirtualMachineImages/imageTemplates",
  "location": "<region>",
  "tags": {
    "<name>": "<value>",
    "<name>": "<value>"
  },
  "identity": {},
  "properties": {
    "buildTimeoutInMinutes": <minutes>,
    "customize": [],
    "errorHandling":[],
    "distribute": [],
    "optimize": [],
    "source": {},
    "stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>",
    "validate": {},
    "vmProfile": {
      "vmSize": "<vmSize>",
      "osDiskSizeGB": <sizeInGB>,
      "vnetConfig": {
        "subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName1>",
        "containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
        "proxyVmSize": "<vmSize>"
      },
      "userAssignedIdentities": [
              "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName1>",
        "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName2>",
        "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName3>",
        ...
      ]
    }
  }
}

API-version

API-versionen ändras med tiden när API:et ändras. Se Nyheter i Azure VM Image Builder för alla större API-ändringar och funktionsuppdateringar för Azure VM Image Builder-tjänsten.

Typ

type är resurstypen, som måste vara Microsoft.VirtualMachineImages/imageTemplates.

"type": "Microsoft.VirtualMachineImages/imageTemplates",

Plats

Platsen är den region där den anpassade avbildningen skapas. Följande regioner stöds:

  • East US
  • USA, östra 2
  • Västra centrala USA
  • USA, västra
  • USA, västra 2
  • USA, västra 3
  • USA, södra centrala
  • Europa, norra
  • Europa, västra
  • Sydostasien
  • Sydöstra Australien
  • Australien, östra
  • Storbritannien, södra
  • Storbritannien, västra
  • Brasilien, södra
  • Kanada, centrala
  • Indien, centrala
  • Central US
  • Frankrike, centrala
  • Tyskland, västra centrala
  • Japan, östra
  • USA, norra centrala
  • Norge, östra
  • Schweiz, norra
  • Jio Västra Indien
  • Förenade Arabemiraten, norra
  • Asien, östra
  • Sydkorea, centrala
  • Sydafrika, norra
  • Qatar, centrala
  • USGov Arizona (offentlig förhandsversion)
  • USGov Virginia (offentlig förhandsversion)
  • Kina, norra 3 (offentlig förhandsversion)
  • Sverige, centrala
  • Polen, centrala
  • Italien, norra
  • Israel, centrala

Viktigt!

Registrera funktionen Microsoft.VirtualMachineImages/FairfaxPublicPreview för att få åtkomst till den offentliga förhandsversionen av Azure Image Builder i Azure Government-regioner (USGov Arizona och USGov Virginia).

Viktigt!

Registrera funktionen Microsoft.VirtualMachineImages/MooncakePublicPreview för att få åtkomst till den offentliga förhandsversionen av Azure Image Builder i regionen Kina, norra 3.

För att få åtkomst till den offentliga förhandsversionen av Azure VM Image Builder i Azure Government-regionerna (USGov Arizona och USGov Virginia) måste du registrera funktionen Microsoft.VirtualMachineImages/FairfaxPublicPreview . Det gör du genom att köra följande kommando i PowerShell eller Azure CLI:

Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name FairfaxPublicPreview

För att få åtkomst till den offentliga förhandsversionen av Azure VM Image Builder i regionen Kina, norra 3 måste du registrera funktionen Microsoft.VirtualMachineImages/MooncakePublicPreview . Det gör du genom att köra följande kommando i PowerShell eller Azure CLI:

Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name MooncakePublicPreview
"location": "<region>"

Dataresidens

Azure VM Image Builder-tjänsten lagrar eller bearbetar inte kunddata utanför regioner som har strikta krav på datahemvist för en enda region när en kund begär en version i den regionen. Om ett tjänststopp för regioner som har krav på datahemvist måste du skapa Bicep-filer/mallar i en annan region och ett annat geografiskt område.

Zonredundans

Distribution stöder zonredundans, virtuella hårddiskar distribueras som standard till ett ZRS-konto (Zone Redundant Storage) och Azure Compute Gallery-versionen (tidigare kallat Delat bildgalleri) stöder en ZRS-lagringstyp om den anges.

Taggar

Taggar är nyckel/värde-par som du kan ange för den avbildning som genereras.

Identitet

Det finns två sätt att lägga till användartilldelade identiteter som beskrivs nedan.

Användartilldelad identitet för Azure Image Builder-avbildningsmallresurs

Krävs – För att Image Builder ska ha behörighet att läsa/skriva bilder och läsa i skript från Azure Storage måste du skapa en användartilldelad Identitet i Azure som har behörighet till de enskilda resurserna. Mer information om hur Image Builder-behörigheter fungerar och relevanta steg finns i Skapa en avbildning och använda en användartilldelad hanterad identitet för att komma åt filer i ett Azure Storage-konto.

"identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
        "<imgBuilderId>": {}
    }
}

Image Builder-tjänsten Användartilldelad identitet:

  • Stöder endast en enda identitet.
  • Stöder inte anpassade domännamn.

Mer information finns i Vad är hanterade identiteter för Azure-resurser?. Mer information om hur du distribuerar den här funktionen finns i Konfigurera hanterade identiteter för Azure-resurser på en virtuell Azure-dator med Azure CLI.

Användartilldelad identitet för den virtuella image builder-datorn

Den här egenskapen är endast tillgänglig i API-versioner 2021-10-01 eller senare.

Valfritt – Den virtuella image builder-dator som skapas av image builder-tjänsten i din prenumeration används för att skapa och anpassa avbildningen. För att den virtuella image builder-datorn ska ha behörighet att autentisera med andra tjänster som Azure Key Vault i din prenumeration måste du skapa en eller flera azure-användartilldelade identiteter som har behörighet till de enskilda resurserna. Azure Image Builder kan sedan associera dessa användartilldelade identiteter med den virtuella datorn Build. Anpassningsskript som körs i den virtuella datorn Build kan sedan hämta token för dessa identiteter och interagera med andra Azure-resurser efter behov. Tänk på att den användartilldelade identiteten för Azure Image Builder måste ha rolltilldelningen "Hanterad identitetsoperatör" på alla användartilldelade identiteter för Att Azure Image Builder ska kunna associera dem med den virtuella byggdatorn.

Kommentar

Tänk på att flera identiteter kan anges för den virtuella image builder-datorn, inklusive den identitet som du skapade för resursen för avbildningsmallen. Som standard läggs inte den identitet som du skapade för resursen för avbildningsmallen automatiskt till på den virtuella byggdatorn.

"properties": {
  "vmProfile": {
    "userAssignedIdentities": [
      "/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>"
    ]
  }
}

Användartilldelad identitet för Image Builder Build VM:

  • Stöder en lista över en eller flera användartilldelade hanterade identiteter som ska konfigureras på den virtuella datorn.
  • Stöder scenarier mellan prenumerationer (identitet som skapas i en prenumeration medan avbildningsmallen skapas i en annan prenumeration under samma klient).
  • Stöder inte scenarier mellan klientorganisationer (identitet som skapas i en klient medan avbildningsmallen skapas i en annan klientorganisation).

Mer information finns i:

Egenskaper: buildTimeoutInMinutes

Maximal väntetid när du skapar avbildningsmallen (omfattar alla anpassningar, valideringar och distributioner).

Om du inte anger egenskapen eller anger värdet till 0 används standardvärdet, vilket är 240 minuter eller fyra timmar. Det minsta värdet är 6 minuter och det maximala värdet är 960 minuter eller 16 timmar. När tidsgränsvärdet uppnås (oavsett om avbildningsversionen är klar eller inte) visas ett fel som liknar:

[ERROR] Failed while waiting for packerizer: Timeout waiting for microservice to
[ERROR] complete: 'context deadline exceeded'

För Windows rekommenderar vi inte att du ställer in buildTimeoutInMinutes under 60 minuter. Om du upptäcker att du når tidsgränsen granskar du loggarna för att se om anpassningssteget väntar på något som liknar användarindata. Om du upptäcker att du behöver mer tid för att slutföra anpassningar kan du öka buildTimeoutInMinutes värdet. Men ställ inte in den för hög eftersom du kanske måste vänta tills tidsgränsen överskrids innan ett fel visas.

Egenskaper: anpassa

Image Builder stöder flera "anpassningar", som är funktioner som används för att anpassa avbildningen, till exempel att köra skript eller starta om servrar.

När du använder customize:

  • Du kan använda flera anpassningar.
  • Anpassare körs i den ordning som anges i mallen.
  • Om en anpassning misslyckas misslyckas hela anpassningskomponenten och rapporterar tillbaka ett fel.
  • Testa skripten noggrant innan du använder dem i en mall. Det är enklare att felsöka skripten själva.
  • Placera inte känsliga data i skripten. Infogade kommandon kan visas i definitionen för bildmallen. Om du har känslig information (inklusive lösenord, SAS-token, autentiseringstoken osv.) bör den flyttas till skript i Azure Storage, där åtkomst kräver autentisering.
  • Skriptplatserna måste vara offentligt tillgängliga, såvida du inte använder MSI.

Avsnittet customize är en matris. De anpassningstyper som stöds är: File, PowerShell, Shell, WindowsRestart och WindowsUpdate.

"customize": [
  {
    "type": "File",
    "destination": "string",
    "sha256Checksum": "string",
    "sourceUri": "string"
  },
  {
    "type": "PowerShell",
    "inline": [ "string" ],
    "runAsSystem": "bool",
    "runElevated": "bool",
    "scriptUri": "string",
    "sha256Checksum": "string",
    "validExitCodes": [ "int" ]
  },
  {
    "type": "Shell",
    "inline": [ "string" ],
    "scriptUri": "string",
    "sha256Checksum": "string"
  },
  {
    "type": "WindowsRestart",
    "restartCheckCommand": "string",
    "restartCommand": "string",
    "restartTimeout": "string"
  },
  {
    "type": "WindowsUpdate",
    "filters": [ "string" ],
    "searchCriteria": "string",
    "updateLimit": "int"
  }
]

Gränssnittsanpassare

Anpassningen Shell stöder körning av shell-skript på Linux. Shell-skripten måste vara offentligt tillgängliga eller så måste du ha konfigurerat en MSI för Att Image Builder ska få åtkomst till dem.

"customize": [
  {
    "type": "Shell",
    "name": "<name>",
    "scriptUri": "<link to script>",
    "sha256Checksum": "<sha256 checksum>"
  }
],
"customize": [
  {
    "type": "Shell",
    "name": "<name>",
    "inline": "<commands to run>"
  }
]

Anpassa egenskaper:

  • type – Shell.

  • name – namn för att spåra anpassningen.

  • scriptUri – URI till platsen för filen.

  • infogad – matris med gränssnittskommandon, avgränsade med kommatecken.

  • sha256Checksum – värdet för sha256-kontrollsumman för filen, du genererar det här värdet lokalt och sedan kontrollerar Image Buildersum och validerar.

    Så här genererar du sha256Checksum med hjälp av en terminal på Mac/Linux-körning: sha256sum <fileName>

Kommentar

Infogade kommandon lagras som en del av definitionen av bildmallen. Du kan se dessa när du dumpar avbildningsdefinitionen. Om du har känsliga kommandon eller värden (inklusive lösenord, SAS-token, autentiseringstoken osv.) rekommenderar vi att dessa flyttas till skript och använder en användaridentitet för att autentisera till Azure Storage.

Superanvändarbehörigheter

Prefix kommandona med sudo för att köra dem med super användarbehörigheter. Du kan lägga till kommandona i skript eller använda de infogade kommandona, till exempel:

"type": "Shell",
"name": "setupBuildPath",
"inline": [
    "sudo mkdir /buildArtifacts",
    "sudo cp /tmp/index.html /buildArtifacts/index.html"
]

Exempel på ett skript med sudo som du kan referera till med hjälp av scriptUri:

#!/bin/bash -e

echo "Telemetry: creating files"
mkdir /myfiles

echo "Telemetry: running sudo 'as-is' in a script"
sudo touch /myfiles/somethingElevated.txt

Windows-omstartsanpassare

Med anpassningen WindowsRestart kan du starta om en virtuell Windows-dator och vänta tills den virtuella datorn är online igen. Med den här anpassningen kan du installera programvara som kräver en omstart.

"customize": [
  {
    "type": "WindowsRestart",
    "restartCommand": "shutdown /r /f /t 0",
    "restartCheckCommand": "echo Azure-Image-Builder-Restarted-the-VM  > c:\\buildArtifacts\\azureImageBuilderRestart.txt",
    "restartTimeout": "5m"
  }
]

Anpassa egenskaper:

  • Typ: WindowsRestart.
  • restartCommand – Kommando för att köra omstarten (valfritt). Standardvärdet är 'shutdown /r /f /t 0 /c \"packer restart\"'.
  • restartCheckCommand – Kommando för att kontrollera om omstarten lyckades (valfritt).
  • restartTimeout – Tidsgränsen för omstart anges som en storlekssträng och enhet. Till exempel 5m (5 minuter) eller 2h (2 timmar). Standardvärdet är: 5m.

Kommentar

Det finns ingen Linux-omstartsanpassare.

PowerShell-anpassning

Anpassningen PowerShell stöder körning av PowerShell-skript och infogade kommandon i Windows. Skripten måste vara offentligt tillgängliga för att IB ska kunna komma åt dem.

"customize": [
  {
    "type": "PowerShell",
    "name":   "<name>",
    "scriptUri": "<path to script>",
    "runElevated": <true false>,
    "runAsSystem": <true false>,
    "sha256Checksum": "<sha256 checksum>"
  },
  {
    "type": "PowerShell",
    "name": "<name>",
    "inline": "<PowerShell syntax to run>",
    "validExitCodes": [<exit code>],
    "runElevated": <true or false>,
    "runAsSystem": <true or false>
  }
]

Anpassa egenskaper:

  • type – PowerShell.

  • scriptUri – URI till platsen för PowerShell-skriptfilen.

  • infogade – infogade kommandon som ska köras, avgränsade med kommatecken.

  • validExitCodes – Valfria, giltiga koder som kan returneras från kommandot script/inline. Egenskapen undviker rapporterade fel i skriptet/infogade kommandot.

  • runElevated – Valfritt, booleskt stöd för att köra kommandon och skript med förhöjd behörighet.

  • runAsSystem – Valfritt, booleskt, avgör om PowerShell-skriptet ska köras som systemanvändare.

  • sha256Checksum – generera SHA256-kontrollsumman för filen lokalt, uppdatera kontrollsummavärdet till gemener och Image Builder validerar kontrollsumman under distributionen av avbildningsmallen.

    Om du vill generera sha256Checksum använder du cmdleten Get-FileHash i PowerShell.

Filanpassare

Med anpassningen File kan Image Builder ladda ned en fil från en GitHub-lagringsplats eller Azure Storage. Anpassningen stöder både Linux och Windows. Om du har en pipeline för avbildningsbygge som förlitar sig på byggartefakter kan du ange att filanpassaren ska laddas ned från byggresursen och flytta artefakterna till avbildningen.

"customize": [
  {
    "type": "File",
    "name": "<name>",
    "sourceUri": "<source location>",
    "destination": "<destination>",
    "sha256Checksum": "<sha256 checksum>"
  }
]

Egenskaper för filanpassare:

  • sourceUri – en tillgänglig lagringsslutpunkt, den här slutpunkten kan vara GitHub eller Azure Storage. Du kan bara ladda ned en fil, inte en hel katalog. Om du behöver ladda ned en katalog använder du en komprimerad fil och avkomprimeras sedan med hjälp av Shell- eller PowerShell-anpassningarna.

    Kommentar

    Om sourceUri är ett Azure Storage-konto, oavsett om bloben är markerad som offentlig, måste du bevilja behörigheten Hanterad användaridentitet för att läsa åtkomst på bloben. Se det här exemplet för att ange lagringsbehörigheter.

  • destination – den fullständiga målsökvägen och filnamnet. Alla refererade sökvägar och underkataloger måste finnas, använd Shell- eller PowerShell-anpassningarna för att konfigurera dessa sökvägar i förväg. Du kan använda skriptanpassarna för att skapa sökvägen.

Den här anpassningen stöds av Windows-kataloger och Linux-sökvägar, men det finns vissa skillnader:

  • Linux – den enda sökväg som Image Builder kan skriva till är /tmp.
  • Windows – Ingen sökvägsbegränsning, men sökvägen måste finnas.

Om det uppstår ett fel vid försök att ladda ned filen eller placera den i en angiven katalog misslyckas anpassningssteget och det här felet finns i customization.log.

Kommentar

Filanpassaren är endast lämplig för små filnedladdningar, < 20 MB. För större filnedladdningar använder du ett skript eller infogat kommando och använder sedan kod för att ladda ned filer, till exempel Linux wget eller curl, Windows, Invoke-WebRequest. För filer som finns i Azure Storage kontrollerar du att du tilldelar en identitet med behörighet att visa filen till den virtuella byggdatorn genom att följa dokumentationen här: Användartilldelad identitet för den virtuella image builder-datorn. Alla filer som inte lagras i Azure måste vara offentligt tillgängliga för att Azure Image Builder ska kunna ladda ned den.

  • sha256Checksum – generera SHA256-kontrollsumman för filen lokalt, uppdatera kontrollsummavärdet till gemener och Image Builder validerar kontrollsumman under distributionen av avbildningsmallen.

    Om du vill generera sha256Checksum använder du cmdleten Get-FileHash i PowerShell.

Windows Update-anpassning

Anpassningen WindowsUpdate bygger på communityn Windows Update Provisioner for Packer, som är ett projekt med öppen källkod som underhålls av Packer-communityn. Microsoft testar och validerar etableringen med Image Builder-tjänsten och stöder undersökning av problem med den och arbetar för att lösa problem, men projektet med öppen källkod stöds inte officiellt av Microsoft. Detaljerad dokumentation om och hjälp med Windows Update Provisioner finns i projektlagringsplatsen.

"customize": [
  {
    "type": "WindowsUpdate",
    "searchCriteria": "IsInstalled=0",
    "filters": [
      "exclude:$_.Title -like '*Preview*'",
      "include:$true"
    ],
    "updateLimit": 20
  }
]

Anpassningsegenskaper:

  • type – WindowsUpdate.
  • searchCriteria – Valfritt, definierar vilken typ av uppdateringar som installeras (som Rekommenderas eller Viktigt), BrowseOnly=0 och IsInstalled=0 (rekommenderas) är standard.
  • filter – Valfritt, låter dig ange ett filter för att inkludera eller exkludera uppdateringar.
  • updateLimit – Valfritt, definierar hur många uppdateringar som kan installeras, standard 1000.

Kommentar

Windows Update-anpassningen kan misslyckas om det finns några utestående Windows-omstarter eller programinstallationer som fortfarande körs, vanligtvis kan det här felet visas i customization.log, System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016. Vi rekommenderar starkt att du lägger till i en Windows-omstart och/eller ger program tillräckligt med tid för att slutföra sina installationer med hjälp av vilo- eller väntekommandon i infogade kommandon eller skript innan du kör Windows Update.

Generalisera

Som standard kör deprovision Azure Image Builder också kod i slutet av varje avbildningsanpassningsfas för att generalisera avbildningen. Generalisering är en process där avbildningen har konfigurerats så att den kan återanvändas för att skapa flera virtuella datorer. För virtuella Windows-datorer använder Azure Image Builder Sysprep. För Linux kör waagent -deprovisionAzure Image Builder .

De kommandon som Image Builder-användare ska generalisera kanske inte är lämpliga för alla situationer, så Med Azure Image Builder kan du anpassa det här kommandot om det behövs.

Om du migrerar befintlig anpassning och använder olika Sysprep-/waagent-kommandon kan du använda de allmänna kommandona image builder och om det inte går att skapa den virtuella datorn använder du dina egna Sysprep- eller waagent-kommandon.

Om Azure Image Builder skapar en anpassad Windows-avbildning och du skapar en virtuell dator från den och sedan upptäcker att den virtuella datorn inte kan skapas eller inte har slutförts korrekt, måste du granska Dokumentationen för Windows Server Sysprep eller skapa en supportbegäran med supportteamet för Windows Server Sysprep Customer Services, som kan felsöka och ge råd om rätt Sysprep-användning.

Standardkommando för Sysprep

Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
  Write-Output '>>> Removing Sysprep\unattend.xml ...'
  Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
if (Test-Path $Env:SystemRoot\Panther\unattend.xml) {
  Write-Output '>>> Removing Panther\unattend.xml ...'
  Remove-Item $Env:SystemRoot\Panther\unattend.xml -Force
}
Write-Output '>>> Sysprepping VM ...'
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
  $imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
  Write-Output $imageState
  if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
  Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'

Standardkommando för Linux-avetablering

WAAGENT=/usr/sbin/waagent
waagent -version 1> /dev/null 2>&1
if [ $? -eq 0 ]; then
  WAAGENT=waagent
fi
$WAAGENT -force -deprovision+user && export HISTSIZE=0 && sync

Åsidosätta kommandona

Om du vill åsidosätta kommandona använder du PowerShell- eller Shell-skriptetabler för att skapa kommandofilerna med det exakta filnamnet och placera dem i rätt kataloger:

  • Windows: c:\DeprovisioningScript.ps1
  • Linux: /tmp/DeprovisioningScript.sh

Image Builder läser dessa kommandon, dessa kommandon skrivs ut till AIB-loggarna, customization.log. Se felsökning av hur du samlar in loggar.

Egenskaper: errorHandling

Med errorHandling egenskapen kan du konfigurera hur fel hanteras när avbildningen skapas.

{
  "errorHandling": {
    "onCustomizerError": "abort",
    "onValidationError": "cleanup"
  }
}

Med errorHandling egenskapen kan du konfigurera hur fel hanteras när avbildningen skapas. Den har två egenskaper:

  • onCustomizerError – Anger vilken åtgärd som ska vidtas när ett fel inträffar under anpassningsfasen när avbildningen skapas.
  • onValidationError – Anger vilken åtgärd som ska vidtas när ett fel inträffar under valideringen av bildmallen.

Egenskapen errorHandling har också två möjliga värden för att hantera fel när avbildningen skapas:

  • rensning – Säkerställer att tillfälliga resurser som skapats av Packer rensas även om Packer eller någon av anpassningarna/valideringarna stöter på ett fel. Detta upprätthåller bakåtkompatibilitet med befintligt beteende.
  • abort – Om Packer stöter på ett fel hoppar Tjänsten Azure Image Builder (AIB) över rensningen av tillfälliga resurser. Som ägare till AIB-mallen ansvarar du för att rensa dessa resurser från din prenumeration. Dessa resurser kan innehålla användbar information, till exempel loggar och filer som lämnas kvar på en tillfällig virtuell dator, vilket kan hjälpa dig att undersöka felet som Packer påträffade.

Egenskaper: distribuera

Azure Image Builder stöder tre distributionsmål:

  • ManagedImage – Hanterad avbildning.
  • sharedImage – Azure Compute Gallery.
  • VHD – VHD i ett lagringskonto.

Du kan distribuera en avbildning till båda måltyperna i samma konfiguration.

Kommentar

Standardkommandot AIB sysprep innehåller inte "/mode:vm", men den här egenskapen kanske krävs när du skapar avbildningar som har HyperV-rollen installerad. Om du behöver lägga till det här kommandoargumentet måste du åsidosätta sysprep-kommandot.

Eftersom du kan ha fler än ett mål att distribuera till behåller Image Builder ett tillstånd för varje distributionsmål som kan nås genom att runOutputNamefråga . runOutputName är ett objekt som du kan fråga efter distribution för information om den distributionen. Du kan till exempel fråga platsen för den virtuella hårddisken, eller regioner där avbildningsversionen replikerades till eller SIG Image-versionen skapades. Det här är en egenskap för varje distributionsmål. runOutputName Måste vara unikt för varje distributionsmål. Här är ett exempel på hur du kör frågor mot en Azure Compute Gallery-distribution:

subscriptionID=<subcriptionID>
imageResourceGroup=<resourceGroup of image template>
runOutputName=<runOutputName>

az resource show \
  --ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/$runOutputName" \
--api-version=2023-07-01

Utdata:

{
  "id": "/subscriptions/xxxxxx/resourcegroups/rheltest/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/rhel77",
  "identity": null,
  "kind": null,
  "location": null,
  "managedBy": null,
  "name": "rhel77",
  "plan": null,
  "properties": {
    "artifactId": "/subscriptions/xxxxxx/resourceGroups/aibDevOpsImg/providers/Microsoft.Compute/galleries/devOpsSIG/images/rhel/versions/0.24105.52755",
    "provisioningState": "Succeeded"
  },
  "resourceGroup": "rheltest",
  "sku": null,
  "tags": null,
  "type": "Microsoft.VirtualMachineImages/imageTemplates/runOutputs"
}

Distribuera: managedImage

Bildutdata är en hanterad avbildningsresurs.

{
  "type":"ManagedImage",
  "imageId": "<resource ID>",
  "location": "<region>",
  "runOutputName": "<name>",
  "artifactTags": {
      "<name>": "<value>",
      "<name>": "<value>"
  }
}

Distribuera egenskaper:

  • type – ManagedImage
  • imageId – Resurs-ID för målavbildningen, förväntat format: /subscriptions/<subscriptionId>/resourceGroups/<destinationResourceGroupName>/providers/Microsoft.Compute/images/<imageName>
  • location – platsen för den hanterade avbildningen.
  • runOutputName – unikt namn för att identifiera fördelningen.
  • artifactTags – Valfri användare har angett nyckel/värde-taggar.

Kommentar

Målresursgruppen måste finnas. Om du vill att avbildningen ska distribueras till en annan region ökar distributionstiden.

Distribuera: sharedImage

Azure Compute Gallery är en ny tjänst för bildhantering som gör det möjligt att hantera replikering, versionshantering och delning av anpassade avbildningar i bildregionen. Azure Image Builder stöder distribution med den här tjänsten, så att du kan distribuera avbildningar till regioner som stöds av Azure Compute Galleries.

ett Azure Compute-galleri består av:

  • Galleri – Container för flera avbildningar. Ett galleri distribueras i en region.
  • Bilddefinitioner – en konceptuell gruppering för bilder.
  • Avbildningsversioner – en avbildningstyp som används för att distribuera en virtuell dator eller skalningsuppsättning. Avbildningsversioner kan replikeras till andra regioner där virtuella datorer måste distribueras.

Innan du kan distribuera till galleriet måste du skapa ett galleri och en bilddefinition. Mer information finns i Skapa ett galleri.

Kommentar

Avbildningsversions-ID:t måste skilja sig eller skilja sig från eventuella avbildningsversioner som finns i det befintliga Azure Compute-galleriet.

{
  "type": "SharedImage",
  "galleryImageId": "<resource ID>",
  "runOutputName": "<name>",
  "artifactTags": {
      "<name>": "<value>",
      "<name>": "<value>"
  }
}

Följande JSON är ett exempel på hur du använder fältet replicationRegions för att distribuera till ett Azure Compute-galleri.

  "replicationRegions": [
      "<region where the gallery is deployed>",
      "<region>"
  ]

Kommentar

replicationRegions är inaktuell för galleridistributioner som targetRegions är uppdaterad egenskap. Mer information finns i targetRegions.

Distribuera: targetRegions

Följande JSON är ett exempel på hur du använder fältet targetRegions för att distribuera till ett Azure Compute-galleri.

"distribute": [
      {
        "type": "SharedImage",
        "galleryImageId": "<resource ID>",
        "runOutputName": "<name>",
        "artifactTags": {
          "<name>": "<value>",
          "<name>": "<value>"
        },
        "targetRegions": [
             {
              "name": "eastus",
              "replicaCount": 2,
              "storageAccountType": "Standard_ZRS"
             },
             {
              "name": "eastus2",
              "replicaCount": 3,
              "storageAccountType": "Premium_LRS"
             }
          ]
       },
    ]

Distribuera egenskaper för gallerier:

  • type – sharedImage

  • galleryImageId – ID för Azure Compute Gallery, den här egenskapen kan anges i två format:

    • Automatisk versionshantering – Image Builder genererar ett monotont versionsnummer åt dig, den här egenskapen är användbar när du vill fortsätta återskapa bilder från samma mall: Formatet är: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName>.
    • Explicit versionshantering – Du kan skicka in det versionsnummer som du vill att bildverktyget ska använda. Formatet är: /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>/versions/<version - for example: 1.1.1>
  • runOutputName – unikt namn för att identifiera fördelningen.

  • artifactTags – valfria användardefinierade nyckel\värdetaggar.

  • replicationRegions – matris med regioner för replikering. En av regionerna måste vara den region där galleriet distribueras. Att lägga till regioner innebär en ökning av byggtiden eftersom bygget inte slutförs förrän replikeringen har slutförts. Det här fältet är inaktuellt från och med API-version 2022-07-01. Använd targetRegions när du distribuerar en "SharedImage"-typ.

  • targetRegions – en matris med regioner för replikering. Det har nyligen introducerats som en del av API:et 2022-07-01 och gäller endast för typ-distributionenSharedImage.

  • excludeFromLatest (valfritt) – gör att du kan markera att den avbildningsversion som du skapar inte används som den senaste versionen i galleridefinitionen, standardvärdet är "false".

  • storageAccountType (valfritt) – AIB har stöd för att ange dessa typer av lagring för den avbildningsversion som ska skapas:

    • "Standard_LRS"
    • "Standard_ZRS","

Kommentar

Om avbildningsmallen och referensen image definition inte finns på samma plats ser du ytterligare tid för att skapa avbildningar. Image Builder har location för närvarande ingen parameter för avbildningsversionsresursen, vi tar den från dess överordnade image definition. Om en bilddefinition till exempel finns i westus och du vill att avbildningsversionen ska replikeras till eastuskopieras en blob till westus, en avbildningsversionsresurs i westus skapas och replikeras sedan till eastus. För att undvika ytterligare replikeringstid kontrollerar du att bildmallen image definition och finns på samma plats.

versionshantering

Versionsegenskapen är endast avsedd för distributionstypensharedImage. Det är en uppräkning med två möjliga värden:

  • senaste – Nytt strikt ökande schema per design
  • source – Schema baserat på källbildens versionsnummer.

Standardschemat för versionsnumrering är latest. Det senaste schemat har ytterligare en egenskap, "major" som anger vilken huvudversion som den senaste versionen ska genereras under.

Kommentar

Den befintliga versionsgenereringslogik för sharedImage distribution är inaktuell. Två nya alternativ finns: monotont ökande versioner som alltid är den senaste versionen i ett galleri och versioner som genereras baserat på källbildens versionsnummer. Uppräkningen som anger versionsgenereringsschemat möjliggör expansion i framtiden med ytterligare versionsgenereringsscheman.

    "distribute": [
        "versioning": {
            "scheme": "Latest",
            "major": 1
        }
    ]

versionsegenskaper:

  • scheme – Generera nytt versionsnummer för distribution. Latest eller Source är två möjliga värden.
  • major – Anger vilken huvudversion som den senaste versionen ska genereras under. Gäller endast när är inställt på scheme Latest. I ett galleri med följande versioner publicerade: 0.1.1, 0.1.2, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 2.0.0, 2.0.1, 2.1.0
    • Med huvudinställningen inte inställd eller större inställd på 2 genererar schemat Latest version 2.1.1
    • Med huvudinställningen 1 genererar det senaste schemat version 1.2.1
    • Med huvudinställningen 0 genererar det senaste schemat version 0.1.3

Distribuera: VHD

Du kan mata ut till en virtuell hårddisk. Du kan sedan kopiera den virtuella hårddisken och använda den för att publicera till Azure MarketPlace eller använda den med Azure Stack.

{
  "type": "VHD",
  "runOutputName": "<VHD name>",
  "artifactTags": {
      "<name>": "<value>",
      "<name>": "<value>"
  }
}

Os-stöd: Windows och Linux

Distribuera VHD-parametrar:

  • type – VHD.
  • runOutputName – unikt namn för att identifiera fördelningen.
  • taggar – Valfria användarangivna nyckelvärdepartaggar.

Azure Image Builder tillåter inte att användaren anger en lagringskontoplats, men du kan fråga statusen runOutputs för för att hämta platsen.

az resource show \
  --ids "/subscriptions/$subscriptionId/resourcegroups/<imageResourceGroup>/providers/Microsoft.VirtualMachineImages/imageTemplates/<imageTemplateName>/runOutputs/<runOutputName>"  | grep artifactUri

Kommentar

När den virtuella hårddisken har skapats kopierar du den till en annan plats så snart som möjligt. Den virtuella hårddisken lagras i ett lagringskonto i den tillfälliga resursgrupp som skapas när avbildningsmallen skickas till Azure Image Builder-tjänsten. Om du tar bort avbildningsmallen förlorar du den virtuella hårddisken.

Följande JSON distribuerar avbildningen som en virtuell hårddisk till ett anpassat lagringskonto.

"distribute": [
  {
    "type": "VHD",
    "runOutputName": "<VHD name>",
    "artifactTags": {
        "<name>": "<value>",
        "<name>": "<value>"
    },
    "uri": "<replace with Azure storage URI>"
  }
]

Egenskaper för VHD-distribution:

uri – Valfri Azure Storage-URI för den distribuerade VHD-bloben. Utelämna att använda standardvärdet (tom sträng) i vilket fall VHD skulle publiceras till lagringskontot i mellanlagringsresursgruppen.

Egenskaper: optimera

Egenskapen optimize kan aktiveras när du skapar en VM-avbildning och gör det möjligt att optimera virtuella datorer för att förbättra tiden för att skapa avbildningar.

"optimize": {
      "vmBoot": {
        "state": "Enabled"
      }
    }
  • vmBoot: En konfiguration som rör startprocessen för den virtuella datorn (VM), som används för att styra optimeringar som kan förbättra starttiden eller andra prestandaaspekter.
  • tillstånd: Tillståndet för startoptimeringsfunktionen i vmBoot, med värdet Enabled som anger att funktionen är aktiverad för att förbättra avbildningens skapandetid.

Mer information finns i VM-optimering för galleriavbildningar med Azure VM Image Builder.

Egenskaper: källa

Avsnittet source innehåller information om källbilden som ska användas av Image Builder. Azure Image Builder stöder endast generaliserade avbildningar som källbilder, specialiserade avbildningar stöds inte just nu.

API:et kräver en SourceType som definierar källan för avbildningsversionen, för närvarande finns det tre typer:

  • PlatformImage – anger att källbilden är en Marketplace-avbildning.
  • ManagedImage – används när du startar från en vanlig hanterad avbildning.
  • SharedImageVersion – används när du använder en avbildningsversion i ett Azure Compute-galleri som källa.

Kommentar

När du använder befintliga anpassade Windows-avbildningar kan du köra Sysprep-kommandot upp till tre gånger på en enda Windows 7- eller Windows Server 2008 R2-avbildning, eller 1 001 gånger på en enda Windows-avbildning för senare versioner. Mer information finns i sysprep-dokumentationen.

PlatformImage-källa

Azure Image Builder stöder Windows Server och klient samt Linux Azure Marketplace-avbildningar. Mer information om Azure Image Builder finns i den fullständiga listan.

"source": {
  "type": "PlatformImage",
  "publisher": "Canonical",
  "offer": "UbuntuServer",
  "sku": "18.04-LTS",
  "version": "latest"
}

Egenskaperna här är samma som används för att skapa virtuella datorer, med AZ CLI kör du nedanstående för att hämta egenskaperna:

az vm image list -l westus -f UbuntuServer -p Canonical --output table --all

Du kan använda latest i versionen, versionen utvärderas när avbildningsversionen sker, inte när mallen skickas. Om du använder den här funktionen med Azure Compute Gallery-målet kan du undvika att skicka mallen igen och köra avbildningsversionen igen med jämna mellanrum, så att dina bilder återskapas från de senaste bilderna.

Stöd för information om plan för marknadsplatser

Du kan också ange planinformation, till exempel:

"source": {
  "type": "PlatformImage",
  "publisher": "RedHat",
  "offer": "rhel-byos",
  "sku": "rhel-lvm75",
  "version": "latest",
  "planInfo": {
    "planName": "rhel-lvm75",
    "planProduct": "rhel-byos",
    "planPublisher": "redhat"
  }
}

ManagedImage-källa

Anger källavbildningen som en befintlig hanterad avbildning av en generaliserad virtuell hårddisk eller virtuell dator.

Kommentar

Källhanterad avbildning måste vara av ett operativsystem som stöds och avbildningen måste finnas i samma prenumeration och region som din Azure Image Builder-mall.

"source": {
  "type": "ManagedImage",
  "imageId": "/subscriptions/<subscriptionId>/resourceGroups/{destinationResourceGroupName}/providers/Microsoft.Compute/images/<imageName>"
}

imageId Ska vara ResourceId för den hanterade avbildningen. Använd az image list för att visa tillgängliga bilder.

SharedImageVersion-källa

Anger källbilden som en befintlig avbildningsversion i ett Azure Compute-galleri.

Kommentar

Den delade källavbildningsversionen måste ha ett operativsystem som stöds och avbildningsversionen måste finnas i samma region som din Azure Image Builder-mall, om inte, replikera avbildningsversionen till image builder-mallregionen.

"source": {
  "type": "SharedImageVersion",
  "imageVersionId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>"
}
  • imageVersionId – ARM-mallresurs-ID för avbildningsversionen. När avbildningsversionsnamnet är "senaste" utvärderas versionen när avbildningsversionen äger rum. imageVersionId Ska vara avbildningsversionenResourceId. Använd az sig image-version list för att visa en lista över avbildningsversioner.

Följande JSON anger källbilden som en bild som lagras i ett direkt delat galleri.

Kommentar

Direktdelade galleriet är för närvarande i förhandsversionstillgänglighet.

    source: {
      "type": "SharedImageVersion",
      "imageVersionId": "<replace with resourceId of the image stored in the Direct Shared Gallery>"
    },

Följande JSON anger källbilden som den senaste avbildningsversionen för en avbildning som lagras i ett Azure Compute-galleri.

"properties": {
    "source": {
        "type": "SharedImageVersion",
        "imageVersionId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<azureComputeGalleryName>/images/<imageDefinitionName>/versions/latest"
    }
},

Egenskaper för SharedImageVersion:

imageVersionId – ARM-mallresurs-ID för avbildningsversionen. När avbildningsversionsnamnet är "senaste" utvärderas versionen när avbildningsversionen äger rum.

Egenskaper: stagingResourceGroup

Egenskapen stagingResourceGroup innehåller information om den mellanlagringsresursgrupp som Image Builder-tjänsten skapar för användning under avbildningsprocessen. stagingResourceGroup är en valfri egenskap för alla som vill ha mer kontroll över resursgruppen som skapats av Image Builder under avbildningsprocessen. Du kan skapa en egen resursgrupp och ange den stagingResourceGroup i avsnittet eller låta Image Builder skapa en för din räkning.

Viktigt!

Den angivna mellanlagringsresursgruppen kan inte associeras med en annan avbildningsmall, måste vara tom (inga resurser inuti), i samma region som avbildningsmallen och ha rbac för antingen "Deltagare" eller "Ägare" tillämpat på identiteten som tilldelats till azure image builder-avbildningsmallresursen.

"properties": {
  "stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>"
}

Scenarier för att skapa mallar

  • Egenskapen stagingResourceGroup lämnas tom

    Om egenskapen stagingResourceGroup inte har angetts eller angetts med en tom sträng skapar Image Builder-tjänsten en mellanlagringsresursgrupp med standardnamnet "IT_***". Mellanlagringsresursgruppen har standardtaggar som tillämpas på den: createdBy, imageTemplateName, . imageTemplateResourceGroupName Dessutom tillämpas standard-RBAC på den identitet som tilldelats azure image builder-mallresursen, som är "Deltagare".

  • Egenskapen stagingResourceGroup anges med en resursgrupp som finns

    Om egenskapen stagingResourceGroup har angetts med en resursgrupp som finns kontrollerar Image Builder-tjänsten att resursgruppen inte är associerad med en annan bildmall, är tom (inga resurser inuti), i samma region som bildmallen och har antingen "Deltagare" eller "Ägare" RBAC tillämpat på den identitet som tilldelats azure image builder-avbildningsmallresursen. Om något av ovanstående krav inte uppfylls utlöses ett fel. Mellanlagringsresursgruppen har följande taggar tillagda: usedBy, imageTemplateName, , imageTemplateResourceGroupName. Befintliga taggar tas inte bort.

Viktigt!

Du måste tilldela deltagarrollen till resursgruppen för tjänstens huvudnamn som motsvarar Azure Image Builder-appen från första part när du försöker ange en befintlig resursgrupp och ett virtuellt nätverk till Azure Image Builder-tjänsten med en Windows-källbild. Anvisningar för CLI-kommandot och portalen om hur du tilldelar deltagarrollen till resursgruppen finns i följande dokumentation Felsöka vm Azure Image Builder: Auktoriseringsfel vid skapande av disk

  • Egenskapen stagingResourceGroup anges med en resursgrupp som inte finns

    Om egenskapen stagingResourceGroup anges med en resursgrupp som inte finns skapar Image Builder-tjänsten en mellanlagringsresursgrupp med namnet som anges i stagingResourceGroup egenskapen. Ett fel uppstår om det angivna namnet inte uppfyller Namngivningskraven för Azure för resursgrupper. Mellanlagringsresursgruppen har standardtaggar som tillämpas på den: createdBy, imageTemplateName, . imageTemplateResourceGroupName Som standard har den identitet som tilldelats azure image builder-avbildningsmallresursen RBAC "Deltagare" tillämpat på den i resursgruppen.

Borttagning av mall

Alla mellanlagringsresurser som skapas av Image Builder-tjänsten tas bort när avbildningsmallen har tagits bort. Borttagningen innehåller mellanlagringsresursgrupper som angavs i stagingResourceGroup egenskapen, men som inte fanns före avbildningsversionen.

Om Image Builder inte skapade mellanlagringsresursgruppen, men resurserna i resursgruppen, tas dessa resurser bort när avbildningsmallen har tagits bort, med tanke på att Image Builder-tjänsten har de behörigheter eller den roll som krävs för att ta bort resurser.

Egenskaper: verifiera

Du kan använda validate egenskapen för att verifiera plattformsbilder och eventuella anpassade avbildningar som du skapar oavsett om du använde Azure Image Builder för att skapa dem.

Azure Image Builder stöder läget "Endast källverifiering" som kan ställas in med hjälp av sourceValidationOnly egenskapen . Om egenskapen sourceValidationOnly är inställd på true verifieras den bild som anges i source avsnittet direkt. Ingen separat version körs för att generera och validera sedan en anpassad avbildning.

Egenskapen inVMValidations tar en lista över validatorer som ska utföras på avbildningen. Azure Image Builder stöder Fil-, PowerShell- och Shell-validatorer.

Egenskapen continueDistributeOnFailure ansvarar för om utdatabilderna distribueras om verifieringen misslyckas. Om verifieringen misslyckas och den här egenskapen är inställd på false distribueras inte utdatabilderna som standard. Om verifieringen misslyckas och den här egenskapen är inställd på true, distribueras utdatabilderna fortfarande. Använd det här alternativet med försiktighet eftersom det kan leda till att misslyckade bilder distribueras för användning. I båda fallen (sant eller falskt) rapporteras avbildningskörningen från slutpunkt till slutpunkt som en misslyckad om ett valideringsfel. Den här egenskapen påverkar inte om valideringen lyckas eller inte.

När du använder validate:

  • Du kan använda flera validatorer.
  • Validatorer körs i den ordning som anges i mallen.
  • Om en validator misslyckas misslyckas hela valideringskomponenten och rapporterar tillbaka ett fel.
  • Vi rekommenderar att du testar skriptet noggrant innan du använder det i en mall. Det blir enklare att felsöka skriptet på din egen virtuella dator.
  • Placera inte känsliga data i skripten.
  • Skriptplatserna måste vara offentligt tillgängliga, såvida du inte använder MSI.

Så här använder du egenskapen validate för att verifiera Windows-avbildningar:

{
   "properties":{
      "validate":{
         "continueDistributeOnFailure":false,
         "sourceValidationOnly":false,
         "inVMValidations":[
            {
               "type":"File",
               "destination":"string",
               "sha256Checksum":"string",
               "sourceUri":"string"
            },
            {
               "type":"PowerShell",
               "name":"test PowerShell validator inline",
               "inline":[
                  "<command to run inline>"
               ],
               "validExitCodes":"<exit code>",
               "runElevated":"<true or false>",
               "runAsSystem":"<true or false>"
            },
            {
               "type":"PowerShell",
               "name":"<name>",
               "scriptUri":"<path to script>",
               "runElevated":"<true false>",
               "sha256Checksum":"<sha256 checksum>"
            }
         ]
      }
   }
}

inVMValidations Egenskaper:

  • type – PowerShell.

  • name – validatorns namn

  • scriptUri – URI för PowerShell-skriptfilen.

  • infogad – matris med kommandon som ska köras, avgränsade med kommatecken.

  • validExitCodes – Valfria, giltiga koder som kan returneras från kommandot script/inline, vilket undviker rapporterade fel i skriptet/infogade kommandot.

  • runElevated – Valfritt, booleskt stöd för att köra kommandon och skript med förhöjd behörighet.

  • sha256Checksum – Värdet för sha256-kontrollsumman för filen, du genererar detta lokalt och sedan kontrollerar Image Buildersum och validerar.

    Så här genererar du sha256Checksum med hjälp av en PowerShell på Windows Get-Hash

Så här använder du egenskapen validate för att verifiera Linux-avbildningar:

{
  "properties": {
    "validate": {
      "continueDistributeOnFailure": false,
      "sourceValidationOnly": false,
      "inVMValidations": [
        {
          "type": "Shell",
          "name": "<name>",
          "inline": [
            "<command to run inline>"
          ]
        },
        {
          "type": "Shell",
          "name": "<name>",
          "scriptUri": "<path to script>",
          "sha256Checksum": "<sha256 checksum>"
        },
        {
          "type": "File",
          "destination": "string",
          "sha256Checksum": "string",
          "sourceUri": "string"
        }
      ]
    }
  }
}

inVMValidations Egenskaper:

  • type – Shell eller File angiven som den valideringstyp som ska utföras.

  • name – validatorns namn

  • scriptUri – URI för skriptfilen

  • infogad – matris med kommandon som ska köras, avgränsade med kommatecken.

  • sha256Checksum – Värdet för sha256-kontrollsumman för filen, du genererar detta lokalt och sedan kontrollerar Image Buildersum och validerar.

    Så här genererar du sha256Checksum med hjälp av en terminal på Mac/Linux-körning: sha256sum <fileName>

  • destination – målet för filen.

  • sha256Checksum – Anger SHA256-kontrollsumman för filen.

  • sourceUri – filens käll-URI.

Egenskaper: vmProfile

vmSize (valfritt)

Image Builder använder en standard-SKU-storlek på för Gen1-avbildningar Standard_D1_v2 och Standard_D2ds_v4 för Gen2-avbildningar. Genereringen definieras av den avbildning som du anger i source. Du kan åsidosätta vmSize av följande skäl:

  • Utföra anpassningar som kräver ökat minne, processor och hantering av stora filer (GBs).
  • Om du kör Windows-versioner bör du använda "Standard_D2_v2" eller motsvarande VM-storlek.
  • Kräv VM-isolering.
  • Anpassa en avbildning som kräver specifik maskinvara. För en virtuell GPU-dator behöver du till exempel en GPU VM-storlek.
  • Kräv kryptering från slutpunkt till slutpunkt i resten av den virtuella byggdatorn. Du måste ange storleken på den virtuella datorn för att skapa stöd som inte använder lokala temporära diskar.

osDiskSizeGB

Som standard ändrar Image Builder inte storleken på avbildningen, utan använder storleken från källbilden. Du kan också bara öka storleken på OS-disken (Win och Linux) och värdet 0 innebär att du lämnar samma storlek som källavbildningen. Du kan inte minska operativsystemets diskstorlek till mindre än storleken från källavbildningen.

{
  "osDiskSizeGB": 100
}

vnetConfig (valfritt)

Om du inte anger några VNet-egenskaper skapar Image Builder ett eget VNet, en offentlig IP-adress och en nätverkssäkerhetsgrupp (NSG). Den offentliga IP-adressen används för att tjänsten ska kunna kommunicera med den virtuella byggdatorn. Om du inte vill ha en offentlig IP-adress eller om du vill att Image Builder ska ha åtkomst till dina befintliga VNet-resurser, till exempel konfigurationsservrar (DSC, Chef, Puppet, Ansible), filresurser, kan du ange ett VNet. Mer information finns i nätverksdokumentationen.

"vnetConfig": {
  "subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName1>",
  "containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
  "proxyVmSize": "<vmSize>"
}

subnetId

Resurs-ID för ett befintligt undernät där den virtuella byggdatorn och den virtuella valideringsdatorn distribueras.

containerInstanceSubnetId (valfritt)

Resurs-ID för ett befintligt undernät där Azure Container Instance (ACI) distribueras för isolerade versioner. Om det här fältet inte anges distribueras ett tillfälligt virtuellt nätverk, tillsammans med undernät och nätverkssäkerhetsgrupper, i resursgruppen för mellanlagring utöver andra nätverksresurser (privat slutpunkt, Private Link Service, Azure Load Balancer och den virtuella proxydatorn) för att möjliggöra kommunikation mellan ACI och den virtuella byggdatorn.

[Den här egenskapen är endast tillgänglig i API-versioner 2024-02-01 eller senare, men befintliga mallar som skapats med tidigare API-versioner kan uppdateras för att ange den här egenskapen.]

Det här fältet kan endast anges om subnetId det också anges och måste uppfylla följande krav:

  • Det här undernätet måste finnas i samma virtuella nätverk som det undernät som anges i subnetId.
  • Det här undernätet får inte vara samma undernät som det som anges i subnetId.
  • Det här undernätet måste delegeras till ACI-tjänsten så att det kan användas för att distribuera ACI-resurser. Du kan läsa mer om delegering av undernät för Azure-tjänster här. Information om ACI-specifik delegering av undernät finns här.
  • Det här undernätet måste tillåta utgående åtkomst till Internet och till det undernät som anges i subnetId. Dessa åtkomster krävs så att ACI kan etableras och kan kommunicera med den virtuella byggdatorn för att utföra anpassningar/valideringar. I andra änden måste det undernät som anges i subnetId tillåta inkommande åtkomst från det här undernätet. I allmänhet tillåter standardsäkerhetsregler för Azure Network Security Groups (NSG:er) dessa åtkomster. Men om du lägger till fler säkerhetsregler i dina NSG:er måste följande åtkomst fortfarande tillåtas:
    1. Utgående åtkomst från det undernät som anges i containerInstanceSubnetId för att:
      1. Till Internet på port 443 (för att etablera containeravbildningen).
      2. Till Internet på port 445 (för montering av filresurs från Azure Storage).
      3. Till det undernät som anges i subnetId på port 22 (för ssh/Linux) och port 5986 (för WinRM/Windows) (för anslutning till den virtuella build-datorn).
    2. Inkommande åtkomst till det undernät som anges i subnetId:
      1. Till Port 22 (för ssh/Linux) och Port 5986 (för WinRM/Windows) från det undernät som anges i containerInstanceSubnetId (för att ACI ska ansluta till den virtuella build-datorn).
  • Mallidentiteten måste ha behörighet att utföra åtgärden Microsoft.Network/virtualNetworks/subnets/join/action i undernätets omfång. Du kan läsa mer om Azure-behörigheter för nätverk här.

proxyVmSize (valfritt)

Storleken på den virtuella proxydatorn som används för att skicka trafik till den virtuella byggdatorn och den virtuella valideringsdatorn. Det här fältet får inte anges om containerInstanceSubnetId det har angetts eftersom ingen virtuell proxydator har distribuerats i så fall. Utelämna eller ange en tom sträng för att använda standardvärdet (Standard_A1_v2).

Egenskaper: kör automatiskt

Du kan använda autoRun egenskapen för att styra om avbildningsmallens byggprocess ska starta automatiskt när mallen skapas. Det är en uppräkning med två möjliga värden:

  • Aktiverad – Automatisk körning är aktiverad, så avbildningsmallens byggprocess startar automatiskt när mallen skapas.
  • Inaktiverad – Automatisk körning är inaktiverad, så du måste starta avbildningsprocessen manuellt när mallen har skapats.
"properties": {
    "autoRun": {
        "state": "Enabled"
    }
 }

Kommentar

När du anger autoRun "Aktiverad" körs avbildningsprocessen en gång när mallen skapas. Det säkerställer att den första avbildningsversionen sker sömlöst. Den tillhandahåller dock inte konsekventa och pågående avbildningsversioner. Konsekventa och pågående avbildningsversioner som körs när en avbildningsmall har uppdaterats finns i Använda Azure Image Builder-utlösare för att konfigurera en automatisk avbildningsversion.

Till skillnad från autoRunsäkerställer automatisk skapande av avbildning via Azure Image Builder-utlösarresursen att avbildningsversioner sker konsekvent. När det sker ändringar i mallen utlöser Azure Image Builder-tjänsten automatiskt processen för att skapa avbildningar.

Välj autoRun om du vill skapa en omedelbar avbildning när mallen skapas. Välj automatisk skapande av avbildningar när du behöver kontinuerlig konsekvens i avbildningsversioner. Överväg dina specifika krav och använd lämpligt alternativ baserat på ditt arbetsflöde.

Egenskaper: managedResourceTags

Du kan använda managedResourceTags egenskapen för att tillämpa taggar på de resurser som Azure Image Builder-tjänsten skapar i mellanlagringsresursgruppen under avbildningsversionen. Mer information om resursgruppen för mellanlagring finns i Översikt över Azure Image Builder

"properties": {
		"managedResourceTags": {
			"tag1": "value1",
      			"tag2": "value2"
              }
}

Åtgärder för bildmallar

Starta en avbildningsversion

För att starta en version måste du anropa "Kör" på resursen Bildmall, exempel run på kommandon:

Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2023-07-01" -Action Run -Force
az resource invoke-action \
  --resource-group $imageResourceGroup \
  --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
  -n helloImageTemplateLinux01 \
  --action Run

Avbryta en avbildningsversion

Om du kör en avbildningsversion som du tror är felaktig, väntar på användarindata eller om du känner att den aldrig har slutförts kan du avbryta bygget.

Bygget kan avbrytas när som helst. Om distributionsfasen har startat kan du fortfarande avbryta, men du måste rensa alla avbildningar som kanske inte har slutförts. Kommandot avbryt väntar inte på att avbrytas, övervakar lastrunstatus.runstate för att avbryta förloppet med hjälp av dessa statuskommandon.

Exempel på cancel kommandon:

Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2023-07-01" -Action Cancel -Force
az resource invoke-action \
  --resource-group $imageResourceGroup \
  --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
  -n helloImageTemplateLinux01 \
  --action Cancel

Nästa steg

Det finns exempel på .json filer för olika scenarier i Azure Image Builder GitHub.