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",
"location": "<region>",
"tags": {
"<name>": "<value>",
"<name>": "<value>"
},
"identity": {},
"properties": {
"buildTimeoutInMinutes": <minutes>,
"customize": [],
"errorHandling":[],
"distribute": [],
"optimize": [],
"source": {},
"stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>",
"validate": {},
"vmProfile": {
"vmSize": "<vmSize>",
"osDiskSizeGB": <sizeInGB>,
"vnetConfig": {
"subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName1>",
"containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
"proxyVmSize": "<vmSize>"
},
"userAssignedIdentities": [
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName1>",
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName2>",
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName3>",
...
]
}
}
}
API-verzió
Az API-verzió idővel megváltozik, ahogy az API vá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.
Típus
Az type
erőforrástípusnak kell lennie Microsoft.VirtualMachineImages/imageTemplates
.
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
- Észak-Olaszország
- Izrael középső régiója
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
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ó:
- Felügyelt identitások használata Azure-erőforrásokhoz azure-beli virtuális gépen hozzáférési jogkivonat beszerzéséhez
- Felügyelt identitások használata Azure-erőforrásokhoz azure-beli virtuális gépen bejelentkezéshez
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) vagy2h
(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 curl
Windowst 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.
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 runOutputName
leké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=2023-07-01
Hozam:
{
"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.
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>
- 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ő:
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 definition
vesszük. Ha például egy képdefiníció van benne westus
, és azt szeretné, hogy a rendszer replikálja eastus
a 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
vagySource
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ékeLatest
. 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
- Ha a főverzió nincs 2-es vagy főverziós állítva, a
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.
- 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ékEnabled
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 lennieResourceId
. 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
, ,imageTemplateName
imageTemplateResourceGroupName
. 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
, ,imageTemplateName
imageTemplateResourceGroupName
. 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 astagingResourceGroup
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
, ,imageTemplateName
imageTemplateResourceGroupName
. 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
kellékek:
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
kellékek:
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.
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/<subnetName1>",
"containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
"proxyVmSize": "<vmSize>"
}
alhálózati azonosító
Annak a már meglévő alhálózatnak az erőforrás-azonosítója, amelyen a build virtuális gép és az érvényesítési virtuális gép telepítve van.
containerInstanceSubnetId (nem kötelező)
Annak a már meglévő alhálózatnak az erőforrás-azonosítója, amelyen az Azure Container Instance (ACI) telepítve van izolált buildekhez. Ha ez a mező nincs megadva, akkor az átmeneti erőforráscsoportban egy ideiglenes virtuális hálózat, valamint alhálózatok és hálózati biztonsági csoportok vannak üzembe helyezve az átmeneti erőforráscsoportban a többi hálózati erőforrás (privát végpont, privát kapcsolati szolgáltatás, Azure Load Balancer és proxy virtuális gép) mellett az ACI és a buildelési virtuális gép közötti kommunikáció engedélyezéséhez.
[Ez a tulajdonság csak API-verziókban vagy újabb verziókban 2024-02-01
érhető el, bár a korábbi API-verziók használatával létrehozott meglévő sablonok frissíthetők a tulajdonság megadásához.]
Ez a mező csak akkor adható meg, ha subnetId
szintén meg van adva, és meg kell felelnie a következő követelményeknek:
- Ennek az alhálózatnak ugyanazon a virtuális hálózaton kell lennie, mint a megadott alhálózat.
subnetId
- Ez az alhálózat nem lehet ugyanaz az alhálózat, mint a megadott alhálózat.
subnetId
- Ezt az alhálózatot delegálni kell az ACI szolgáltatásba, hogy az használható legyen az ACI-erőforrások üzembe helyezéséhez. Az Azure-szolgáltatások alhálózat-delegálásáról itt olvashat bővebben. Az ACI-specifikus alhálózat-delegálási információk itt érhetők el.
- Ennek az alhálózatnak engedélyeznie kell az internethez és a megadott
subnetId
alhálózathoz való kimenő hozzáférést. Ezekre a hozzáférésekre azért van szükség, hogy az ACI kiéphető legyen, és kommunikálni tudjon a buildelési virtuális géppel a testreszabások/érvényesítések elvégzéséhez. A másik végén a megadottsubnetId
alhálózatnak engedélyeznie kell a bejövő hozzáférést ebből az alhálózatból. Az Azure Hálózati biztonsági csoportok (NSG-k) alapértelmezett biztonsági szabályai általában engedélyezik ezeket a hozzáféréseket. Ha azonban további biztonsági szabályokat ad hozzá az NSG-khez, a következő hozzáféréseket továbbra is engedélyezni kell:- Kimenő hozzáférés a következőhöz megadott alhálózatról
containerInstanceSubnetId
:- Az internetre a 443-as porton (a tárolórendszerkép kiépítéséhez).
- Az internetre a 445-ös porton (a fájlmegosztás Azure Storage-ból való csatlakoztatásához).
- A 22-s porton
subnetId
(ssh/Linux esetén) és az 5986-os porton (WinRM/Windows esetén) megadott alhálózatra (a build virtuális géphez való csatlakozáshoz).
- Bejövő hozzáférés a következőben megadott alhálózathoz
subnetId
:- A 22-s portra (ssh/Linux esetén) és az 5986-os portra (WinRM/Windows esetén) a megadott
containerInstanceSubnetId
alhálózatról (ahhoz, hogy az ACI csatlakozzon a buildelési virtuális géphez).
- A 22-s portra (ssh/Linux esetén) és az 5986-os portra (WinRM/Windows esetén) a megadott
- Kimenő hozzáférés a következőhöz megadott alhálózatról
- A sablonidentitásnak engedéllyel kell rendelkeznie a "Microsoft.Network/virtualNetworks/subnets/join/action" művelet végrehajtásához az alhálózat hatókörén. Az Azure hálózatkezelési engedélyeiről itt olvashat bővebben.
proxyVmSize (nem kötelező)
A virtuális gépnek a buildelési és érvényesítési virtuális gép felé történő adatforgalom továbbításához használt proxy virtuális gép mérete. Ezt a mezőt nem szabad megadni, ha containerInstanceSubnetId
meg van adva, mert ebben az esetben nincs proxy virtuális gép üzembe helyezése. Az alapértelmezett (Standard_A1_v2) használatához hagyja ki vagy adja meg az üres sztringet.
Tulajdonságok: automatikus futtatás
A tulajdonság használatával autoRun
szabályozhatja, hogy a rendszerképsablon összeállítási folyamata automatikusan elinduljon-e a sablon létrehozásakor. Ez egy enumerálás két lehetséges értékkel:
- Engedélyezve – Az automatikus futtatás engedélyezve van, így a rendszerképsablon összeállítási folyamata automatikusan elindul a sablon létrehozásakor.
- Letiltva – Az automatikus futtatás le van tiltva, ezért a sablon létrehozása után manuálisan kell elindítania a képkészítési folyamatot.
"properties": {
"autoRun": {
"state": "Enabled"
}
}
Feljegyzés
Ha "Engedélyezve" értékre állítjaautoRun
, a rendszerkép-létrehozási folyamat egyszer fut a sablon létrehozásakor. Biztosítja, hogy a kezdeti rendszerkép-összeállítás zökkenőmentesen történjen. Ez azonban nem biztosít konzisztens és folyamatos rendszerkép-buildeket. A rendszerképsablonok frissítésekor futó konzisztens és folyamatos rendszerkép-buildekért tekintse meg az Azure Image Builder eseményindítóinak automatikus rendszerkép-összeállítás beállításához való használatát ismertető témakört.
Ellentétben az autoRun
Azure Image Builder eseményindító erőforrásával történő automatikus rendszerkép-létrehozás biztosítja, hogy a rendszerképek összeállítása következetesen történjen. Amikor a sablon módosul, az Azure Image Builder szolgáltatás automatikusan elindítja a rendszerkép-létrehozási folyamatot.
Válassza ki autoRun
, hogy a sablon létrehozásakor azonnal létrejön-e a rendszerkép. Ha folyamatos konzisztenciára van szüksége a kép buildjeiben, válassza az automatikus rendszerkép-létrehozást. Vegye figyelembe a konkrét követelményeket, és használja a megfelelő beállítást a munkafolyamat alapján.
Tulajdonságok: managedResourceTags
A managedResourceTags
tulajdonság használatával címkéket alkalmazhat azOkra az erőforrásokra, amelyeket az Azure Image Builder szolgáltatás az előkészítési erőforráscsoportban hoz létre a rendszerkép összeállítása során. Az átmeneti erőforráscsoportról további információt az Azure Image Builder áttekintésében talál .
"properties": {
"managedResourceTags": {
"tag1": "value1",
"tag2": "value2"
}
}
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 "2023-07-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 "2023-07-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.