Azure Image Builder-sablon létrehozása

Az Azure Image Builder .json fájllal ad át adatokat a Image Builder szolgáltatásnak. Ebben a cikkben a json-fájl szakaszait fogjuk átveszeni, hogy sajátokat építsen ki. A teljes .json-fájlok példáit az Azure Image Builder GitHub.

Ez az alapszintű sablonformátum:

 { 
    "type": "Microsoft.VirtualMachineImages/imageTemplates", 
    "apiVersion": "2020-02-14", 
    "location": "<region>", 
    "tags": {
        "<name": "<value>",
        "<name>": "<value>"
     },
    "identity":{},           
    "dependsOn": [], 
    "properties": { 
        "buildTimeoutInMinutes": <minutes>, 
        "vmProfile": 
            {
            "vmSize": "<vmSize>",
        "proxyVmSize": "<vmSize>",
            "osDiskSizeGB": <sizeInGB>,
            "vnetConfig": {
                "subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
                }
            },
        "source": {}, 
        "customize": {}, 
        "distribute": {} 
      } 
 } 

Típus és API-verzió

A type az erőforrástípus, amelynek a következőnek kell lennie: "Microsoft.VirtualMachineImages/imageTemplates" . A idővel megváltozik, ahogy az API változik, de apiVersion most ennek kell "2020-02-14" lennie.

    "type": "Microsoft.VirtualMachineImages/imageTemplates",
    "apiVersion": "2020-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 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
    "location": "<region>",

Data Residency

A Azure VM Image Builder szolgáltatás nem tárol/feldolgoz ügyféladatokat olyan régiókon kívül, amelyek szigorú egyrégió adateltárási követelményekkel rendelkezik, amikor egy ügyfél buildet kér az érintett régióban. Abban az esetben, ha szolgáltatáskimaradás esetén az adatelhellyel kapcsolatos követelményekkel rendelkezik, más régióban és földrajzi helyen kell sablonokat létrehoznia.

Zónaredundania

Az elosztás támogatja a zónaredundaniát, a VHD-k alapértelmezés szerint egy zónaredundáns Storage-fiókba vannak elosztva, és az Shared Image Gallery-verzió támogatja a ZRS-tárolótípust, ha meg van adva.

vmProfile

buildVM

Alapértelmezés szerint Image Builder egy "Standard_D1_v2" build vm-et fog használni, ez a fájlban megadott rendszerképből épül source fel. Ezt felülírhatja, és a következő okokból lehet szükség erre:

  1. Nagyobb memóriát és processzort igénylő testreszabások végrehajtása, valamint nagy méretű fájlok (GBs) kezelése.
  2. A Windows buildek futtatásához használja a "Standard_D2_v2" vagy azzal egyenértékű virtuálisgép-méretet.
  3. Virtuális gép elkülönítésének megkövetelása.
  4. Adott hardvert igénylő rendszerkép testreszabása, például GPU-alapú virtuális gép esetén GPU virtuálisgép-méretre van szükség.
  5. A buildként használt virtuális gép többi részében teljes titkosítást kell megadni, meg kell adnia a build virtuális gép méretét, amely nem használ helyi ideiglenes lemezeket.

Ez nem kötelező.

osDiskSizeGB

Alapértelmezés szerint Image Builder nem módosítja a kép méretét, hanem a forrásként használt kép méretét fogja használni. Csak az operációsrendszer-lemez méretét növelheti (Win és Linux), ez nem kötelező, és a 0 érték azt jelenti, hogy a forráslemezkép méretének meghagyása. Az operációsrendszer-lemez mérete nem csökkenthető a forráslemezkép méretének kisebbre.

 {
    "osDiskSizeGB": 100
 },

vnetConfig

Ha nem ad meg VNET-tulajdonságokat, akkor a Image Builder létrehoz saját VNET-et, nyilvános IP-címet és NSG-t. A nyilvános IP-cím arra szolgál, hogy a szolgáltatás kommunikáljon a build virtuális gépével, de ha nem szeretne nyilvános IP-címet, vagy ha azt szeretné, hogy a Image Builder hozzáférjen a meglévő VNET-erőforrásokhoz, például konfigurációs kiszolgálókhoz (DSC, Chef, Puppet, Ansible), fájlmegosztáshoz stb., megadhat egy VNET-et. További információért tekintse át a hálózati dokumentációt.Ez nem kötelező.

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

Címkék

Ezek a létrehozott rendszerképhez megadható kulcs/érték párok.

Függ (nem kötelező)

Ez a választható szakasz annak biztosítására használható, hogy a függőségek befejeződtek-e, mielőtt továbblépne.

    "dependsOn": [],

További információ: Erőforrás-függőségek definiálása.

Identitás

Kötelező – Ahhoz, Image Builder az Azure Storage Image Builder-szkriptek beolvassa a rendszerképeket, létre kell hoznia egy Azure User-Assigned-identitást, amely engedélyekkel rendelkezik az egyes erőforrásokhoz. Az engedélyek Image Builder vonatkozó részletekért és a vonatkozó lépésekért tekintse át a dokumentációt.

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

Image Builder identity User-Assigned támogatása:

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

További tudnivalókért lásd: Mi az Azure-erőforrások felügyelt identitása?. További információ a szolgáltatás üzembe helyezéséről: Azure-erőforrások felügyelt identitásának konfigurálása Azure-beli virtuális gépen az Azure CLI használatával.

Tulajdonságok: forrás

A szakasz a forrásként használt rendszerképről tartalmaz információkat, amelyet a source Image Builder. Image Builder jelenleg csak natív módon támogatja a Hyper-V generation (Gen1) 1 rendszerképek létrehozását az Azure Shared Image Gallery (SIG) vagy a Managed Image szolgáltatásban. Ha Gen2-rendszerképeket szeretne létrehozni, akkor egy 2. generációs forrásként használt rendszerképet kell használnia, és el kell terjesztenie a VHD-re. Ezt követően létre kell hoznia egy felügyelt rendszerképet a VHD-ről, és be kell azt injektálni a SIG-be Gen2-rendszerképként.

Az API-nak szüksége van egy SourceType típusra, amely meghatározza a rendszerkép-build forrását. Jelenleg három típus létezik:

  • PlatformImage – azt jelzi, hogy a forrásként megadott rendszerkép egy Marketplace-rendszerkép.
  • ManagedImage – ezt használja egy normál felügyelt rendszerképből kiindulva.
  • SharedImageVersion – Ez akkor használatos, ha forrásként egy rendszerképverziót Shared Image Gallery egy adatforrásban.

Megjegyzés

Meglévő egyéni Windows-rendszerképek használata esetén a Sysprep parancsot legfeljebb 3 alkalommal futtathatja egyetlen Windows 7-es vagy Windows Server 2008 R2-rendszerképen, vagy 1001-szer egyetlen Windows-rendszerképen a későbbi verziókhoz; További információt a sysprep dokumentációjában talál.

PlatformImage forrás

Az Azure Image Builder támogatja Windows Servert és az ügyfelet, valamint a Linux Azure Marketplace-rendszerképeket. A teljes listát itt láthatja.

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

A tulajdonságok itt ugyanazok, amelyek a virtuális gépek létrehozásához használhatók az AZ CLI használatával, és futtassa az alábbi parancsot a tulajdonságok lekért létrehozásához:

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

A verzióban használhatja a "latest" (legújabb) verziót. A verzió a rendszerkép buildlésekor lesz kiértékelve, nem pedig a sablon beküldésekor. Ha ezt a funkciót a Shared Image Gallery-célhelyen használja, elkerülheti a sablon újbóli újrafuttathatóságát, és időközönként újrafuttathatja a rendszerkép-összeállítást, hogy a rendszer a rendszerképeket a legújabb rendszerképekből hozza létre újra.

A Market Place Plan-információk támogatása

A tervinformációk is megadhatók, 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ásként használt rendszerképet egy általános vhd vagy virtuális gép meglévő felügyelt rendszerképeként állítja be.

Megjegyzés

A forrásként felügyelt rendszerképnek támogatott operációs rendszernek kell lennie, és a rendszerképnek ugyanabban a régióban kell lennie, mint az Azure Image Builder sablonnak.

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

A imageId fájlnak a felügyelt rendszerkép ResourceId-ének kell lennie. Az az image list elérhető rendszerképek listához használja a következőt: .

SharedImageVersion forrás

Beállítja a forrásként egy meglévő rendszerképverziót egy Shared Image Gallery.

Megjegyzés

A forrásként felügyelt rendszerképnek támogatott operációs rendszernek kell lennie, és a rendszerképnek az Azure Image Builder-sablonnal azonos régióban kell lennie, ha nem, replikálja a rendszerkép verzióját a Image Builder sablon régiójába.

        "source": { 
            "type": "SharedImageVersion", 
            "imageVersionID": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/p  roviders/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>" 
   } 

A imageVersionId fájlnak a rendszerkép verziójának ResourceId-nek kell lennie. Az az sig image-version listával listáljuk a rendszerkép verzióit.

Tulajdonságok: buildTimeoutInMinutes

Alapértelmezés szerint a Image Builder 240 percig fog futni. Ezután időtúllépést és leállítást fog végrehajtani, függetlenül attól, hogy a rendszerkép builde befejeződött-e. Ha az időtúllépést észlelte, az ehhez hasonló hibaüzenet jelenik meg:

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

Ha nem ad meg buildTimeoutInMinutes értéket, vagy 0 értéket ad meg, ez az alapértelmezett értéket fogja használni. Az értéket a maximális 960 perc (16 óra) értékig növelheti vagy csökkentheti. A Windows esetén nem javasoljuk, hogy ezt 60 percnél alacsonyabbra ássa. Ha az időtúllépést látja, tekintse át a naplókat, és ellenőrizze, hogy a testreszabási lépés a felhasználói bevitelhez hasonlóra vár-e.

Ha úgy találja, hogy több időre van szüksége a testreszabások befejezéséhez, állítsa be a saját úgy gondolja, hogy szüksége van rá egy kis többletterheléssel. Ne állítsa azonban túl magasra, mert előfordulhat, hogy meg kell várnia az időtúllépést, mielőtt hibát lát.

Tulajdonságok: testreszabás

Image Builder "testreszabók" több is támogatottak. A testreszabók olyan függvények, amelyek testre szabják a rendszerképet, például szkriptek futtatása vagy kiszolgálók újraindítása.

A használata customize esetén:

  • Több testreszabó is használható, de egyedinek kell name lennie.
  • A testreszabók a sablonban megadott sorrendben futnak le.
  • Ha egy testreszabó meghibásodik, akkor a teljes testreszabási összetevő meghibásodik, és hibát jelez.
  • Erősen ajánlott alaposan tesztelni a szkriptet, mielőtt sablonban használjuk. A szkript hibakeresése a saját virtuális gépén egyszerűbb lesz.
  • Ne helyezzen bizalmas adatokat a szkriptekbe.
  • A szkript helyének nyilvánosan elérhetőnek kell lennie, kivéve, ha MSI-t használ.
        "customize": [
            {
                "type": "Shell",
                "name": "<name>",
                "scriptUri": "<path to script>",
                "sha256Checksum": "<sha256 checksum>"
            },
            {
                "type": "Shell",
                "name": "<name>",
                "inline": [
                    "<command to run inline>",
                ]
            }

        ],

A testreszabási szakasz egy tömb. Az Azure Image Builder sorrendben futtatja a testreszabókon. A testreszabó bármilyen hibája sikertelen lesz a buildfolyamatban.

Megjegyzés

A beágyazott parancsok megtekinthetők a rendszerképsablon definíciójában és a Microsoft ügyfélszolgálata a támogatási eset segítésében. Ha bizalmas adatokkal rendelkezik, át kell őket áthelyezni az Azure Storage, ahol a hozzáférés hitelesítést igényel.

Rendszerhéj-testreszabó

A rendszerhéj-testreszabó támogatja a rendszerhéjszk szkriptek futtatását. A rendszerhéjszkprogramnak nyilvánosan elérhetőnek kell lennie, vagy konfigurálnia kell egy MSI-t Image Builder hozzáféréshez.

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

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

Tulajdonságok testreszabása:

  • type – Rendszerhéj
  • name – a testreszabás nyomon követésének neve
  • scriptURI – A fájl helyének URI-ja
  • beágyazott – héjparancsok tömbje, vesszővel elválasztva.
  • sha256Checksum – A fájl sha256 ellenőrzőumának értéke, ezt a fájlt helyben hozza létre, majd Image Builder ellenőrző- és érvényesíti.
    • Az sha256Checksum létrehozásához futtassa a következőt egy Mac/Linux rendszerű terminál használatával: sha256sum <fileName>

Megjegyzés

A beágyazott parancsokat a rendszer a rendszerképsablon definíciójának részeként tárolja. Ezeket a rendszerkép-definíció kiírásakor láthatja, és hibaelhárítási támogatási eset esetén az Microsoft ügyfélszolgálata számára is láthatók. Ha bizalmas parancsokat vagy értékeket használ, erősen ajánlott ezeket áthelyezni szkriptekbe, és felhasználói identitással hitelesíteni az Azure Storage.

Felügyelői jogosultságok

A felügyelői jogosultságokkal futtatott parancsokhoz a előtaggal kell előtagot adni, ezeket hozzáadhatja szkriptekhez, vagy beágyazott parancsokat sudo használhat, például:

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

Példa sudo-t használó szkriptre, amelyre 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

Windows-testreszabó újraindítása

A Restart customizer lehetővé teszi egy virtuális gép újraindítását Windows, és várja meg, amíg újra elérhető lesz. Ez lehetővé teszi ú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"
            }
  
        ],

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

Tulajdonságok testreszabása:

  • Típus: WindowsRestart
  • restartCommand – Parancs az újraindítás végrehajtásához (nem kötelező). A mező alapértelmezett értéke: 'shutdown /r /f /t 0 /c \"packer restart\"'.
  • restartCheckCommand – Az újraindítás sikeres volt-e (nem kötelező) ellenőrzéséhez szükséges parancs.
  • restartTimeout – Az újraindítás időkorlátja nagyságrendű és egységnyi sztringként van megadva. Például: 5m (5 perc) vagy 2h (2 óra). Az alapértelmezett érték: "5m"

Linux újraindítása

A Linux újraindítási testreszabója azonban nincs, ha azonban olyan illesztőprogramokat vagy összetevőket telepít, amelyek újraindítást igényelnek, telepítheti őket, és újraindíthatja őket a rendszerhéj-testreszabó használatával. A build vm 20 perc SSH-időtúllépést tartalmaz.

PowerShell-testreszabó

A rendszerhéj-testreszabó támogatja a PowerShell-szkriptek és a beágyazott parancsok futtatását, a szkriptnek nyilvánosan elérhetőnek kell lennie az IB számára azok eléréséhez.

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

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

Tulajdonságok testreszabása:

  • type – PowerShell.
  • scriptUri – URI a PowerShell-parancsfájl helyére.
  • inline – Futtatandó beágyazott parancsok, vesszővel elválasztva.
  • validExitCodes – Nem kötelező, érvényes kódok, amelyek visszaadhatóak a script/inline parancsból, így elkerülhetők a script/inline parancs jelentett meghibásodásai.
  • runElevated – Választható, logikai, emelt szintű engedélyekkel rendelkező parancsok és szkriptek futtatásának támogatása.
  • sha256Checksum – A fájl sha256 ellenőrzőumának értéke, ezt a fájlt helyben hozza létre, majd Image Builder ellenőrző- és érvényesíti.
    • Az sha256Checksum létrehozása a Get-Hash parancs Windows PowerShell használatával

Fájl testreszakoráló

A Fájl testreszabó Image Builder fájlokat tölthet le egy GitHub Azure Storage-ból. Ha olyan rendszerkép-összeállítási folyamata van, amely build-összetevőkre támaszkodik, beállíthatja, hogy a fájl testreszava letöltse a buildmegosztásból, és helyezze át az összetevőket a rendszerképbe.

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

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

Fájlszakorátor tulajdonságai:

  • sourceUri – egy elérhető tárolási végpont, amely az Azure GitHub is lehet. Csak egy fájlt tölthet le, egy teljes könyvtárat nem. Ha le kell töltenie egy könyvtárat, tömörített fájlt használjon, majd a Rendszerhéj vagy a PowerShell-testreszabók használatával tömörítse le a fájlt.

Megjegyzés

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

  • destination (cél) – ez a teljes cél elérési útja és fájlneve. Minden hivatkozott elérési útnak és alkönyvtárnak léteznie kell. Ezeket a rendszerhéj- vagy PowerShell-testreszabók használatával állíthatja be előre. Az elérési utat a szkript-testreszabók használatával hozhatja létre.

Ezt támogatják a Windows és a Linux elérési útjai, de van néhány különbség:

  • Linux operációs rendszerek – A Képszerkesztő csak a /tmp elérési utat tudja írni.
  • Windows – Nincs elérésiút-korlátozás, de az elérési útnak léteznie kell.

Ha hiba lép fel a fájl letöltése vagy egy megadott könyvtárba való mentése során, a testreszabási lépés sikertelen lesz, és ez a customization.log fájlban található.

Megjegyzés

A fájl testreszabó csak kis méretű, 20 MB< méretű fájlok letöltésére alkalmas. Nagyobb fájlok letöltéséhez használjon szkriptet vagy beágyazott parancsot, majd kód használatával töltsön le fájlokat (például Linux vagy , wget curl Invoke-WebRequest Windows).

Windows Customizer frissítése

Ez a testreszabó a Packerhez készült Community Windows Update Provisionerre épül, amely egy, a Packer-közösség által fenntartott nyílt forráskódú projekt. A Microsoft teszteli és ellenőrzi a kiépítést az Image Builder szolgáltatással, támogatja a vele kapcsolatos problémák kivizsgálását, és a problémák megoldásán dolgozik, a Microsoft azonban hivatalosan nem támogatja a nyílt forráskódú projektet. Az Update Provisionerrel kapcsolatos részletes dokumentációért és Windows tekintse meg a projekt adattárát.

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

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

A customizer tulajdonságai:

  • type – WindowsUpdate.
  • searchCriteria – Nem kötelező, meghatározza a telepített frissítések típusát (Ajánlott, Fontos stb.), a BrowseOnly=0 és az IsInstalled=0 (Ajánlott) az alapértelmezett érték.
  • filters (szűrők) – Nem kötelező, lehetővé teszi egy szűrő megadását a frissítésekbe való be- vagy kizáráshoz.
  • updateLimit – Nem kötelező, azt határozza meg, hogy hány frissítés telepíthető, alapértelmezés szerint 1000.

Megjegyzés

A Windows Update customizer sikertelen lehet, ha függőben lévő Windows újraindítások vagy az alkalmazástelepítések még futnak, ez a hiba általában a customization.log naplófájlban jelenik System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016 meg. Határozottan javasoljuk, hogy fontolja meg az Windows Restart (Újraindítás) művelet hozzáadását, és/vagy elegendő időt ad az alkalmazásoknak a telepítésük befejezésére alvó vagy várakozási parancsokkal a beágyazott parancsokban vagy szkriptekben, mielőtt futtatja a Windows Update-et.

Általánossá tétel

Alapértelmezés szerint az Azure Image Builder a rendszerkép testreszabási fázisának végén futtatja a "megszüntetés" kódot a rendszerkép "általánosításához". Az általánosító folyamat során a rendszerképet úgy kell beállítani, hogy újra felhasználható legyen több virtuális gép létrehozásához. A Windows gépekhez az Azure Image Builder Sysprepet használja. Linux esetén az Azure Image Builder a "waagent -deprovision" rendszert futtatja.

Előfordulhat, Image Builder felhasználók által általánosítandó parancsok nem minden helyzetben megfelelőek, ezért az Azure Image Builder lehetővé teszi a parancs testreszabását, ha szükséges.

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

Ha az Azure Image Builder sikeresen létrehoz egy egyéni rendszerképet, és létrehoz róla egy virtuális gépet, akkor a virtuális gép létrehozása meghiúsul vagy nem fejeződik be sikeresen, át kell vizsgálnia az Windows Windows Server Sysprep dokumentációját, vagy támogatási kérést kell kérnie az Windows Server Sysprep ügyfélszolgálati csapatával, akik hibaelhárítást tudnak végrehajtani és tanácsot tudnak adni a megfelelő Sysprep-használatról.

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 }
Write-Output '>>> Sysprepping VM ...'
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
  Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
& $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-megszüntetés parancs

/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync

A parancsok felülbírálása

A parancsok felülbírálása érdekében a PowerShell- vagy a héjparancsfájl-kiépítési parancsokkal hozza létre a parancsfájlokat pontosan a fájlnévvel, és helyezze őket a megfelelő könyvtárakba:

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

Image Builder beolvassa ezeket a parancsokat, azok ki lesznek írva a "customization.log" AIB-naplókba. Tekintse meg a naplók gyűjtésével kapcsolatos hibaelhárítási útmutatót.

Tulajdonságok: terjesztés

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

  • managedImage – felügyelt rendszerkép.
  • sharedImage – Shared Image Gallery.
  • VHD – VHD egy tárfiókban.

Ugyanabban a konfigurációban a rendszerképet mindkét céltípushoz eloszthatja.

Megjegyzés

Az alapértelmezett AIB sysprep parancs nem tartalmazza a "/mode:vm" parancsot, de erre szükség lehet olyan rendszerképek létrehozásakor, amelyeken telepítve lesz a HyperV szerepkör. Ha hozzá kell adni ezt a parancs argumentumot, felül kell bírálni a sysprep parancsot.

Mivel egynél több cél között terjeszthető, a Image Builder minden terjesztési célhoz fenntart egy állapotot, amely a lekérdezéssel érhető runOutputName el. A runOutputName egy olyan objektum, amely az eloszlás után lekérdezhető az eloszlásról. Lekérdezheti például a VHD helyét, vagy 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. A runOutputName egyedinek kell lennie minden terjesztési célon. Lássunk egy példát, amely egy Shared Image Gallery lekérdezése:

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=2020-02-14

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 rendszerkép kimenete egy felügyelt rendszerkép-erőforrás lesz.

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

Tulajdonságok elosztása:

  • type – managedImage
  • imageId – A célként azonosított rendszerkép erőforrás-azonosítója, várt formátuma: /subscriptions/ <subscriptionId> /resourceGroups/ <destinationResourceGroupName> /providers/Microsoft.Compute/images/<imageName>
  • location – a felügyelt rendszerkép helye.
  • runOutputName – egyedi név az elosztás azonosításához.
  • artifactTags – Felhasználó által megadott opcionális kulcs-érték párcímkék.

Megjegyzés

A cél erőforráscsoportnak léteznie kell. Ha a rendszerképet egy másik régióba szeretné terjeszteni, az megnöveli az üzembe helyezési időt.

Terjesztés: sharedImage

Az Azure Shared Image Gallery egy új rendszerképkezelési szolgáltatás, amely lehetővé teszi a rendszerkép-régiók replikációjának, verziószámozásának és egyéni rendszerképek megosztásának kezelését. Az Azure Image Builder támogatja a terjesztést ezzel a szolgáltatással, így a rendszerképeket a megosztott rendszerkép-katalógusok által támogatott régiókba terjesztheti.

A Shared Image Gallery a következőből áll:

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

Ahhoz, hogy terjeszthető legyen a rendszerkép-katalógusba, létre kell hoznia egy katalógust és egy képdefiníciót. Lásd: Megosztott lemezképek.

{
    "type": "SharedImage",
    "galleryImageId": "<resource ID>",
    "runOutputName": "<name>",
    "artifactTags": {
        "<name>": "<value>",
        "<name>": "<value>"
    },
    "replicationRegions": [
        "<region where the gallery is deployed>",
        "<region>"
    ]
}

Megosztott rendszerkép-katalógusok tulajdonságainak elosztása:

  • type – sharedImage

  • galleryImageId – A megosztott rendszerkép-katalógus azonosítója, amely két formátumban lehet megadva:

    • Automatikus verziószámozás – Image Builder létrehoz egy monoton verziószámot. Ez akkor hasznos, ha ugyanazon sablonból szeretné megtartani a képek újraépítését: A formátum a következő: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName> .
    • Explicit verziószámozás – Megszabadhatja a rendszerképkészítő által használni kívánt verziószámot. A formátum a következő: /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>/versions/<version e.g. 1.1.1>
  • runOutputName – egyedi név az elosztás azonosításához.

  • artifactTags – Felhasználó által megadott opcionális kulcs-érték párcímkék.

  • replicationRegions – A replikációhoz szükséges régiók tömbje. Az egyik régiónak annak a régiónak kell lennie, ahol a katalógus üzembe van stb. A régiók hozzáadása a buildidő növekedését jelenti, mivel a build nem fejeződik be, amíg a replikáció be nem fejeződik.

  • excludeFromLatest (nem kötelező) Ezzel a beállítással megjelölhető, hogy a létrehozott rendszerképverzió ne a SIG-definíció legújabb verziójaként legyen használva, az alapértelmezett érték "false".

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

    • "Standard_LRS"
    • "Standard_ZRS"

Megjegyzés

Ha a hivatkozott és a rendszerképsablon nem ugyanazon a helyen található, a rendszerképek létrehozása további image definition időt fog látni. Image Builder jelenleg nem rendelkezik paraméterrel a rendszerkép location verzióerőforrása számára, a szülőtől vegyük image definition át. Ha például egy rendszerkép-definíció a westus nyugati régiója, és a rendszerképverziót az eastus régióba szeretné replikálni, a rendszer átmásol egy blobot a westus régióba. Ebből létrejön a westus rendszerképverzió-erőforrása, majd replikálódik az eastusba. A további replikációs idő elkerülése érdekében győződjön meg arról, hogy a és a image definition rendszerképsablon ugyanazon a helyen van.

Terjesztés: VHD

A kimenetet vhD-fájlként is ki lehet kimenetként látni. Ezután átmásolhatja a VHD-t, és közzéteheti az Azure MarketPlace-en, vagy használhatja a következővel: Azure Stack.

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

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

VHD-paraméterek elosztása:

  • type – VHD.
  • runOutputName – egyedi név az elosztás azonosításához.
  • tags – Felhasználó által megadott kulcs-érték párok opcionális címkéi.

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

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

Megjegyzés

A virtuális merevlemez létrehozása után a lehető leghamarabb másolja át egy másik helyre. A virtuális merevlemezt a rendszer egy tárfiókban tárolja, amely a rendszerképsablon azure-beli Image Builder létrehozásakor jött létre. Ha törli a rendszerképsablont, akkor elveszíti a virtuális merevlemezt.

Rendszerképsablon-műveletek

Rendszerkép-összeállítás indítása

A buildek futtatásához "Futtatás" parancsot kell meghívni a rendszerképsablon erőforrásán, példák run parancsokra:

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

Rendszerkép-összeállítás lemondása

Ha helytelennek vélt rendszerkép-összeállítást futtat, felhasználói adatbevitelre vár, vagy úgy érzi, hogy soha nem fog sikeresen befejeződni, akkor megszakíthatja a buildet.

A build bármikor megszakítható. Ha az elosztási fázis elindult, akkor is megszakíthatja a műveletet, de törölnie kell minden olyan lemezképet, amely esetleg nem fejeződött be. A megszakítási parancs nem várja meg a megszakítás befejezését. Figyelje meg a folyamat megszakításának állapotát lastrunstatus.runstate a következő állapotparancsokkal:.

Példák cancel parancsokra:

Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2020-02-14" -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-ban különböző forgatókönyvekhez .json-mintafájlok Image Builder GitHub.