Sdílet prostřednictvím


Vytvoření šablony JSON pro Azure Image Builder Bicep nebo šablony ARM

Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Windows virtuálních počítačů s Linuxem ✔️

Azure Image Builder používá k předávání informací do služby Image Builder soubor bicep nebo soubor šablony JSON šablony ARM. V tomto článku si projdeme části souborů, takže si můžete vytvořit vlastní. Nejnovější verze rozhraní API najdete v referenčních informacích k šabloně. Příklady úplných .json souborů najdete v GitHubu v Azure Image Builderu.

Základní formát je:

{
  "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>",
        ...
      ]
    }
  }
}

Verze rozhraní API

Verze rozhraní API se v průběhu času změní při změně rozhraní API. Podívejte se na novinky ve Službě Azure VM Image Builder pro všechny hlavní změny rozhraní API a aktualizace funkcí pro službu Azure VM Image Builder.

Typ

Jedná se type o typ prostředku, který musí být Microsoft.VirtualMachineImages/imageTemplates.

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

Umístění

Umístění je oblast, ve které je vytvořena vlastní image. Podporují se následující oblasti:

  • East US
  • USA – východ 2
  • Středozápad USA
  • USA – západ
  • Západní USA 2
  • USA – západ 3
  • Středojižní USA
  • Severní Evropa
  • West Europe
  • Jihovýchodní Asie
  • Austrálie – jihovýchod
  • Austrálie – východ
  • Spojené království – jih
  • Spojené království – západ
  • Brazílie – jih
  • Střední Kanada
  • Indie – střed
  • USA – střed
  • Francie – střed
  • Německo – středozápad
  • Japonsko – východ
  • USA – středosever
  • Norsko – východ
  • Švýcarsko – sever
  • Jio – západní Indie
  • Spojené arabské emiráty – sever
  • Východní Asie
  • Jižní Korea – střed
  • Jižní Afrika – sever
  • Střední Katar
  • USGov Arizona (Public Preview)
  • USGov Virginia (Public Preview)
  • Čína – sever 3 (Public Preview)
  • Švédsko – střed
  • Střední Polsko
  • Itálie - sever
  • Izrael - střed

Důležité

Zaregistrujte funkci Microsoft.VirtualMachineImages/FairfaxPublicPreview pro přístup k veřejné verzi Preview Azure Image Builderu v oblastech Azure Government (USGov Arizona a USGov Virginia).

Důležité

Zaregistrujte funkci Microsoft.VirtualMachineImages/MooncakePublicPreview pro přístup k veřejné verzi Preview Azure Image Builderu v oblasti Čína – sever 3.

Pokud chcete získat přístup k veřejné verzi Preview nástroje Azure VM Image Builder v oblastech Azure Government (USGov Arizona a USGov Virginia), musíte zaregistrovat funkci Microsoft.VirtualMachineImages/FairfaxPublicPreview . Uděláte to tak, že v PowerShellu nebo Azure CLI spustíte následující příkaz:

Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name FairfaxPublicPreview

Pokud chcete získat přístup k veřejné verzi Preview Image Builderu virtuálního počítače Azure v oblasti Čína – sever 3, musíte zaregistrovat funkci Microsoft.VirtualMachineImages/MooncakePublicPreview . Uděláte to tak, že v PowerShellu nebo Azure CLI spustíte následující příkaz:

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

Umístění dat

Služba Azure VM Image Builder neukládá ani nezpracuje zákaznická data mimo oblasti, které mají přísné požadavky na rezidenci dat v jedné oblasti, když zákazník požádá o sestavení v dané oblasti. Pokud dojde k výpadku služby pro oblasti, které mají požadavky na rezidenci dat, musíte vytvořit soubory nebo šablony Bicep v jiné oblasti a zeměpisné oblasti.

Zónová redundance

Distribuce podporuje redundanci zón, virtuální pevné disky se ve výchozím nastavení distribuují do účtu zónově redundantního úložiště (ZRS) a verze Galerie výpočetních prostředků Azure (dříve označovaná jako Sdílená galerie imagí) bude v případě potřeby podporovat typ úložiště ZRS.

Značky

Značky jsou páry klíč/hodnota, které můžete zadat pro vygenerovanou image.

Identita

Níže jsou vysvětlené dva způsoby přidání identit přiřazených uživatelem.

Identita přiřazená uživatelem pro prostředek šablony image Azure Image Builderu

Povinné – Aby Image Builder měl oprávnění ke čtení a zápisu imagí a číst ve skriptech ze služby Azure Storage, musíte vytvořit identitu přiřazenou uživatelem Azure, která má oprávnění k jednotlivým prostředkům. Podrobnosti o tom, jak fungují oprávnění Image Builderu, a relevantní kroky najdete v tématu Vytvoření image a použití spravované identity přiřazené uživatelem pro přístup k souborům v účtu úložiště Azure.

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

Identita přiřazená uživatelem služby Image Builder:

  • Podporuje pouze jednu identitu.
  • Nepodporuje vlastní názvy domén.

Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure? Další informace o nasazení této funkce najdete v tématu Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači Azure pomocí Azure CLI.

Identita přiřazená uživatelem pro virtuální počítač sestavení Image Builderu

Tato vlastnost je k dispozici pouze ve verzích rozhraní API nebo novějších verzích 2021-10-01 .

Volitelné – Virtuální počítač sestavení Image Builderu vytvořený službou Image Builder ve vašem předplatném se používá k sestavení a přizpůsobení image. Aby měl virtuální počítač sestavení Image Builderu oprávnění k ověřování s jinými službami, jako je Azure Key Vault ve vašem předplatném, musíte vytvořit jednu nebo více identit přiřazených uživatelem Azure, které mají oprávnění k jednotlivým prostředkům. Azure Image Builder pak může tyto identity přiřazené uživatelem přidružit k virtuálnímu počítači sestavení. Skripty úpravce spuštěné uvnitř virtuálního počítače sestavení pak můžou načíst tokeny pro tyto identity a podle potřeby pracovat s dalšími prostředky Azure. Mějte na paměti, že identita přiřazená uživatelem pro Azure Image Builder musí mít přiřazenou roli Operátor spravované identity pro všechny identity přiřazené uživatelem pro Azure Image Builder, aby je bylo možné přidružit k virtuálnímu počítači sestavení.

Poznámka:

Mějte na paměti, že pro virtuální počítač sestavení Image Builderu je možné zadat více identit, včetně identity, kterou jste vytvořili pro prostředek šablony image. Ve výchozím nastavení se identita, kterou jste vytvořili pro prostředek šablony image, automaticky nepřidá do virtuálního počítače sestavení.

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

Identita přiřazená uživatelem přiřazená nástrojem Image Builder:

  • Podporuje seznam jedné nebo více spravovaných identit přiřazených uživatelem, které se mají na virtuálním počítači nakonfigurovat.
  • Podporuje scénáře napříč předplatnými (identita vytvořená v jednom předplatném, zatímco šablona image je vytvořená v jiném předplatném ve stejném tenantovi).
  • Nepodporuje scénáře napříč tenanty (identita vytvořená v jednom tenantovi při vytváření šablony image v jiném tenantovi).

Další informace najdete v následujících tématech:

Vlastnosti: buildTimeoutInMinutes

Maximální doba čekání při sestavování šablony obrázku (zahrnuje všechna přizpůsobení, ověření a distribuce).

Pokud nezadáte vlastnost nebo nastavíte hodnotu na 0, použije se výchozí hodnota, což je 240 minut nebo čtyři hodiny. Minimální hodnota je 6 minut a maximální hodnota je 960 minut nebo 16 hodin. Když dojde k dosažení hodnoty časového limitu (jestli je sestavení image dokončené, zobrazí se chyba podobná této:

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

Pro Windows nedoporučujeme nastavení buildTimeoutInMinutes nižší než 60 minut. Pokud zjistíte, že dochází k vypršení časového limitu, zkontrolujte protokoly a zkontrolujte, jestli krok přizpůsobení čeká na něco, jako je vstup uživatele. Pokud zjistíte, že potřebujete více času na dokončení přizpůsobení, zvyšte buildTimeoutInMinutes hodnotu. Nenastavujte ho ale příliš vysoko, protože možná budete muset počkat na vypršení časového limitu, než se zobrazí chyba.

Vlastnosti: přizpůsobení

Image Builder podporuje několik úpravců, což jsou funkce používané k přizpůsobení image, například spouštění skriptů nebo restartování serverů.

Při použití customize:

  • Můžete použít více úpravce.
  • Vlastníci se provádějí v pořadí uvedeném v šabloně.
  • Pokud jeden úpravce selže, celá komponenta přizpůsobení se nezdaří a nahlásí chybu.
  • Před použitím v šabloně skripty důkladně otestujte. Ladění skriptů sami je jednodušší.
  • Nevkládejte citlivá data do skriptů. Vložené příkazy lze zobrazit v definici šablony obrázku. Pokud máte citlivé informace (včetně hesel, tokenu SAS, ověřovacích tokenů atd.), měli byste je přesunout do skriptů ve službě Azure Storage, kde přístup vyžaduje ověření.
  • Umístění skriptů musí být veřejně přístupná, pokud nepoužíváte MSI.

Oddíl customize je pole. Podporované typy úpravce jsou: File, PowerShell, Shell, WindowsRestart a 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"
  }
]

Úpravce prostředí

Úpravce Shell podporuje spouštění skriptů prostředí v Linuxu. Skripty prostředí musí být veřejně přístupné nebo musíte mít nakonfigurovanou MSI pro Image Builder pro přístup k nim.

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

Přizpůsobit vlastnosti:

  • type – Shell.

  • name – název pro sledování vlastního nastavení.

  • scriptUri – identifikátor URI pro umístění souboru.

  • vložený – pole příkazů prostředí oddělené čárkami.

  • sha256Checksum – hodnota kontrolního součtu sha256 souboru, vygenerujete tuto hodnotu místně a Pak Image Builder zkontroluje kontrolní součet a ověří.

    Pokud chcete vygenerovat sha256Checksum, spusťte pomocí terminálu na Macu nebo Linuxu: sha256sum <fileName>

Poznámka:

Vložené příkazy se ukládají jako součást definice šablony obrázku. Tyto příkazy můžete vidět při výpisu definice obrázku. Pokud máte citlivé příkazy nebo hodnoty (včetně hesel, tokenu SAS, ověřovacích tokenů atd.), doporučujeme je přesunout do skriptů a použít identitu uživatele k ověření ve službě Azure Storage.

Oprávnění superuživatele

Předpona příkazů, sudo kterými je spustíte s oprávněními superuživatele. Příkazy můžete přidat do skriptů nebo použít vložené příkazy, například:

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

Příklad skriptu používajícího sudo, na který můžete odkazovat pomocí scriptUri:

#!/bin/bash -e

echo "Telemetry: creating files"
mkdir /myfiles

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

Úpravce restartování Windows

Úpravce WindowsRestart umožňuje restartovat virtuální počítač s Windows a počkat, až se virtuální počítač vrátí do online režimu. Tento úpravce vám umožní nainstalovat software, který vyžaduje restartování.

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

Přizpůsobit vlastnosti:

  • Typ: WindowsRestart.
  • restartCommand – příkaz pro spuštění restartování (volitelné). Výchozí hodnota je 'shutdown /r /f /t 0 /c \"packer restart\"'.
  • restartCheckCommand – příkaz, který zkontroluje, jestli restartování proběhlo úspěšně (volitelné).
  • restartTimeout – Časový limit restartování zadaný jako řetězec velikosti a jednotky Například 5m (5 minut) nebo 2h (2 hodiny). Výchozí hodnota je: 5m.

Poznámka:

Neexistuje žádný úpravce restartování Linuxu.

Úpravce PowerShellu

Úpravce PowerShell podporuje spouštění skriptů PowerShellu a vložených příkazů ve Windows, aby k nim měl ib přístup veřejně.

"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>
  }
]

Přizpůsobit vlastnosti:

  • type – PowerShell.

  • scriptUri – identifikátor URI pro umístění souboru skriptu PowerShellu.

  • vložené – vložené příkazy, které se mají spouštět, oddělené čárkami.

  • validExitCodes – Volitelné platné kódy , které lze vrátit z příkazu script/inline. Tato vlastnost zabraňuje nahlášenému selhání skriptu nebo vloženého příkazu.

  • runElevated – Volitelné, logická hodnota, podpora spouštění příkazů a skriptů se zvýšenými oprávněními

  • runAsSystem – Nepovinná logická hodnota určuje, jestli se má skript PowerShellu spustit jako uživatel systému.

  • sha256Checksum – generování kontrolního součtu SHA256 souboru místně, aktualizace hodnoty kontrolního součtu na malá písmena a Image Builder ověří kontrolní součet během nasazování šablony image.

    K vygenerování sha256Checksum použijte rutinu Get-FileHash v PowerShellu.

Úpravce souborů

Úpravce File umožňuje Image Builderu stáhnout soubor z úložiště GitHub nebo úložiště Azure. Úpravce podporuje Linux i Windows. Pokud máte kanál buildu image, který spoléhá na artefakty sestavení, můžete nastavit úpravce souborů tak, aby se stáhl ze sdílené složky sestavení, a přesunout artefakty do image.

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

Vlastnosti úpravce souboru:

  • sourceUri – přístupný koncový bod úložiště, tento koncový bod může být GitHub nebo Úložiště Azure. Můžete stáhnout jenom jeden soubor, ne celý adresář. Pokud potřebujete stáhnout adresář, použijte komprimovaný soubor a pak ho dekomprimujte pomocí úpravce prostředí nebo PowerShellu.

    Poznámka:

    Pokud je zdrojový identifikátorURI účtem služby Azure Storage bez ohledu na to, jestli je objekt blob označený jako veřejný, budete muset udělit oprávnění spravované identity uživatele pro čtení přístupu k objektu blob. Podívejte se na tento příklad a nastavte oprávnění k úložišti.

  • destination – úplná cílová cesta a název souboru. Všechny odkazované cesty a podadresáře musí existovat, k nastavení těchto cest předem použijte úpravce prostředí nebo PowerShellu. K vytvoření cesty můžete použít úpravce skriptu.

Tento úpravce podporuje adresáře Windows a linuxové cesty, ale existují některé rozdíly:

  • Linux – jediná cesta, do které může tvůrce image zapisovat, je /tmp.
  • Windows – Žádné omezení cesty, ale cesta musí existovat.

Pokud dojde k chybě při pokusu o stažení souboru nebo vložení souboru do zadaného adresáře, krok přizpůsobení se nezdaří a tato chyba se zobrazí v customization.log.

Poznámka:

Úpravce souborů je vhodný pouze pro malé soubory ke stažení, < 20 MB. Pro větší soubory ke stažení použijte skript nebo vložený příkaz a pak pomocí kódu stáhněte soubory, jako je Linux wget nebo curl, Windows, Invoke-WebRequest. V případě souborů, které jsou v úložišti Azure, se ujistěte, že přiřadíte identitu s oprávněními k zobrazení tohoto souboru k virtuálnímu počítači sestavení pomocí této dokumentace: Identita přiřazená uživatelem pro virtuální počítač sestavení Image Builderu. Všechny soubory, které nejsou uložené v Azure, musí být veřejně přístupné pro Azure Image Builder, aby ho bylo možné stáhnout.

  • sha256Checksum – generování kontrolního součtu SHA256 souboru místně, aktualizace hodnoty kontrolního součtu na malá písmena a Image Builder ověří kontrolní součet během nasazování šablony image.

    K vygenerování sha256Checksum použijte rutinu Get-FileHash v PowerShellu.

Úpravce služby Windows Update

Úpravce WindowsUpdate vychází z komunity služba Windows Update Provisioner for Packer, což je opensourcový projekt spravovaný komunitou Packeru. Microsoft testuje a ověřuje zřizovací nástroj pomocí služby Image Builder a bude podporovat vyšetřování problémů a bude pracovat na řešení problémů, ale open source projekt microsoft oficiálně nepodporuje. Podrobnou dokumentaci ke službě služba Windows Update Provisioner a pomoc s tím, jak ji najdete v úložišti projektu.

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

Vlastnosti úpravce:

  • type – WindowsUpdate.
  • searchCriteria – Volitelné, definuje, který typ aktualizací se instaluje (například Doporučené nebo Důležité), BrowseOnly=0 a IsInstalled=0 (doporučeno) je výchozí hodnota.
  • filtry – Volitelné, umožňuje zadat filtr, který má zahrnout nebo vyloučit aktualizace.
  • updateLimit – Volitelné, definuje, kolik aktualizací lze nainstalovat, výchozí 1000.

Poznámka:

Úpravce služba Windows Update může selhat, pokud jsou stále spuštěné nějaké nevyřízených restartování systému Windows nebo instalace aplikací, obvykle se může zobrazit tato chyba v customization.log, System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016. Důrazně doporučujeme přidat do restartování systému Windows nebo povolit aplikacím dostatek času na dokončení instalace pomocí příkazů režimu spánku nebo čekání v vložených příkazech nebo skriptech před spuštěním služba Windows Update.

Zobecnit

Azure Image Builder ve výchozím nastavení také spustí deprovision kód na konci každé fáze přizpůsobení image, aby se image zobecněla. Generalizace je proces, ve kterém je image nastavená, takže ji můžete znovu použít k vytvoření několika virtuálních počítačů. Azure Image Builder pro virtuální počítače s Windows používá nástroj Sysprep. Pro Linux běží waagent -deprovisionAzure Image Builder .

Příkazy, které uživatelé Image Builderu zobecní, nemusí být vhodné pro každou situaci, takže Azure Image Builder umožňuje v případě potřeby tento příkaz přizpůsobit.

Pokud migrujete existující vlastní nastavení a používáte různé příkazy Sysprep/waagent, můžete použít obecné příkazy Image Builderu a pokud se vytvoření virtuálního počítače nezdaří, použijte vlastní příkazy Sysprep nebo waagent.

Pokud Azure Image Builder úspěšně vytvoří vlastní image Windows a vy z něj vytvoříte virtuální počítač, zjistíte, že vytvoření virtuálního počítače selže nebo se úspěšně nedokončí, musíte si projít dokumentaci k nástroji Sysprep pro Windows Server nebo vytvořit žádost o podporu s týmem podpory zákaznických služeb pro Windows Server, který může řešit potíže a poradit se správným využitím nástroje Sysprep.

Výchozí příkaz 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 ...'

Výchozí příkaz pro zrušení zřízení Linuxu

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

Přepsání příkazů

Pokud chcete příkazy přepsat, pomocí zřizovacích skriptů PowerShellu nebo prostředí vytvořte soubory příkazů s přesným názvem souboru a vložte je do správných adresářů:

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

Image Builder přečte tyto příkazy, tyto příkazy se zapisují do protokolů AIB . customization.log Podívejte se na řešení potíží s tím, jak shromažďovat protokoly.

Vlastnosti: errorHandling

Tato errorHandling vlastnost umožňuje nakonfigurovat způsob zpracování chyb během vytváření image.

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

Tato errorHandling vlastnost umožňuje nakonfigurovat způsob zpracování chyb během vytváření image. Má dvě vlastnosti:

  • onCustomizerError – Určuje akci, která se má provést, když dojde k chybě během fáze úpravce image.
  • onValidationError – Určuje akci, která se má provést, když dojde k chybě při ověřování šablony obrázku.

Vlastnost errorHandling má také dvě možné hodnoty pro zpracování chyb při vytváření image:

  • vyčištění – zajišťuje, aby se dočasné prostředky vytvořené packerem vyčistily i v případě, že v packeru nebo některém z přizpůsobení a ověření dojde k chybě. Tím se zachová zpětná kompatibilita s existujícím chováním.
  • abort – V případě, že packer narazí na chybu, služba Azure Image Builder (AIB) přeskočí vyčištění dočasných prostředků. Jako vlastník šablony AIB zodpovídáte za vyčištění těchto prostředků z vašeho předplatného. Tyto prostředky můžou obsahovat užitečné informace, jako jsou protokoly a soubory, které zůstaly na dočasném virtuálním počítači, což může pomoct při zkoumání chyby, ke které došlo nástrojem Packer.

Vlastnosti: distribuce

Azure Image Builder podporuje tři distribuční cíle:

  • ManagedImage – spravovaná image
  • sharedImage – Galerie výpočetních prostředků Azure
  • VHD – VHD v účtu úložiště.

Image můžete distribuovat oběma cílovým typům ve stejné konfiguraci.

Poznámka:

Výchozí příkaz sysprep AIB neobsahuje příkaz /mode:vm, ale tato vlastnost se může vyžadovat při vytváření imagí, které budou mít nainstalovanou roli HyperV. Pokud potřebujete přidat tento argument příkazu, musíte přepsat příkaz sysprep.

Vzhledem k tomu, že můžete distribuovat více než jeden cíl, Image Builder udržuje stav pro každý cíl distribuce, ke kterému je možné získat přístup pomocí dotazu runOutputName. Jedná se runOutputName o objekt, na který se můžete dotazovat po distribuci informací o této distribuci. Můžete se například dotazovat na umístění virtuálního pevného disku nebo oblastí, do kterých byla verze image replikována, nebo na vytvořenou verzi image SIG. Toto je vlastnost každého distribučního cíle. Musí runOutputName být jedinečný pro každý cíl distribuce. Tady je příklad pro dotazování distribuce galerie výpočetních prostředků Azure:

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

Výstup:

{
  "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"
}

Distribuce: managedImage

Výstupem image je prostředek spravované image.

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

Distribuovat vlastnosti:

  • type – ManagedImage
  • imageId – ID prostředku cílové image, očekávaný formát: /subscriptions/<subscriptionId>/resourceGroups/<destinationResourceGroupName>/providers/Microsoft.Compute/images/<imageName>
  • umístění – umístění spravované image.
  • runOutputName – jedinečný název pro identifikaci distribuce.
  • artifactTags – Volitelné značky klíč\hodnota zadané uživatelem

Poznámka:

Cílová skupina prostředků musí existovat. Pokud chcete, aby se image distribuoval do jiné oblasti, zvýší se doba nasazení.

Distribuce: sharedImage

Galerie výpočetních prostředků Azure je nová služba správy imagí, která umožňuje správu replikace oblasti image, správy verzí a sdílení vlastních imagí. Azure Image Builder podporuje distribuci s touto službou, takže můžete distribuovat image do oblastí podporovaných galeriemi Azure Compute.

Galerie výpočetních prostředků Azure se skládá z:

  • Galerie – Kontejner pro více imagí Galerie se nasadí v jedné oblasti.
  • Definice obrázků – koncepční seskupení obrázků.
  • Verze imagí – typ image používaný k nasazení virtuálního počítače nebo škálovací sady. Verze imagí je možné replikovat do jiných oblastí, kde je potřeba nasadit virtuální počítače.

Než budete moct distribuovat galerii do galerie, musíte vytvořit galerii a definici obrázku, viz Vytvoření galerie.

Poznámka:

ID verze image musí být odlišné nebo odlišné od všech verzí imagí, které jsou v existující galerii výpočetních prostředků Azure.

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

Následující JSON je příkladem replicationRegions použití pole k distribuci do Galerie výpočetních prostředků Azure.

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

Poznámka:

replicationRegions je zastaralý pro distribuce galerie tak, jak targetRegions je aktualizovaná vlastnost. Další informace naleznete v tématu cílové oblasti.

Distribuce: cílové oblasti

Následující JSON je příkladem použití pole TargetRegions k distribuci do galerie výpočetních prostředků Azure.

"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"
             }
          ]
       },
    ]

Distribuce vlastností pro galerie:

  • type – sharedImage

  • galleryImageId – ID galerie výpočetních prostředků Azure, tuto vlastnost je možné zadat ve dvou formátech:

    • Automatická správa verzí – Image Builder vygeneruje monotónní číslo verze za vás, tato vlastnost je užitečná, pokud chcete zachovat opětovné sestavení obrázků ze stejné šablony: Formát je: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName>.
    • Explicitní správa verzí – Můžete předat číslo verze, které má tvůrce obrázků použít. Formát je následující: /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>/versions/<version - for example: 1.1.1>
  • runOutputName – jedinečný název pro identifikaci distribuce.

  • artifactTags – volitelné značky klíč\hodnota zadané uživatelem.

  • replicationRegions – pole oblastí pro replikaci. Jednou z oblastí musí být oblast, ve které je galerie nasazená. Přidání oblastí znamená zvýšení doby sestavení, protože sestavení se nedokončí, dokud se replikace nedokončí. Toto pole je zastaralé jako rozhraní API verze 2022-07-01, použijte targetRegions ho při distribuci typu SharedImage.

  • targetRegions – pole oblastí pro replikaci. Nově se zavádí jako součást rozhraní API 2022-07-01 a vztahuje se pouze na SharedImage distribuci typu.

  • excludeFromLatest (volitelné) – umožňuje označit verzi image, kterou vytvoříte, nebude použita jako nejnovější verze v definici galerie, výchozí hodnota je false.

  • storageAccountType (volitelné) – AIB podporuje zadání těchto typů úložiště pro verzi image, která se má vytvořit:

    • "Standard_LRS"
    • "Standard_ZRS",

Poznámka:

Pokud šablona obrázku a odkazované image definition nejsou ve stejném umístění, uvidíte další čas k vytvoření imagí. Image Builder v současné době nemá location parametr pro prostředek verze image, vezmeme ho z nadřazeného objektu image definition. Pokud je například definice image a westus chcete, aby se verze image replikovala do eastusobjektu blob westus, vytvoří se prostředek westus verze image a pak se replikuje do eastus. Pokud se chcete vyhnout dodatečnému času replikace, ujistěte se, že image definition šablona a šablona image jsou ve stejném umístění.

správa verzí

Vlastnost správy verzí je určena sharedImage pouze pro typ distribuce. Jedná se o výčet se dvěma možnými hodnotami:

  • nejnovější – nové přísně rostoucí schéma na návrh
  • source – Schéma na základě čísla verze zdrojové image.

Výchozí schéma číslování verzí je latest. Nejnovější schéma má další vlastnost , "major", která určuje hlavní verzi, pod kterou se má vygenerovat nejnovější verze.

Poznámka:

Existující logika generování verzí pro sharedImage distribuci je zastaralá. K dispozici jsou dvě nové možnosti: monotonicky rostoucí verze, které jsou vždy nejnovější verzí v galerii, a verze generované na základě čísla verze zdrojové image. Výčet určující schéma generování verzí umožňuje rozšíření v budoucnu pomocí dalších schémat generování verzí.

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

vlastnosti správy verzí:

  • schéma – vygeneruje nové číslo verze pro distribuci. Latest nebo Source jsou dvě možné hodnoty.
  • major – Určuje hlavní verzi, pod kterou se má vygenerovat nejnovější verze. Platí pouze v případě, že je nastavena scheme na Latesthodnotu . Například v galerii s následujícími publikovanými verzemi: 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
    • V případě, že hlavní hodnota není nastavena na hodnotu 2, vygeneruje Latest schéma verzi 2.1.1.
    • Pokud je hlavní hodnota nastavená na 1, vygeneruje nejnovější schéma verzi 1.2.1.
    • Pokud je hlavní hodnota nastavená na 0, vygeneruje nejnovější schéma verzi 0.1.3.

Distribuce: VHD

Výstup můžete provést do virtuálního pevného disku. Pak můžete zkopírovat virtuální pevný disk a použít ho k publikování na Azure MarketPlace nebo použít se službou Azure Stack.

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

Podpora operačního systému: Windows a Linux

Distribuce parametrů virtuálního pevného disku:

  • type - VHD.
  • runOutputName – jedinečný název pro identifikaci distribuce.
  • tags – Volitelné značky páru klíč-hodnota zadané uživatelem.

Azure Image Builder neumožňuje uživateli zadat umístění účtu úložiště, ale můžete zadat dotaz na stav runOutputs získání umístění.

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

Poznámka:

Po vytvoření virtuálního pevného disku ho co nejdříve zkopírujte do jiného umístění. Virtuální pevný disk je uložený v účtu úložiště v dočasné skupině prostředků vytvořené při odeslání šablony image do služby Azure Image Builder. Pokud šablonu image odstraníte, ztratíte virtuální pevný disk.

Následující JSON distribuuje image jako virtuální pevný disk do vlastního účtu úložiště.

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

Distribuujte vlastnosti virtuálního pevného disku:

Identifikátor URI – Volitelný identifikátor URI služby Azure Storage pro distribuovaný objekt blob virtuálního pevného disku Vynecháte použití výchozího (prázdného řetězce), v takovém případě se virtuální pevný disk publikuje do účtu úložiště v pracovní skupině prostředků.

Vlastnosti: optimalizace

Vlastnost optimize lze povolit při vytváření image virtuálního počítače a umožňuje optimalizaci virtuálního počítače zlepšit dobu vytváření imagí.

"optimize": {
      "vmBoot": {
        "state": "Enabled"
      }
    }
  • vmBoot: Konfigurace související s procesem spouštění virtuálního počítače, která slouží k řízení optimalizací, které můžou zlepšit dobu spouštění nebo jiné aspekty výkonu.
  • stav: Stav funkce optimalizace spouštění v rámci vmBoot, s hodnotou Enabled označující, že je tato funkce zapnuta, aby se zlepšil čas vytvoření image.

Další informace najdete v tématu Optimalizace virtuálních počítačů pro image galerie pomocí Azure VM Image Builderu.

Vlastnosti: zdroj

Tato source část obsahuje informace o zdrojové imagi, kterou bude tvůrce image používat. Azure Image Builder podporuje jako zdrojové image jenom generalizované image, specializované image se v tuto chvíli nepodporují.

Rozhraní API vyžaduje SourceType , aby definovalo zdroj sestavení image, v současné době existují tři typy:

  • PlatformImage – značí, že zdrojová image je image Marketplace.
  • ManagedImage – používá se při spouštění z běžné spravované image.
  • SharedImageVersion – používá se při použití verze image v galerii azure Compute jako zdroj.

Poznámka:

Při použití existujících vlastních imagí Systému Windows můžete spustit příkaz Sysprep až třikrát na jedné imagi systému Windows 7 nebo Windows Server 2008 R2 nebo 1001krát na jedné imagi Systému Windows pro novější verze; Další informace naleznete v dokumentaci nástroje Sysprep .

Zdroj platformy PlatformImage

Azure Image Builder podporuje image Windows Serveru a klienta a Linuxu Azure Marketplace. Úplný seznam najdete v tématu Další informace o Azure Image Builderu .

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

Vlastnosti jsou stejné, jaké se používají k vytvoření virtuálního počítače pomocí AZ CLI, spuštěním následujícího příkazu získejte vlastnosti:

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

Ve verzi můžete použít latest verzi, která se vyhodnotí, když se sestavení image provede, ne při odeslání šablony. Pokud použijete tuto funkci s cílem Galerie výpočtů Azure, můžete se vyhnout opětovnému odeslání šablony a opětovnému spuštění sestavení image v intervalech, aby se image znovu vytvořily z nejnovějších imagí.

Podpora informací o plánu trhu

Můžete také zadat informace o plánu, například:

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

Zdroj ManagedImage

Nastaví zdrojovou image jako existující spravovanou image generalizovaného virtuálního pevného disku nebo virtuálního počítače.

Poznámka:

Zdrojová spravovaná image musí mít podporovaný operační systém a image se musí nacházet ve stejném předplatném a oblasti jako šablona Azure Image Builderu.

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

Mělo imageId by to být ResourceId spravované image. Slouží az image list k výpisu dostupných imagí.

Zdroj SharedImageVersion

Nastaví zdrojovou image jako existující verzi image v Galerii výpočetních prostředků Azure.

Poznámka:

Verze zdrojové sdílené image musí mít podporovaný operační systém a verze image se musí nacházet ve stejné oblasti jako vaše šablona Azure Image Builderu, pokud ne, replikuje verzi image do oblasti šablony Image Builderu.

"source": {
  "type": "SharedImageVersion",
  "imageVersionId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>"
}
  • imageVersionId – ID prostředku šablony ARM verze image. Pokud je název verze image "latest", vyhodnotí se verze při sestavení image. Měla imageVersionId by to být ResourceId verze image. K výpisu verzí imagí použijte příkaz az sig image-version list .

Následující KÓD JSON nastaví zdrojovou image jako obrázek uložený v přímé sdílené galerii.

Poznámka:

Přímá sdílená galerie je aktuálně ve verzi Preview.

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

Následující kód JSON nastaví zdrojovou image jako nejnovější verzi image pro image uloženou v Galerii výpočetních prostředků Azure.

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

SharedImageVersion – vlastnosti:

imageVersionId – ID prostředku šablony ARM verze image. Pokud je název verze image "latest", verze se vyhodnotí, když se sestavení image provede.

Vlastnosti: stagingResourceGroup

Tato stagingResourceGroup vlastnost obsahuje informace o pracovní skupině prostředků, kterou služba Image Builder vytvoří pro použití během procesu sestavení image. Jedná se stagingResourceGroup o volitelnou vlastnost pro každého, kdo chce mít větší kontrolu nad skupinou prostředků vytvořenou nástrojem Image Builder během procesu sestavení image. Můžete vytvořit vlastní skupinu prostředků a zadat ji v oddílu stagingResourceGroup nebo nechat Tvůrce obrázků vytvořit ji vaším jménem.

Důležité

Zadaná pracovní skupina prostředků nemůže být přidružená k jiné šabloně image, musí být prázdná (žádné prostředky uvnitř), ve stejné oblasti jako šablona obrázku a musí mít přiřazenou identitu přiřazenou k prostředku šablony image Azure Image Builderu.

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

Scénáře vytváření šablon

  • Vlastnost stagingResourceGroup je ponechána prázdná.

    stagingResourceGroup Pokud vlastnost není zadaná nebo zadaná prázdným řetězcem, služba Image Builder vytvoří přípravnou skupinu prostředků s výchozí konvencí názvu "IT_***". Přípravná skupina prostředků má použité výchozí značky: createdBy, imageTemplateName, imageTemplateResourceGroupName. Výchozí RBAC se také použije na identitu přiřazenou k prostředku šablony Azure Image Builderu, což je přispěvatel.

  • Vlastnost stagingResourceGroup se zadává se skupinou prostředků, která existuje.

    stagingResourceGroup Pokud je vlastnost zadaná se skupinou prostředků, která existuje, služba Image Builder zkontroluje, jestli není přidružená k jiné šabloně obrázku, je prázdná (žádné prostředky uvnitř), ve stejné oblasti jako šablona obrázku a má u identity přiřazené k prostředku šablony image Azure Image Builderu použité RBAC přispěvatele nebo vlastníka. Pokud některý z výše uvedených požadavků není splněn, vyvolá se chyba. Pracovní skupina prostředků má do ní přidané následující značky: usedBy, imageTemplateName, imageTemplateResourceGroupName. Existující značky se neodstraní.

Důležité

Roli přispěvatele musíte přiřadit skupině prostředků pro instanční objekt odpovídající aplikaci první strany Azure Image Builderu při pokusu o zadání existující skupiny prostředků a virtuální sítě do služby Azure Image Builder se zdrojovou imagí Windows. Pokyny k přiřazení role přispěvatele ke skupině prostředků v příkazovém řádku a portálu najdete v následující dokumentaci : Řešení potíží s nástrojem Azure Image Builder pro virtuální počítače: Chyba autorizace při vytváření disku

  • Vlastnost stagingResourceGroup je zadaná se skupinou prostředků, která neexistuje.

    stagingResourceGroup Pokud je vlastnost zadána se skupinou prostředků, která neexistuje, služba Image Builder vytvoří pracovní skupinu prostředků s názvem zadaným ve stagingResourceGroup vlastnosti. Pokud daný název nesplňuje požadavky na pojmenování Azure pro skupiny prostředků, dojde k chybě. Přípravná skupina prostředků má použité výchozí značky: createdBy, imageTemplateName, imageTemplateResourceGroupName. Identita přiřazená k prostředku šablony image Azure Image Builderu má ve skupině prostředků ve výchozím nastavení použitý RBAC přispěvatele.

Odstranění šablony

Po odstranění šablony obrázku se odstraní jakákoli pracovní skupina prostředků vytvořená službou Image Builder. Odstranění zahrnuje přípravné skupiny prostředků, které byly zadány ve stagingResourceGroup vlastnosti, ale neexistují před sestavením image.

Pokud Image Builder nevytvořil přípravnou skupinu prostředků, ale prostředky uvnitř skupiny prostředků se po odstranění šablony image odstraní, protože služba Image Builder má příslušná oprávnění nebo roli potřebnou k odstranění prostředků.

Vlastnosti: ověření

Vlastnost můžete použít validate k ověření imagí platformy a všech přizpůsobených imagí, které vytvoříte bez ohledu na to, jestli jste k jejich vytvoření použili Azure Image Builder.

Azure Image Builder podporuje režim Jen pro ověření zdroje, který lze nastavit pomocí sourceValidationOnly vlastnosti. sourceValidationOnly Pokud je vlastnost nastavena na true, image zadaná v oddílu source bude přímo ověřena. K vygenerování a ověření přizpůsobené image se nespustí žádné samostatné sestavení.

Vlastnost inVMValidations přebírá seznam validátorů, které budou provedeny na imagi. Azure Image Builder podporuje validátory file, PowerShell a Shell.

Tato continueDistributeOnFailure vlastnost je zodpovědná za to, jestli se výstupní image distribuují, pokud se ověření nezdaří. Pokud se ověření nezdaří a tato vlastnost je nastavená na false, výstupní image se nebudou distribuovat. Pokud se ověření nezdaří a tato vlastnost je nastavená na true, výstupní image se budou dál distribuovat. Tuto možnost používejte s opatrností, protože může vést k distribuci neúspěšných imagí pro použití. V oboupřípadechch Tato vlastnost nemá žádný vliv na to, zda je ověření úspěšné nebo ne.

Při použití validate:

  • Můžete použít více validátorů.
  • Validátory se provádějí v pořadí uvedeném v šabloně.
  • Pokud jeden validátor selže, celá ověřovací komponenta se nezdaří a nahlásí chybu.
  • Než skript použijete v šabloně, doporučujeme ho důkladně otestovat. Ladění skriptu na vlastním virtuálním počítači bude jednodušší.
  • Nevkládejte citlivá data do skriptů.
  • Umístění skriptů musí být veřejně přístupná, pokud nepoužíváte MSI.

validate Použití vlastnosti k ověření imagí Windows:

{
   "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 vlastnosti:

  • type – PowerShell.

  • name – název validátoru

  • scriptUri – identifikátor URI souboru skriptu PowerShellu.

  • vložený – pole příkazů, které se mají spustit, oddělené čárkami.

  • validExitCodes – Volitelné platné kódy , které lze vrátit z příkazu script/inline, zabrání se nahlášenému selhání skriptu nebo vloženého příkazu.

  • runElevated – Volitelné, logická hodnota, podpora spouštění příkazů a skriptů se zvýšenými oprávněními

  • sha256Checksum – hodnota kontrolního součtu sha256 souboru, vygenerujete ho místně a pak Image Builder zkontroluje a ověří.

    Generování sha256Checksum pomocí PowerShellu ve Windows Get-Hash

Použití vlastnosti k ověření imagí Linuxu validate :

{
  "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 vlastnosti:

  • type – Prostředí nebo soubor zadaný jako typ ověření, který se má provést.

  • name – název validátoru

  • scriptUri – identifikátor URI souboru skriptu

  • vložený – pole příkazů, které se mají spouštět, oddělené čárkami.

  • sha256Checksum – hodnota kontrolního součtu sha256 souboru, vygenerujete ho místně a pak Image Builder zkontroluje a ověří.

    Pokud chcete vygenerovat sha256Checksum, spusťte pomocí terminálu na Macu nebo Linuxu: sha256sum <fileName>

  • destination - Destination of the file.

  • sha256Checksum – určuje kontrolní součet SHA256 souboru.

  • sourceUri – zdrojový identifikátor URI souboru.

Vlastnosti: vmProfile

vmSize (volitelné)

Image Builder používá výchozí velikost skladové Standard_D1_v2 položky pro image Gen1 a Standard_D2ds_v4 pro image Gen2. Generování je definováno obrázkem, který zadáte v souboru source. VmSize můžete přepsat z těchto důvodů:

  • Provádění přizpůsobení, která vyžadují zvýšenou paměť, procesor a zpracování velkých souborů (GB).
  • Pokud používáte buildy Windows, měli byste použít Standard_D2_v2 nebo ekvivalentní velikost virtuálního počítače.
  • Vyžaduje izolaci virtuálního počítače.
  • Přizpůsobte image, která vyžaduje konkrétní hardware. Například pro virtuální počítač s GPU potřebujete velikost virtuálního počítače s GPU.
  • Vyžadovat koncové šifrování zbývající části buildového virtuálního počítače, musíte zadat velikost virtuálního počítače sestavení podpory, která nepoužívá místní dočasné disky.

osDiskSizeGB

Ve výchozím nastavení Image Builder nezmění velikost obrázku, použije velikost ze zdrojové image. Volitelně můžete zvětšit pouze velikost disku s operačním systémem (Win a Linux) a hodnota 0 znamená ponechat stejnou velikost jako zdrojová image. Velikost disku s operačním systémem nemůžete zmenšit na menší než velikost ze zdrojové image.

{
  "osDiskSizeGB": 100
}

vnetConfig (volitelné)

Pokud nezadáte žádné vlastnosti virtuální sítě, Image Builder vytvoří vlastní virtuální síť, veřejnou IP adresu a skupinu zabezpečení sítě (NSG). Veřejná IP adresa se používá ke komunikaci služby s virtuálním počítačem sestavení. Pokud nechcete mít veřejnou IP adresu nebo chcete, aby Image Builder měl přístup k vašim existujícím prostředkům virtuální sítě, jako jsou konfigurační servery (DSC, Chef, Puppet, Ansible), sdílené složky, můžete zadat virtuální síť. Další informace najdete v dokumentaci k sítím.

"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

ID prostředku existující podsítě, na které je nasazený virtuální počítač sestavení a ověření.

containerInstanceSubnetId (volitelné)

ID prostředku před existující podsítě, ve které je nasazená služba Azure Container Instance (ACI) pro izolované sestavení. Pokud toto pole není zadané, pak se do přípravné skupiny prostředků nasadí dočasná virtuální síť spolu s podsítěmi a skupinami zabezpečení sítě, kromě dalších síťových prostředků (privátní koncový bod, služba Private Link, Azure Load Balancer a virtuální počítač proxy), aby bylo možné komunikovat mezi ACI a virtuálním počítačem buildu.

[Tato vlastnost je k dispozici pouze ve verzích 2024-02-01 rozhraní API nebo novějších, i když existující šablony vytvořené pomocí starších verzí rozhraní API lze aktualizovat a určit tuto vlastnost.]

Toto pole lze zadat pouze v případě, že subnetId je zadáno a musí splňovat následující požadavky:

  • Tato podsíť musí být ve stejné virtuální síti jako podsíť zadaná v subnetId.
  • Tato podsíť nesmí být stejná jako podsíť zadaná v subnetId.
  • Tato podsíť musí být delegována do služby ACI, aby ji bylo možné použít k nasazení prostředků ACI. Další informace o delegování podsítě pro služby Azure najdete tady. Informace o delegování konkrétní podsítě ACI jsou k dispozici tady.
  • Tato podsíť musí umožňovat odchozí přístup k internetu a k podsíti zadané v subnetId. Tyto přístupy jsou potřeba, aby bylo možné zřídit ACI a mohl komunikovat s virtuálním počítačem sestavení, aby mohl provádět vlastní nastavení a ověřování. Na druhé straně musí podsíť zadaná v subnetId této podsíti povolit příchozí přístup. Obecně platí, že výchozí pravidla zabezpečení skupin zabezpečení sítě Azure (NSG) umožňují tyto přístupy. Pokud ale do skupin zabezpečení sítě přidáte další pravidla zabezpečení, musí být stále povolen následující přístup:
    1. Odchozí přístup z podsítě zadané do containerInstanceSubnetId :
      1. Na internetu na portu 443 (pro zřízení image kontejneru)
      2. Na internetu na portu 445 (pro připojení sdílené složky ze služby Azure Storage)
      3. Do podsítě zadané na subnetId portu 22 (pro ssh/Linux) a na portu 5986 (pro WinRM nebo Windows) (pro připojení k virtuálnímu počítači sestavení).
    2. Příchozí přístup k podsíti zadané v subnetId:
      1. Na port 22 (pro ssh/Linux) a port 5986 (pro WinRM nebo Windows) z podsítě zadané v containerInstanceSubnetId podsíti (aby se ACI připojila k virtuálnímu počítači sestavení).
  • Identita šablony musí mít oprávnění k provedení akce Microsoft.Network/virtualNetworks/subnets/join/action v oboru této podsítě. Další informace o oprávněních Azure pro sítě najdete tady.

proxyVmSize (volitelné)

Velikost virtuálního počítače proxy serveru sloužícího k předání provozu do virtuálního počítače sestavení a ověření virtuálního počítače Toto pole nesmí být zadáno, pokud containerInstanceSubnetId je zadáno, protože v takovém případě není nasazen žádný virtuální počítač proxy. Vynecháte nebo zadejte prázdný řetězec, který se má použít jako výchozí (Standard_A1_v2).

Vlastnosti: autoRun

Vlastnost můžete použít autoRun k řízení, zda se má proces sestavení šablony obrázku automaticky spustit při vytvoření šablony. Jedná se o výčet se dvěma možnými hodnotami:

  • Povoleno – automatické spuštění je povolené, takže proces sestavení šablony image se automaticky spustí při vytvoření šablony.
  • Zakázáno – Automatické spuštění je zakázané, takže po vytvoření šablony budete muset proces sestavení image spustit ručně.
"properties": {
    "autoRun": {
        "state": "Enabled"
    }
 }

Poznámka:

Když nastavíte autoRun povolenou hodnotu, proces sestavení image se spustí jednou po vytvoření šablony. Zajišťuje, aby se počáteční sestavení image bezproblémově vytvořilo. Neposkytuje ale konzistentní a probíhající sestavení imagí. Informace o konzistentních a průběžných sestaveních imagí, které se spouští po aktualizaci šablony image, najdete v tématu Použití triggerů Azure Image Builderu k nastavení automatického sestavení image.

Na rozdíl od autoRunautomatického vytváření imagí prostřednictvím prostředku triggeru Azure Image Builderu se zajistí konzistentní vytváření imagí. Kdykoli dojde ke změnám šablony, služba Azure Image Builder automaticky aktivuje proces sestavení image.

Zvolte autoRun okamžité vytvoření image při vytváření šablony. Pokud potřebujete průběžnou konzistenci v buildech imagí, rozhodněte se pro automatické vytváření imagí. Zvažte konkrétní požadavky a na základě pracovního postupu použijte příslušnou možnost.

Vlastnosti: managedResourceTags

Vlastnost můžete použít managedResourceTags k použití značek na prostředky, které služba Azure Image Builder vytvoří v přípravné skupině prostředků během sestavení image. Další informace o přípravné skupině prostředků najdete v tématu Přehled Azure Image Builderu.

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

Operace šablon obrázku

Spuštění sestavení image

Pokud chcete spustit sestavení, musíte v prostředku šablony image vyvolat příkaz Spustit, například run příkazy:

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

Zrušení sestavení image

Pokud používáte sestavení image, u kterého se domníváte, že je nesprávné, čekáte na uživatelský vstup nebo se vám nebude úspěšně dokončit, můžete sestavení zrušit.

Sestavení je možné kdykoli zrušit. Pokud se fáze distribuce spustila, můžete ji přesto zrušit, ale musíte vyčistit všechny image, které se nemusí dokončit. Příkaz zrušit nečeká na dokončení zrušení, pomocí těchto stavových příkazů monitoruje lastrunstatus.runstate průběh zrušení.

cancel Příklady příkazů:

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

Další kroky

Existují ukázkové .json soubory pro různé scénáře v GitHubu v Azure Image Builderu.