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
.
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
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:
- Så här använder du hanterade identiteter för Azure-resurser på en virtuell Azure-dator för att hämta en åtkomsttoken
- Använda hanterade identiteter för Azure-resurser på en virtuell Azure-dator för inloggning
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) eller2h
(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 -deprovision
Azure 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.
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 runOutputName
frå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.
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>
- 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:
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-distributionen
SharedImage
.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 eastus
kopieras 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
ellerSource
ä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
- Med huvudinställningen inte inställd eller större inställd på 2 genererar schemat
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.
- 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ärdetEnabled
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 istagingResourceGroup
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.
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 isubnetId
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:- Utgående åtkomst från det undernät som anges i
containerInstanceSubnetId
för att:- Till Internet på port 443 (för att etablera containeravbildningen).
- Till Internet på port 445 (för montering av filresurs från Azure Storage).
- 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).
- Inkommande åtkomst till det undernät som anges i
subnetId
:- 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).
- Till Port 22 (för ssh/Linux) och Port 5986 (för WinRM/Windows) från det undernät som anges i
- Utgående åtkomst från det undernät som anges i
- 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 autoRun
sä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.