Azure Image Builder Bicep- vagy ARM-sablon JSON-sablon létrehozása

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek ✔️ – Windows rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai

Az Azure Image Builder egy Bicep-fájlt vagy egy ARM-sablon JSON-sablonfájlt használ az információk képszerkesztő szolgáltatásba való továbbításához. Ebben a cikkben a fájlok szakaszait megyünk át, hogy sajátokat építhessünk ki. A legújabb API-verziókért tekintse meg a sablonreferenciát. A teljes .json fájlokra vonatkozó példákat az Azure Image Builder GitHubon tekinthet meg.

Az alapformátum a következő:

{
  "type": "Microsoft.VirtualMachineImages/imageTemplates",
  "apiVersion": "2022-02-14",
  "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/<subnetName>",
        "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>",
        ...
      ]
    }
  }
}

Típus és API-verzió

Az type erőforrástípusnak kell lennie Microsoft.VirtualMachineImages/imageTemplates. Az apiVersion API változása idővel megváltozik. Az Azure VM Image Builder újdonságai az Azure VM Image Builder szolgáltatás összes jelentős API-módosításával és funkciófrissítésével kapcsolatban.

"type": "Microsoft.VirtualMachineImages/imageTemplates",
"apiVersion": "2022-02-14",

Hely

A hely az a régió, ahol az egyéni rendszerkép létrejön. A következő régiók támogatottak:

  • USA keleti régiója
  • USA 2. keleti régiója
  • USA nyugati középső régiója
  • USA nyugati régiója
  • USA 2. nyugati régiója
  • USA 3. nyugati régiója
  • USA déli középső régiója
  • Észak-Európa
  • Nyugat-Európa
  • Délkelet-Ázsia
  • Délkelet-Ausztrália
  • Kelet-Ausztrália
  • Az Egyesült Királyság déli régiója
  • Az Egyesült Királyság nyugati régiója
  • Dél-Brazília
  • Közép-Kanada
  • Közép-India
  • Az USA középső régiója
  • Közép-Franciaország
  • Középnyugat-Németország
  • Kelet-Japán
  • USA északi középső régiója
  • Kelet-Norvégia
  • Észak-Svájc
  • Jio Nyugat-India
  • Egyesült Arab Emírségek északi régiója
  • Kelet-Ázsia
  • Dél-Korea középső régiója
  • Dél-Afrika északi régiója
  • Közép-Katar
  • USGov Arizona (nyilvános előzetes verzió)
  • USGov Virginia (nyilvános előzetes verzió)
  • China North 3 (nyilvános előzetes verzió)
  • Közép-Svédország
  • Közép-Lengyelország

Fontos

Regisztrálja a funkciót Microsoft.VirtualMachineImages/FairfaxPublicPreview az Azure Image Builder nyilvános előzetes verziójának eléréséhez az Azure Government-régiókban (USGov Arizona és USGov Virginia).

Fontos

Regisztrálja a funkciót Microsoft.VirtualMachineImages/MooncakePublicPreview az Azure Image Builder nyilvános előzetes verziójának eléréséhez a China North 3 régióban.

Az Azure VM Image Builder nyilvános előzetes verziójának az Azure Government-régiókban (USGov Arizona és USGov Virginia) való eléréséhez regisztrálnia kell a Microsoft.VirtualMachineImages/FairfaxPublicPreview funkciót. Ehhez futtassa a következő parancsot a PowerShellben vagy az Azure CLI-ben:

Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name FairfaxPublicPreview

Az Azure VM Image Builder nyilvános előzetes verziójának a China North 3 régióban való eléréséhez regisztrálnia kell a Microsoft.VirtualMachineImages/MooncakePublicPreview funkciót. Ehhez futtassa a következő parancsot a PowerShellben vagy az Azure CLI-ben:

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

Adattárolási hely

Az Azure VM Image Builder szolgáltatás nem tárolja vagy dolgozza fel az ügyféladatokat azon régiókon kívül, amelyek szigorú egyrégiós adattárolási követelményekkel rendelkeznek, amikor az ügyfél buildet kér az adott régióban. Ha az adattárolási követelményekkel rendelkező régiók szolgáltatáskimaradása esetén bicep-fájlokat/sablonokat kell létrehoznia egy másik régióban és földrajzi helyen.

Zónaredundancia

A disztribúció támogatja a zónaredundanciát, a virtuális merevlemezek alapértelmezés szerint zónaredundáns tárfiókba (ZRS) kerülnek, és az Azure Compute Gallery (korábbi nevén Megosztott képgyűjtemény) verziója támogatja a ZRS-tárolótípust , ha meg van adva.

Címkék

A címkék kulcs-érték párok, amelyeket meg lehet adni a létrehozott képhez.

Identitás

A felhasználó által hozzárendelt identitások hozzáadásának két módja van az alábbiakban.

Felhasználó által hozzárendelt identitás az Azure Image Builder rendszerképsablon-erőforrásához

Kötelező – Ahhoz, hogy az Image Builder képes legyen képek olvasására/írására, valamint szkriptekben való olvasásra az Azure Storage-ból, létre kell hoznia egy Azure-felhasználó által hozzárendelt identitást, amely rendelkezik az egyes erőforrásokra vonatkozó engedélyekkel. Az Image Builder-engedélyek működésével és a vonatkozó lépésekkel kapcsolatos részletekért lásd : Rendszerkép létrehozása és felhasználó által hozzárendelt felügyelt identitás használata az Azure Storage-fiók fájljainak eléréséhez.

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

Az Image Builder szolgáltatás felhasználó által hozzárendelt identitása:

  • Csak egyetlen identitást támogat.
  • Nem támogatja az egyéni tartományneveket.

További információ: Mi az Azure-erőforrások felügyelt identitása? A szolgáltatás üzembe helyezésével kapcsolatos további információkért lásd : Felügyelt identitások konfigurálása Azure-erőforrásokhoz azure-beli virtuális gépen az Azure CLI használatával.

Felhasználó által hozzárendelt identitás az Image Builder buildelési virtuális gépéhez

Ez a tulajdonság csak API-verziókban vagy újabb verziókban 2021-10-01 érhető el.

Nem kötelező – A Rendszerképszerkesztő szolgáltatás által az előfizetésben létrehozott Image Builder buildelési virtuális gép a rendszerkép összeállítására és testreszabására szolgál. Ahhoz, hogy az Image Builder buildelési virtuális gép más szolgáltatásokkal, például az Azure Key Vaulttal való hitelesítéshez engedéllyel rendelkezzen az előfizetésében, létre kell hoznia egy vagy több, az egyes erőforrásokhoz engedélyekkel rendelkező Azure-felhasználó által hozzárendelt identitást. Az Azure Image Builder ezután társíthatja ezeket a felhasználó által hozzárendelt identitásokat a buildelési virtuális géppel. A buildelési virtuális gépen futó testreszabó szkriptek ezután lekérhetik ezeknek az identitásoknak a jogkivonatait, és szükség esetén más Azure-erőforrásokkal is kommunikálhatnak. Vegye figyelembe, hogy az Azure Image Builder felhasználó által hozzárendelt identitásának rendelkeznie kell a "Managed Identity Operator" szerepkör-hozzárendeléssel az Azure Image Builder összes felhasználó által hozzárendelt identitásán ahhoz, hogy társíthassa őket a buildelési virtuális géphez.

Feljegyzés

Vegye figyelembe, hogy az Image Builder buildelési virtuális gépéhez több identitás is megadható, beleértve a képsablon-erőforráshoz létrehozott identitást is. Alapértelmezés szerint a rendszerképsablon-erőforráshoz létrehozott identitás nem lesz automatikusan hozzáadva a buildelési virtuális géphez.

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

Az Image Builder virtuális gép felhasználó által hozzárendelt identitását hozza létre:

  • Támogatja a virtuális gépen konfigurálni kívánt egy vagy több felhasználó által hozzárendelt felügyelt identitás listáját.
  • Támogatja az előfizetések közötti forgatókönyveket (az egyik előfizetésben létrehozott identitást, míg a rendszerképsablont egy másik előfizetésben, ugyanabban a bérlőben hozza létre).
  • Nem támogatja a bérlők közötti forgatókönyveket (az egyik bérlőben létrehozott identitást, míg a rendszerképsablont egy másik bérlőben hozza létre).

További információ:

Tulajdonságok: buildTimeoutInMinutes

A képsablon létrehozása során a várakozás maximális időtartama (beleértve az összes testreszabást, ellenőrzést és disztribúciót).

Ha nem adja meg a tulajdonságot, vagy nem állítja be az értéket 0 értékre, akkor a rendszer az alapértelmezett értéket használja, amely 240 perc vagy négy óra. A minimális érték 6 perc, a maximális érték pedig 960 perc vagy 16 óra. Az időtúllépési érték elérésekor (függetlenül attól, hogy a kép összeállítása befejeződött-e), a következőhöz hasonló hibaüzenet jelenik meg:

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

Windows esetén nem javasoljuk a 60 perc alatti beállítást buildTimeoutInMinutes . Ha úgy találja, hogy időtúllépést tapasztal, tekintse át a naplókat , és ellenőrizze, hogy a testreszabási lépés a felhasználói bemenethez hasonlóra vár-e. Ha úgy találja, hogy több időre van szüksége a testreszabások befejezéséhez, növelje az buildTimeoutInMinutes értéket. De ne állítsa túl magasra, mert előfordulhat, hogy várnia kell, amíg időtúllépést tapasztal, mielőtt hibát látna.

Tulajdonságok: testreszabás

Az Image Builder több "testre szabást" támogat, amelyek a rendszerkép testreszabására szolgáló függvények, például szkriptek futtatása vagy kiszolgálók újraindítása.

Ha a következőt használja customize:

  • Több testreszabást is használhat.
  • A testreszabók a sablonban megadott sorrendben hajtanak végre.
  • Ha egy testreszabó meghibásodik, a teljes testreszabási összetevő meghibásodik, és hibát jelez.
  • Tesztelje alaposan a szkripteket, mielőtt sablonban használná őket. A szkriptek önálló hibakeresése egyszerűbb.
  • Ne helyezzen bizalmas adatokat a szkriptekbe. A beágyazott parancsok a képsablon definíciójában tekinthetők meg. Ha bizalmas információkat (például jelszavakat, SAS-jogkivonatokat, hitelesítési jogkivonatokat stb.) használ, azokat át kell helyezni az Azure Storage szkriptjeibe, ahol a hozzáférés hitelesítést igényel.
  • A szkriptek helyeinek nyilvánosan hozzáférhetőnek kell lenniük, kivéve, ha MSI-t használ.

A customize szakasz egy tömb. A támogatott testreszabási típusok a következők: Fájl, PowerShell, Shell, WindowsRestart és 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"
  }
]

Shell-testreszabó

A Shell testreszabó támogatja a rendszerhéjszkriptek Linuxon való futtatását. A rendszerhéjszkripteknek nyilvánosan hozzáférhetőnek kell lenniük, vagy konfigurálnia kell egy MSI-t az Image Builderhez a hozzáférésükhöz.

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

Tulajdonságok testreszabása:

  • típus – Shell.

  • név – a testreszabás nyomon követésének neve.

  • scriptUri – URI a fájl helyére.

  • beágyazott – a rendszerhéjparancsok tömbje, vesszővel elválasztva.

  • sha256Checksum – A fájl sha256 ellenőrzőösszegének értéke, ezt az értéket helyileg hozza létre, majd az Image Builder ellenőrzi és ellenőrzi.

    Az sha256Checksum létrehozásához használjon terminált Mac/Linux rendszeren: sha256sum <fileName>

Feljegyzés

A beágyazott parancsok a képsablon definíciójának részeként vannak tárolva, ezek a képdefiníció kiírásakor láthatók. Ha bizalmas parancsokkal vagy értékekkel (például jelszavakkal, SAS-jogkivonatokkal, hitelesítési jogkivonatokkal stb.) rendelkezik, javasoljuk, hogy ezeket szkriptekbe helyezze át, és használjon felhasználói identitást az Azure Storage-ban való hitelesítéshez.

Felügyelői jogosultságok

A parancsok előtagja sudo , hogy szuperfelhasználói jogosultságokkal futtassa őket. A parancsokat hozzáadhatja szkriptekhez, vagy használhatja beágyazott parancsokat, például:

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

Példa egy sudo-t használó szkriptre, amely a scriptUri használatával hivatkozhat:

#!/bin/bash -e

echo "Telemetry: creating files"
mkdir /myfiles

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

A Windows újraindítási testreszabása

A WindowsRestart testreszabó lehetővé teszi, hogy újraindítsa a Windows rendszerű virtuális gépeket, és várja meg, amíg a virtuális gép újra online állapotba kerül. Ez a testreszabó lehetővé teszi az újraindítást igénylő szoftverek telepítését.

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

Tulajdonságok testreszabása:

  • Típus: WindowsRestart.
  • restartCommand – Az újraindítás végrehajtásának parancsa (nem kötelező). Az alapértelmezett érték 'shutdown /r /f /t 0 /c \"packer restart\"'.
  • restartCheckCommand – Az újraindítás sikerességét ellenőrző parancs (nem kötelező).
  • restartTimeout – Nagyság és egység sztringként megadott újraindítási időtúllépés. Például 5m (5 perc) vagy 2h (2 óra). Az alapértelmezett érték a következő: 5m.

Feljegyzés

Nincs Linux újraindítási testre szabó.

PowerShell-testre szabó

A PowerShell testreszabó támogatja a PowerShell-szkriptek és a beágyazott parancsok windowsos futtatását, a szkripteknek nyilvánosan hozzáférhetőnek kell lenniük az IB számára a hozzáférésükhöz.

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

Tulajdonságok testreszabása:

  • típus – PowerShell.

  • scriptUri – URI a PowerShell-szkriptfájl helyére.

  • beágyazott – Futtatandó beágyazott parancsok vesszővel elválasztva.

  • validExitCodes – Nem kötelező, érvényes kódok, amelyeket a szkript/beágyazott parancsból lehet visszaadni. A tulajdonság elkerüli a szkript/beágyazott parancs jelentett hibáját.

  • runElevated – Nem kötelező, logikai, támogatott a parancsok és szkriptek emelt szintű engedélyekkel való futtatásához.

  • runAsSystem – Nem kötelező, logikai érték, amely meghatározza, hogy a PowerShell-szkriptet rendszerfelhasználóként kell-e futtatni.

  • sha256Checksum – hozza létre helyileg a fájl SHA256 ellenőrzőösszegét, frissítse az ellenőrzőösszeg értékét kisbetűsre, az Image Builder pedig ellenőrzi az ellenőrzőösszeget a képsablon üzembe helyezése során.

    Az sha256Checksum létrehozásához használja a Get-FileHash parancsmagot a PowerShellben.

Fájlszabó

A File testre szabóval az Image Builder letölthet egy fájlt egy GitHub-adattárból vagy Azure Storage-ból. A testre szabó támogatja a Linuxot és a Windowst is. Ha rendelkezik a buildelési összetevőkre támaszkodó rendszerkép-összeállítási folyamatával, beállíthatja, hogy a fájlszabó letöltse a buildmegosztásból, és helyezze át az összetevőket a lemezképbe.

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

Fájlszabó tulajdonságai:

  • sourceUri – egy akadálymentes tárolási végpont, ez a végpont lehet GitHub vagy Azure Storage. Csak egy fájlt tölthet le, egy teljes könyvtárat nem. Ha le kell töltenie egy könyvtárat, használjon tömörített fájlt, majd törölje a tömörítést a Shell vagy a PowerShell-testreszabók használatával.

    Feljegyzés

    Ha a sourceUri egy Azure Storage-fiók, függetlenül attól, hogy a blob nyilvánosként van-e megjelölve, a felügyelt felhasználói identitásnak engedélyeket kell adnia a blob olvasási hozzáféréséhez. Ebben a példában a tárolási engedélyeket állíthatja be.

  • cél – a teljes cél elérési útja és fájlneve. Minden hivatkozott elérési útnak és alkönyvtárnak léteznie kell, a Shell- vagy PowerShell-testreszabókkal előre beállíthatja ezeket az útvonalakat. Az elérési út létrehozásához használhatja a szkript-testreszabókat.

Ezt a testreszabót windowsos könyvtárak és Linux-útvonalak támogatják, de van néhány különbség:

  • Linux – Az egyetlen elérési út, amelybe a Képszerkesztő írhat, az a /tmp.
  • Windows – Nincs elérésiút-korlátozás, de az elérési útnak léteznie kell.

Ha hiba történt a fájl letöltésével vagy egy megadott könyvtárba való beírásával kapcsolatban, a testreszabási lépés meghiúsul, és ez a hiba a customization.log jelenik meg.

Feljegyzés

A fájlszabó csak kis fájlletöltésekhez < , 20 MB-ra alkalmas. Nagyobb fájlletöltések esetén használjon szkriptet vagy beágyazott parancsot, majd kóddal töltsön le fájlokat, például Linuxot wget vagy curlWindowst Invoke-WebRequest. Az Azure Storage-ban lévő fájlok esetében győződjön meg arról, hogy a buildelési virtuális géphez engedélyekkel rendelkező identitást rendel a buildelési virtuális géphez az alábbi dokumentációt követve: User Assigned Identity for the Image Builder Build VM. Az Azure-ban nem tárolt fájloknak nyilvánosan hozzáférhetőnek kell lenniük ahhoz, hogy az Azure Image Builder letölthesse.

  • sha256Checksum – hozza létre helyileg a fájl SHA256 ellenőrzőösszegét, frissítse az ellenőrzőösszeg értékét kisbetűsre, az Image Builder pedig ellenőrzi az ellenőrzőösszeget a képsablon üzembe helyezése során.

    Az sha256Checksum létrehozásához használja a Get-FileHash parancsmagot a PowerShellben.

Windows Update-testreszabó

A WindowsUpdate testreszabó a Packerhez készült Windows Update Provisioner közösségre épül, amely egy nyílt forráskód projekt, amelyet a Packer-közösség tart fenn. A Microsoft teszteli és érvényesíti a kiépítést az Image Builder szolgáltatással, és támogatja a problémák kivizsgálását, és a problémák megoldásán dolgozik, azonban a nyílt forráskód projektet a Microsoft hivatalosan nem támogatja. A Windows Update Provisionerrel kapcsolatos részletes dokumentációt és segítséget a projektadattárban találja.

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

Testreszabási tulajdonságok:

  • típus – WindowsUpdate.
  • searchCriteria – Nem kötelező, meghatározza, hogy milyen típusú frissítések vannak telepítve (például ajánlott vagy fontos), a BrowseOnly=0 és az IsInstalled=0 (ajánlott) az alapértelmezett.
  • szűrők – Nem kötelező, lehetővé teszi egy szűrő megadását a frissítések belefoglalásához vagy kizárásához.
  • updateLimit – Nem kötelező, meghatározza, hogy hány frissítés telepíthető, alapértelmezett 1000.

Feljegyzés

A Windows Update-testreszabó sikertelen lehet, ha a Windows újraindítása folyamatban van, vagy az alkalmazástelepítések továbbra is futnak, ez a hiba általában a customization.log jelenhet meg. System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016 Határozottan javasoljuk, hogy vegye fel a windowsos újraindítást, és/vagy elegendő időt hagyjon az alkalmazásoknak arra, hogy a Windows Update futtatása előtt alvó vagy várakozási parancsokkal fejezzék be a telepítéseket a beágyazott parancsokban vagy szkriptekben.

Általánosítás

Az Azure Image Builder alapértelmezés szerint az egyes kép testreszabási fázisok végén is futtat deprovision kódot a rendszerkép általánosítása érdekében. Az általánosítás egy olyan folyamat, amelyben a rendszerkép be van állítva, hogy több virtuális gép létrehozásához újra felhasználható legyen. Windows rendszerű virtuális gépek esetén az Azure Image Builder a Sysprepet használja. Linux esetén az Azure Image Builder fut waagent -deprovision.

Előfordulhat, hogy az Általánosítandó Image Builder-parancsok nem minden helyzetben alkalmasak, ezért az Azure Image Builder lehetővé teszi a parancs testreszabását, ha szükséges.

Ha a meglévő testreszabást migrálja, és különböző Sysprep/waagent parancsokat használ, használhatja az Image Builder általános parancsait, és ha a virtuális gép létrehozása sikertelen, használja a saját Sysprep vagy waagent parancsait.

Ha az Azure Image Builder sikeresen létrehoz egy windowsos egyéni rendszerképet, és virtuális gépet hoz létre belőle, akkor azt tapasztalja, hogy a virtuális gép létrehozása sikertelen vagy nem fejeződött be, tekintse át a Windows Server Sysprep dokumentációját, vagy kérjen támogatási kérelmet a Windows Server Sysprep ügyfélszolgálati csapatától, akik hibaelhárítást végezhetnek, és tanácsot kaphatnak a Megfelelő Sysprep-használattal kapcsolatban.

Alapértelmezett Sysprep parancs

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 ...'

Alapértelmezett Linux-deprovision parancs

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

A parancsok felülírása

A parancsok felülbírálásához a PowerShell- vagy Shell-szkriptkiépítési eszközökkel hozza létre a parancsfájlokat a pontos fájlnévvel, és helyezze őket a megfelelő könyvtárakba:

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

Az Image Builder felolvassa ezeket a parancsokat, és ezeket a parancsokat kiírja az AIB-naplókba. customization.log Tekintse meg a naplók gyűjtésének hibaelhárítását.

Tulajdonságok: errorHandling

A errorHandling tulajdonság lehetővé teszi a hibák kezelésének konfigurálását a rendszerkép létrehozása során.

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

A errorHandling tulajdonság lehetővé teszi a hibák kezelésének konfigurálását a rendszerkép létrehozása során. Két tulajdonsága van:

  • onCustomizerError – Megadja, hogy milyen műveletet kell elvégezni, ha hiba történik a képlétrehozás testreszabási fázisában.
  • onValidationError – Megadja a rendszerképsablon ellenőrzése során hiba esetén végrehajtandó műveletet.

A errorHandling tulajdonság két lehetséges értékkel is rendelkezik a kép létrehozása során fellépő hibák kezelésére:

  • törlés – Biztosítja, hogy a Packer által létrehozott ideiglenes erőforrások akkor is törlődnek, ha a Packer vagy az egyik testreszabás/ellenőrzés hibát tapasztal. Ez fenntartja a meglévő viselkedéssel való visszamenőleges kompatibilitást.
  • megszakítás – Ha a Packer hibát tapasztal, az Azure Image Builder (AIB) szolgáltatás kihagyja az ideiglenes erőforrások törlését. Az AIB-sablon tulajdonosaként Önnek kell megtisztítania ezeket az erőforrásokat az előfizetéséből. Ezek az erőforrások olyan hasznos információkat tartalmazhatnak, mint például az ideiglenes virtuális gépen hátrahagyott naplók és fájlok, amelyek segíthetnek a Packer által észlelt hiba kivizsgálásában.

Tulajdonságok: elosztás

Az Azure Image Builder három terjesztési célt támogat:

  • ManagedImage – Felügyelt rendszerkép.
  • sharedImage – Azure Compute Gallery.
  • VHD – VHD egy tárfiókban.

A rendszerképeket eloszthatja a két céltípus között ugyanabban a konfigurációban.

Feljegyzés

Az alapértelmezett AIB sysprep parancs nem tartalmazza a "/mode:vm" parancsot, azonban ez a tulajdonság szükséges lehet olyan képek létrehozásakor, amelyeken telepítve lesz a HyperV-szerepkör. Ha hozzá kell adnia ezt a parancsargumentumot, felül kell bírálnia a sysprep parancsot.

Mivel egynél több célhoz is terjeszthet, az Image Builder minden olyan terjesztési célhoz fenntart egy állapotot, amely a runOutputNamelekérdezéssel érhető el. Ez runOutputName egy olyan objektum, amely a disztribúció után lekérdezhető az adott eloszlással kapcsolatos információkért. Lekérdezheti például a VHD helyét, illetve azokat a régiókat, amelyekbe a rendszerképverzió replikálva lett, vagy létrehozhatja a SIG-rendszerkép verzióját. Ez minden terjesztési cél tulajdonsága. Az runOutputName egyes terjesztési célértékek esetében egyedinek kell lennie. Íme egy példa egy Azure Compute Gallery-disztribúció lekérdezésére:

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=2021-10-01

Kimenet:

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

Terjesztés: managedImage

A képkimenet egy felügyelt rendszerkép-erőforrás.

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

Tulajdonságok elosztása:

  • típus – ManagedImage
  • imageId – A célrendszerkép erőforrás-azonosítója, várt formátum: /subscriptions/<subscriptionId>/resourceGroups/<destinationResourceGroupName>/providers/Microsoft.Compute/images/<imageName>
  • hely – a felügyelt rendszerkép helye.
  • runOutputName – a disztribúció azonosításának egyedi neve.
  • artifactTags – Opcionális felhasználó által megadott kulcs\értékcímkék.

Feljegyzés

A cél erőforráscsoportnak léteznie kell. Ha azt szeretné, hogy a rendszerkép egy másik régióban legyen elosztva, az növeli az üzembe helyezés idejét.

Terjesztés: sharedImage

Az Azure Compute Gallery egy új Képkezelési szolgáltatás, amely lehetővé teszi a képrégió replikációjának, verziószámozásának és megosztásának kezelését. Az Azure Image Builder támogatja a szolgáltatással való terjesztést, így a rendszerképeket az Azure Compute Gallerys által támogatott régiókba terjesztheti.

az Azure Compute Gallery a következő elemekből áll:

  • Katalógus – Több rendszerkép tárolója. A katalógus egy régióban van üzembe helyezve.
  • Képdefiníciók – képek fogalmi csoportosítása.
  • Képverziók – egy virtuális gép vagy méretezési csoport üzembe helyezéséhez használt képtípus. A rendszerképverziók más régiókba replikálhatók, ahol virtuális gépeket kell üzembe helyezni.

Mielőtt terjesztené a katalógust, létre kell hoznia egy katalógust és egy képdefiníciót, lásd : Katalógus létrehozása.

Feljegyzés

A rendszerkép verzióazonosítójának el kell különítenie vagy el kell különböznie a meglévő Azure Compute Gallery rendszerképverzióitól.

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

Az alábbi JSON egy példa arra, hogyan terjeszthető a mező egy replicationRegions Azure Compute Galleryben.

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

Feljegyzés

replicationRegions a frissített tulajdonságnak megfelelően targetRegions a katalógusterjesztések elavultak. További információt a célrégiókban talál.

Elosztás: célrégiók

Az alábbi JSON egy példa arra, hogyan terjeszthető a targetRegions mező az Azure Compute Galleryben.

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

Gyűjtemények tulajdonságainak elosztása:

  • típus – sharedImage

  • galleryImageId – Az Azure Compute Gallery azonosítója, ez a tulajdonság két formátumban adható meg:

    • Automatikus verziószámozás – Az Image Builder monoton verziószámot hoz létre. Ez a tulajdonság akkor hasznos, ha a rendszerképeket ugyanabból a sablonból szeretné újraépíteni: A formátum a következő: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName>.
    • Explicit verziószámozás – Megadható a képszerkesztő által használni kívánt verziószám. A formátum a következő: /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>/versions/<version - for example: 1.1.1>
  • runOutputName – a disztribúció azonosításának egyedi neve.

  • artifactTags – opcionális felhasználó által megadott kulcs\értékcímkék.

  • replikációsrégiók – a replikációhoz szükséges régiók tömbje. Az egyik régiónak az a régiónak kell lennie, ahol a katalógus üzembe van helyezve. A régiók hozzáadása a létrehozási idő növelését jelenti, mivel a build nem fejeződik be, amíg a replikáció be nem fejeződik. Ez a mező elavult az API 2022-07-01-es verziójától. A "SharedImage" típus terjesztésekor használja targetRegions .

  • targetRegions – a replikációhoz szükséges régiók tömbje. A 2022-07-01 API részeként újonnan lett bevezetve, és csak az SharedImage elosztott típusra vonatkozik.

  • excludeFromLatest (nem kötelező) – lehetővé teszi, hogy a létrehozott képverzió ne legyen a katalógus definíciójának legújabb verziójaként használva, az alapértelmezett érték "false".

  • storageAccountType (nem kötelező) – Az AIB támogatja az ilyen típusú tárolók megadását a létrehozandó képverzióhoz:

    • "Standard_LRS"
    • "Standard_ZRS", "

Feljegyzés

Ha a képsablon és a hivatkozott image definition fájl nem ugyanazon a helyen található, további időt fog látni a képek létrehozására. Az Image Builder jelenleg nem rendelkezik location paraméterrel a képverzió-erőforráshoz, a szülőtől image definitionvesszük. Ha például egy képdefiníció van benne westus , és azt szeretné, hogy a rendszer replikálja eastusa képverziót, a blob át lesz másolva westus, létrejön egy képverzió-erőforrás westus , majd replikálja a következőre eastus: . A további replikációs idő elkerülése érdekében győződjön meg arról, hogy a image definition képsablon ugyanazon a helyen található.

Verziószámozás

A verziószámozási tulajdonság csak az sharedImage elosztott típushoz tartozik. Ez egy enumerálás két lehetséges értékkel:

  • legújabb – Új, szigorúan növekvő séma tervenként
  • source – Séma a forráslemezkép verziószáma alapján.

Az alapértelmezett verziószámozási séma a következő latest: . A legújabb séma rendelkezik egy további tulajdonságával, a "major"-nal, amely meghatározza azt a főverziót, amely alatt a legújabb verziót hozza létre.

Feljegyzés

A disztribúció meglévő verziógenerálási sharedImage logikája elavult. Két új lehetőség érhető el: a katalógusban mindig a legújabb verziójú, monoton módon növekvő verziók, valamint a forráslemezkép verziószáma alapján létrehozott verziók. A verziógenerálási sémát meghatározó szám további verziógenerálási sémákkal teszi lehetővé a későbbi bővítést.

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

verziószámozási tulajdonságok:

  • séma – Új verziószám létrehozása a disztribúcióhoz. Latest vagy Source két lehetséges érték.
  • major – Azt a főverziót adja meg, amely alatt a legújabb verziót hozza létre. Csak akkor alkalmazható, ha a scheme beállítás értéke Latest. Például egy katalógusban a következő közzétett verziók: 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
    • Ha a főverzió nincs 2-es vagy főverziós állítva, a Latest séma a 2.1.1-es verziót hozza létre
    • Az 1-es főverzióval a Legújabb séma az 1.2.1-es verziót hozza létre
    • A fő 0 értékre van állítva, a Legújabb séma a 0.1.3-es verziót hozza létre

Elosztott: VHD

VHD-nek is kimenetet adhat. Ezután másolhatja a VHD-t, és azzal közzéteheti az Azure MarketPlace-ben, vagy használhatja az Azure Stackdel.

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

Operációs rendszer támogatása: Windows és Linux

VHD-paraméterek elosztása:

  • típus – VHD.
  • runOutputName – a disztribúció azonosításának egyedi neve.
  • címkék – A felhasználó által megadott kulcsértékpárcímkék.

Az Azure Image Builder nem engedélyezi a felhasználónak a tárfiók helyének megadását, de lekérdezheti a runOutputs hely állapotát.

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

Feljegyzés

A VHD létrehozása után a lehető leghamarabb másolja azt egy másik helyre. A VHD egy tárfiókban van tárolva abban az ideiglenes erőforráscsoportban, amelyet akkor hoztak létre, amikor a rendszerképsablont elküldték az Azure Image Builder szolgáltatásnak. Ha törli a képsablont, akkor elveszíti a VHD-t.

Az alábbi JSON virtuális merevlemezként osztja el a képet egy egyéni tárfiókba.

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

VHD-elosztási tulajdonságok:

uri – Opcionális Azure Storage URI az elosztott VHD-blobhoz. Ne használja az alapértelmezett (üres sztringet), amely esetben a VHD az átmeneti erőforráscsoport tárfiókjában lesz közzétéve.

Tulajdonságok: optimalizálás

A optimize tulajdonság engedélyezhető egy virtuálisgép-rendszerkép létrehozásakor, és lehetővé teszi a virtuális gépek optimalizálását a képlétrehozási idő javítása érdekében.

"optimize": {
      "vmboot": {
        "state": "Enabled"
      }
    }
  • vmboot: A virtuális gép (VM) rendszerindítási folyamatához kapcsolódó konfiguráció, amely olyan optimalizálások szabályozására szolgál, amelyek javíthatják a rendszerindítási időt vagy más teljesítménybeli szempontokat.
  • állapot: A rendszerindítás-optimalizálási funkció állapota a rendszerindításon belül vmboot, és az érték Enabled azt jelzi, hogy a funkció be van kapcsolva a képlétrehozási idő javítása érdekében.

További információ: Virtuálisgép-optimalizálás katalógusképekhez az Azure VM Image Builder használatával.

Tulajdonságok: forrás

A source szakasz az Image Builder által használt forráslemezképre vonatkozó információkat tartalmazza. Az Azure Image Builder csak az általánosított képeket támogatja forrásképként, a speciális rendszerképek jelenleg nem támogatottak.

Az API-hoz olyan forrásra SourceType van szükség, amely meghatározza a kép buildjének forrását, jelenleg három típus létezik:

  • PlatformImage – azt jelzi, hogy a forrásrendszerkép egy Marketplace-rendszerkép.
  • ManagedImage – normál felügyelt rendszerképből kiindulva használható.
  • SharedImageVersion – akkor használatos, ha egy Képverziót használ egy Azure Compute Galleryben forrásként.

Feljegyzés

Meglévő egyéni Windows-rendszerképek használatakor a Sysprep parancsot akár háromszor is futtathatja egyetlen Windows 7 vagy Windows Server 2008 R2 rendszerképen, vagy 1001-szer egyetlen Windows-lemezképen a későbbi verziókhoz; további információkért tekintse meg a sysprep dokumentációját.

PlatformImage-forrás

Az Azure Image Builder támogatja a Windows Servert és az ügyfelet, valamint a Linux Azure Marketplace-rendszerképeket. A teljes lista az Azure Image Builderről szól.

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

Az itt található tulajdonságok ugyanazok, mint a virtuális gépek létrehozásához használt tulajdonságok. Az AZ CLI használatával futtassa az alábbi parancsot a tulajdonságok lekéréséhez:

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

Használhatja latest a verziót, a rendszer kiértékeli a verziót a rendszerkép összeállításakor, nem pedig a sablon elküldésekor. Ha ezt a funkciót az Azure Compute Gallery célhelyével használja, elkerülheti a sablon újbóli elküldését, és időközönként újrafuttathatja a rendszerkép-összeállítást, így a rendszer újra létrehozza a rendszerképeket a legújabb rendszerképekből.

Piactéri tervinformációk támogatása

Megadhatja a tervadatokat is, például:

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

ManagedImage-forrás

A forrásrendszerképet általánosított virtuális merevlemez vagy virtuális gép meglévő felügyelt lemezképeként állítja be.

Feljegyzés

A forrás által felügyelt rendszerképnek támogatott operációs rendszernek kell lennie, és a rendszerképnek ugyanabban az előfizetésben és régióban kell lennie, mint az Azure Image Builder-sablon.

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

A imageId felügyelt rendszerkép ResourceId azonosítójának kell lennie. Az elérhető képek listázására használható az image list .

SharedImageVersion forrás

A forrásrendszerképet egy meglévő rendszerképverzióként állítja be egy Azure Compute Galleryben.

Feljegyzés

A forrásként megosztott lemezkép verziójának támogatott operációs rendszernek kell lennie, és a rendszerkép verziójának ugyanabban a régióban kell lennie, mint az Azure Image Builder-sablon, ha nem, replikálja a rendszerkép verzióját az Image Builder-sablon régiójába.

"source": {
  "type": "SharedImageVersion",
  "imageVersionID": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>"
}
  • imageVersionId – ARM-sablon erőforrás-azonosítója a képverzióhoz. Ha a rendszerkép verziószáma "legújabb", a rendszer kiértékeli a verziót a rendszerkép összeállításakor. A imageVersionId képverziónak kell lennie ResourceId . Az az sig image-version list használatával listázhatja a rendszerképverziókat.

Az alábbi JSON egy közvetlen megosztott katalógusban tárolt képként állítja be a forrásrendszerképet.

Feljegyzés

A Közvetlen megosztott katalógus jelenleg előzetes verzióban érhető el.

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

Az alábbi JSON az Azure Compute Galleryben tárolt rendszerkép legújabb képverziójaként állítja be a forrásrendszerképet.

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

A SharedImageVersion tulajdonságai:

imageVersionId – ARM-sablon erőforrás-azonosítója a képverzióhoz. Ha a rendszerkép verziószáma "legújabb", a rendszer kiértékeli a verziót a rendszerkép buildelésekor.

Tulajdonságok: stagingResourceGroup

A stagingResourceGroup tulajdonság információkat tartalmaz arról az átmeneti erőforráscsoportról, amelyet az Image Builder szolgáltatás hoz létre a rendszerkép-létrehozási folyamat során való használatra. Ez stagingResourceGroup egy választható tulajdonság mindenki számára, aki nagyobb mértékben szeretné szabályozni az Image Builder által a képkészítési folyamat során létrehozott erőforráscsoportot. Létrehozhat saját erőforráscsoportot, és megadhatja azt a stagingResourceGroup szakaszban, vagy az Image Builder létrehozhat egyet az Ön nevében.

Fontos

A megadott átmeneti erőforráscsoport nem társítható egy másik képsablonhoz, üresnek kell lennie (nincs benne erőforrás), ugyanabban a régióban, mint a képsablon, és vagy "Közreműködő" vagy "Tulajdonos" RBAC van alkalmazva az Azure Image Builder rendszerképsablon-erőforráshoz hozzárendelt identitásra.

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

Sablonlétrehozás forgatókönyvei

  • A stagingResourceGroup tulajdonság üres marad

    Ha a stagingResourceGroup tulajdonság nincs megadva vagy üres sztringgel van megadva, az Image Builder szolgáltatás létrehoz egy átmeneti erőforráscsoportot, amely az alapértelmezett "IT_***" névkonvenciával rendelkezik. Az átmeneti erőforráscsoportra a következő alapértelmezett címkék vonatkoznak: createdBy, , imageTemplateNameimageTemplateResourceGroupName. Emellett az alapértelmezett RBAC az Azure Image Builder-sablonerőforráshoz hozzárendelt identitásra is vonatkozik, amely "Közreműködő".

  • A stagingResourceGroup tulajdonság egy létező erőforráscsoporttal van megadva

    Ha a stagingResourceGroup tulajdonság egy olyan erőforráscsoporttal van megadva, amely létezik, akkor az Image Builder szolgáltatás ellenőrzi, hogy az erőforráscsoport nincs-e más képsablonhoz társítva, üres (nincs benne erőforrás), ugyanabban a régióban, mint a képsablon, és vagy "Közreműködő" vagy "Tulajdonos" RBAC van alkalmazva az Azure Image Builder rendszerképsablon-erőforráshoz hozzárendelt identitásra. Ha a fent említett követelmények egyike sem teljesül, hibaüzenet jelenik meg. Az átmeneti erőforráscsoporthoz a következő címkék vannak hozzáadva: usedBy, , imageTemplateNameimageTemplateResourceGroupName. A már meglévő címkék nem törlődnek.

Fontos

Az Azure Image Builder első félalkalmazásának megfelelő szolgáltatásnév erőforráscsoporthoz kell hozzárendelnie a közreműködői szerepkört, amikor egy már meglévő erőforráscsoportot és virtuális hálózatot próbál meg megadni az Azure Image Builder szolgáltatáshoz windowsos forrásképpel. A CLI-parancs és a portál útmutatása a közreműködői szerepkör erőforráscsoporthoz való hozzárendeléséről az alábbi dokumentációban található: A virtuális gép Azure Image Builder hibaelhárítása: Engedélyezési hiba lemez létrehozása

  • Az stagingResourceGroup tulajdonság olyan erőforráscsoporttal van megadva, amely nem létezik

    Ha a stagingResourceGroup tulajdonság olyan erőforráscsoporttal van megadva, amely nem létezik, akkor az Image Builder szolgáltatás létrehoz egy átmeneti erőforráscsoportot a stagingResourceGroup tulajdonságban megadott névvel. Hiba történik, ha a megadott név nem felel meg az Erőforráscsoportok Azure-elnevezési követelményeinek. Az átmeneti erőforráscsoportra a következő alapértelmezett címkék vonatkoznak: createdBy, , imageTemplateNameimageTemplateResourceGroupName. Alapértelmezés szerint az Azure Image Builder rendszerképsablon-erőforrásához rendelt identitásra az erőforráscsoportban a "Közreműködő" RBAC van alkalmazva.

Sablon törlése

Az Image Builder szolgáltatás által létrehozott átmeneti erőforráscsoport a rendszerképsablon törlése után törlődik. A törlés magában foglalja a stagingResourceGroup tulajdonságban megadott átmeneti erőforráscsoportokat, de nem léteztek a rendszerkép összeállítása előtt.

Ha az Image Builder nem az átmeneti erőforráscsoportot hozta létre, hanem az erőforráscsoporton belüli erőforrásokat, ezek az erőforrások a rendszerképsablon törlése után törlődnek, mivel az Image Builder szolgáltatás rendelkezik az erőforrások törléséhez szükséges engedélyekkel vagy szerepkörekkel.

Tulajdonságok: ellenőrzés

A tulajdonság használatával érvényesítheti a validate platformrendszerképeket és a létrehozott testreszabott rendszerképeket, függetlenül attól, hogy az Azure Image Builder használatával hozta-e létre őket.

Az Azure Image Builder támogatja a "Csak forrásérvényesítés" módot, amely a sourceValidationOnly tulajdonság használatával állítható be. Ha a sourceValidationOnly tulajdonság értéke igaz, a szakaszban megadott source rendszerképet a rendszer közvetlenül érvényesíti. A rendszer nem futtat külön buildet a testreszabott rendszerkép létrehozásához és érvényesítéséhez.

A inVMValidations tulajdonság a képen végrehajtandó érvényesítők listáját tartalmazza. Az Azure Image Builder támogatja a Fájl-, PowerShell- és Shell-érvényesítőket.

A continueDistributeOnFailure tulajdonság felelős azért, hogy a kimeneti rendszerkép(ek) el legyenek-e terjesztve, ha az ellenőrzés sikertelen. Alapértelmezés szerint ha az ellenőrzés sikertelen, és ez a tulajdonság hamis értékre van állítva, a kimeneti rendszerkép(ek) nem lesznek elosztva. Ha az ellenőrzés sikertelen, és ez a tulajdonság igaz értékre van állítva, a kimeneti rendszerkép(ek) továbbra is el lesznek terjesztve. Ezt a lehetőséget körültekintően használja, mert előfordulhat, hogy a rendszer nem sikerült képeket terjeszt használatra. Mindkét esetben (igaz vagy hamis) a rendszer sikertelenként jelenti a teljes rendszerkép futását, ha érvényesítési hiba történt. Ennek a tulajdonságnak nincs hatása arra, hogy az ellenőrzés sikeres-e vagy sem.

Ha a következőt használja validate:

  • Több érvényesítőt is használhat.
  • Az érvényesítők a sablonban megadott sorrendben hajtanak végre.
  • Ha egy érvényesítő meghibásodik, akkor a teljes érvényesítési összetevő meghibásodik, és hibát jelent vissza.
  • Javasoljuk, hogy alaposan tesztelje a szkriptet, mielőtt sablonban használná. A szkript hibakeresése egyszerűbb lesz a saját virtuális gépen.
  • Ne helyezzen bizalmas adatokat a szkriptekbe.
  • A szkriptek helyeinek nyilvánosan hozzáférhetőnek kell lenniük, kivéve, ha MSI-t használ.

A tulajdonság használata Windows-rendszerképek validate érvényesítéséhez:

{
   "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 Tulajdonságok:

  • típus – PowerShell.

  • név – az érvényesítő neve

  • scriptUri – A PowerShell-szkriptfájl URI-ja.

  • beágyazott – futtatandó parancsok tömbje, vesszővel elválasztva.

  • validExitCodes – Nem kötelező, érvényes kódok, amelyek visszaadhatók a szkriptből/beágyazott parancsból, így elkerülhető a szkript/beágyazott parancs jelentett hibája.

  • runElevated – Nem kötelező, logikai, támogatott a parancsok és szkriptek emelt szintű engedélyekkel való futtatásához.

  • sha256Checksum – A fájl sha256 ellenőrzőösszegének értéke, ezt helyileg hozza létre, majd az Image Builder ellenőrzi és ellenőrzi.

    A sha256Checksum létrehozásához használja a PowerShellt a Windows Get-Hash rendszeren

A tulajdonság használata validate Linux-rendszerképek ellenőrzéséhez:

{
  "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 Tulajdonságok:

  • típus – A végrehajtandó érvényesítési típusként megadott rendszerhéj vagy fájl.

  • név – az érvényesítő neve

  • scriptUri – A szkriptfájl URI-ja

  • beágyazott – futtatandó parancsok tömbje, vesszővel elválasztva.

  • sha256Checksum – A fájl sha256 ellenőrzőösszegének értéke, ezt helyileg hozza létre, majd az Image Builder ellenőrzi és ellenőrzi.

    Az sha256Checksum létrehozásához használjon terminált Mac/Linux rendszeren: sha256sum <fileName>

  • cél – A fájl célja.

  • sha256Checksum – A fájl SHA256 ellenőrzőösszegét adja meg.

  • sourceUri – A fájl forrás URI-ja.

Tulajdonságok: vmProfile

vmSize (nem kötelező)

Az Image Builder a Gen1 és Standard_D2ds_v4 Gen2 rendszerképek alapértelmezett termékváltozat-méretét Standard_D1_v2 használja. A generációt a megadott kép határozza meg a source. A vmSize felülbírálható az alábbi okokból:

  • Olyan testreszabások végrehajtása, amelyek nagyobb memóriát, processzort és nagy méretű fájlokat (GB-ket) igényelnek.
  • Windows-buildek futtatásakor a "Standard_D2_v2" vagy azzal egyenértékű virtuálisgép-méretet kell használnia.
  • Virtuálisgép-elkülönítést igényel.
  • Adott hardvert igénylő rendszerkép testreszabása. GPU-beli virtuális gépek esetében például GPU virtuálisgép-méretre van szükség.
  • A buildelési virtuális gép többi részén végpontok közötti titkosítást igényel, meg kell adnia a támogatási build virtuális gép méretét , amely nem használ helyi ideiglenes lemezeket.

osDiskSizeGB

Alapértelmezés szerint az Image Builder nem módosítja a kép méretét, hanem a forráslemezkép méretét használja. Opcionálisan csak az operációsrendszer-lemez méretét növelheti (Win és Linux), és a 0 érték azt jelenti, hogy a forráslemezkép mérete változatlan marad. Az operációsrendszer-lemez mérete nem csökkenthető a forráslemez méreténél.

{
  "osDiskSizeGB": 100
}

vnetConfig (nem kötelező)

Ha nem ad meg virtuális hálózati tulajdonságokat, az Image Builder saját virtuális hálózatot, nyilvános IP-címet és hálózati biztonsági csoportot (NSG) hoz létre. A szolgáltatás a nyilvános IP-címet használja a buildelési virtuális géppel való kommunikációhoz. Ha nem szeretne nyilvános IP-címet használni, vagy azt szeretné, hogy az Image Builder hozzáférhessen a meglévő virtuális hálózati erőforrásokhoz, például konfigurációs kiszolgálókhoz (DSC, Chef, Puppet, Ansible), fájlmegosztásokhoz, megadhat egy virtuális hálózatot. További információkért tekintse át a hálózatkezelési dokumentációt.

"vnetConfig": {
  "subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
}

Képsablon műveletei

Kép buildelésének indítása

A build elindításához meg kell hívnia a "Futtatás" parancsot a Képsablon erőforráson, például a run következő parancsokat:

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

Kép buildelésének megszakítása

Ha olyan rendszerkép-összeállítást futtat, amelyről úgy véli, hogy helytelen, vár a felhasználói bemenetre, vagy úgy érzi, hogy soha nem fog sikerülni, akkor megszakíthatja a buildet.

A build bármikor lemondható. Ha a terjesztési fázis elkezdődött, továbbra is megszakíthatja a műveletet, de törölnie kell minden olyan lemezképet, amely esetleg nem fejeződik be. A mégse parancs nem várja meg a megszakítás befejezését, és figyeli lastrunstatus.runstate a folyamat megszakítását az állapotparancsok használatával.

Példák parancsokra cancel :

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

Következő lépések

Az Azure Image Builder GitHubon különböző forgatókönyvekhez .json mintafájlok találhatók.