Azure VM Image Builder szolgáltatás DevOps-feladat (előzetes verzió)

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

Ebből a cikkből megtudhatja, hogyan telepíthet és konfigurálhat alkalmazásokat és operációs rendszert azure DevOps-feladatokkal buildösszetevőket egy virtuális gép (VM) rendszerképébe.

Fontos

A VM Image Builder Azure DevOps-feladata jelenleg előzetes verzióban érhető el. A bétaverziójú, előzetes verziójú vagy másként még általánosan nem elérhető Azure-szolgáltatások jogi feltételeit lásd: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

DevOps-feladatverziók

Jelenleg két Azure VM Image Builder DevOps-feladat létezik:

Előfeltételek

Megjegyzés:

A VM Image Builder-feladat jelenleg nem támogatja a Windows újraindítását, és nem futtat emelt szintű parancsokat Rendszergazda istratorként. Ez azt jelzi, hogy a feladat nem megfelelő az Azure Virtual Desktop-forgatókönyvekhez vagy a windowsos testreszabásokhoz, amelyek megkövetelik ezeket a funkciókat. Ha a DevOps-t a VM Image Builderrel szeretné használni, ágyazhatja be a sablont egy Azure Resource Manager-feladatba, és használja az Azure CLI- vagy PowerShell-feladatokat.

Mielőtt hozzákezdene, a következőt kell tennie:

  • Telepítse a Stabil DevOps-feladatot a Visual Studio Marketplace-ről.

  • Hozzon létre egy Azure DevOps Services-fiókot (korábbi nevén Visual Studio Team Services vagy VSTS) és egy buildelési folyamatot.

  • Regisztrálja és engedélyezze a VM Image Builder szolgáltatásra vonatkozó követelményeit a folyamatok által használt előfizetésben:

  • Hozzon létre egy standard Azure Storage-fiókot a forráskép erőforráscsoportjában. Más erőforráscsoportokat vagy tárfiókokat is használhat. A tárfiók a buildösszetevőket a DevOps-feladatból a lemezképre továbbítja.

    # Azure PowerShell
    $timeInt=$(get-date -UFormat "%s")
    $storageAccName="aibstorage"+$timeInt
    $location=westus
    # Create a storage account and blob in the resource group
    New-AzStorageAccount -ResourceGroupName $strResourceGroup -Name $storageAccName -Location $location -SkuName Standard_LRS
    
    # The Azure CLI
    location=westus
    scriptStorageAcc=aibstordot$(date +'%s')
    # Create a storage account and blob in the resource group
    az storage account create -n $scriptStorageAcc -g $strResourceGroup -l $location --sku Standard_LRS
    

Feladat hozzáadása a kiadási folyamathoz

  1. Válassza a Kiadási folyamat>szerkesztése lehetőséget.

  2. A Felhasználói ügynökben válassza ki a pluszjelet (+) a Képszerkesztő hozzáadásához és kereséséhez.

  3. Válassza a Hozzáadás lehetőséget.

A következő szakaszokban adja meg a tevékenység tulajdonságait.

Azure subscription

A legördülő listában válassza ki azt az előfizetést, amelyet a VM Image Builder futtatásához szeretne futtatni. Használja azt az előfizetést, amelyben a forráslemezképek vannak tárolva, és a rendszerképeket el kell terjeszteni. Hozzáférést kell adnia a VM Image Builder közreműködőjének az előfizetéshez vagy az erőforráscsoporthoz.

Erőforráscsoport

Használja azt az erőforráscsoportot, amelyben az ideiglenes képsablon összetevőt tárolja a rendszer. Sablonösszetevő létrehozásakor egy másik ideiglenes VM Image Builder-erőforráscsoport IT_<DestinationResourceGroup>_<TemplateName>_guidjön létre. Az ideiglenes erőforráscsoport tárolja a rendszerkép metaadatait, például szkripteket. A feladat végén a rendszer törli a rendszerképsablon összetevőt és az ideiglenes VM Image Builder-erőforráscsoportot.

Hely

A hely az a régió, ahol a virtuális gép képszerkesztője futni fog. Csak meghatározott számú régió támogatott. A forráslemezképnek ezen a helyen kell lennie. Ha például az Azure Compute Galleryt (korábban megosztott képgyűjteményt) használja, a replikának az adott régióban kell lennie.

Felügyelt identitás (kötelező)

A VM Image Builderhez felügyelt identitás szükséges, amelyet a forrás egyéni lemezképek olvasására, az Azure Storage-hoz való csatlakozásra és egyéni rendszerképek létrehozására használ. További információ: További információ a virtuálisgép-rendszerkép-készítőről.

Virtual network support

A létrehozott virtuális gépet konfigurálhatja úgy, hogy egy adott virtuális hálózaton legyen. A feladat konfigurálásakor adja meg egy meglévő alhálózat erőforrás-azonosítóját a VNet Configuration (Nem kötelező) beviteli mezőben. Hagyja ki az erőforrás-azonosítót, ha nincs szükség konkrét virtuális hálózatra. További információ: Azure VM Image Builder szolgáltatás hálózatkezelési beállításai.

Forrás

A forráslemezképnek a támogatott VM Image Builder operációs rendszerekből kell lennie. A meglévő egyéni rendszerképeket ugyanabban a régióban választhatja ki, amelyről a VM Image Builder fut:

  • Felügyelt kép: Adja meg az erőforrás-azonosítót. Például:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
    
  • Számítási gyűjtemény: Adja meg a képverzió erőforrás-azonosítóját. Például:

    /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/<versionNumber>
    

    Ha a Compute Gallery legújabb verzióját kell beszereznie, egy Azure PowerShell- vagy Azure CLI-feladattal szerezze be, és állítson be egy DevOps-változót. Használja a változót a VM Image Builder DevOps-feladatban. További információkért tekintse meg a legújabb képverzió erőforrás-azonosítójának lekérése című témakör példáit.

  • (Piactér) Alaprendszerkép: Használja a népszerű rendszerképek legördülő listáját, amely mindig a támogatott operációs rendszerek legújabb verzióját használja.

    Ha az alaprendszerkép nem szerepel a listában, a pontos képet a használatával Publisher:Offer:Skuadhatja meg.

    (Nem kötelező) Alaprendszerkép verziója: Megadhatja a használni kívánt rendszerkép verzióját. Az alapértelmezett verzió a következő latest: .

Testreszabás

Az alábbi szakaszok a tevékenységek testreszabásának különböző módjait ismertetik.

Kiépítési eszköz

Kezdetben két testreszabás támogatott, a Shell és a PowerShell. Csak a beágyazott elemek támogatottak. Ha szkripteket szeretne letölteni, átadhatja a beágyazott parancsokat.

Az operációs rendszer esetében válassza a PowerShell vagy a Shell lehetőséget.

A Windows Update feladat

Csak Windows esetén a feladat a testreszabások végén futtatja a Windows Update-et. A szükséges újraindításokat is kezeli.

A feladat a következő Windows Update-konfigurációt futtatja:

    "type": "WindowsUpdate",
    "searchCriteria": "IsInstalled=0",
    "filters": [
        "exclude:$_.Title -like '*Preview*'",
        "include:$true"

A feladat olyan fontos és ajánlott Windows-Frissítések telepít, amelyek nem előzetes verziójúak.

Újraindítások kezelése

A DevOps-feladat jelenleg nem támogatja a Windows-buildek újraindítását. Ha PowerShell-kóddal próbál újraindulni, a build meghiúsul. Linux-buildek viszont újraindíthatók kód használatával.

Buildelési útvonal

A feladat úgy lett kialakítva, hogy képes legyen devOps Build kiadási összetevőket injektálni a lemezképbe. A munka elvégzéséhez be kell állítania egy buildelési folyamatot. A kiadási folyamat beállításában adja hozzá a buildösszetevők adattárát.

Screenshot showing how to add an artifact in the release pipeline.

Válassza a Build Path (Útvonal létrehozása) gombot a képre helyezni kívánt buildmappa kiválasztásához. A VM Image Builder-feladat az összes benne lévő fájlt és könyvtárat átmásolja. A rendszerkép létrehozásakor a VM Image Builder az operációs rendszertől függően különböző elérési utakon helyezi üzembe a fájlokat és könyvtárakat.

Fontos

Adattár-összetevő hozzáadásakor előfordulhat, hogy a könyvtár neve aláhúzásjellel (_) van előtaggal el van adva. Az aláhúzás a beágyazott parancsokkal kapcsolatos problémákat okozhat. Ügyeljen arra, hogy a parancsokban a megfelelő idézőjeleket használja.

Az alábbi példa a működést mutatja be:

Screenshot of a directory structure showing hierarchy.

  • Windows esetén: A fájlok a C: meghajtón találhatók. Létrejön egy buildArtifacts nevű könyvtár, amely tartalmazza a webapp könyvtárat.

  • Linux esetén: A fájlok a /tmp könyvtárban találhatók. Létrejön webapp a könyvtár, amely tartalmazza az összes fájlt és könyvtárat. Mivel ez egy ideiglenes könyvtár, a fájlokat ki kell helyeznie belőle. Ellenkező esetben a rendszer törli őket.

Beágyazott testreszabási szkript

  • Windows esetén: Beírhatja a PowerShell beágyazott parancsait vesszővel elválasztva. Ha szkriptet szeretne futtatni a buildkönyvtárban, a következőket használhatja:

    & 'c:\buildArtifacts\webapp\webconfig.ps1'
    

    Több szkriptre is hivatkozhat, vagy további parancsokat adhat hozzá. Például:

    & 'c:\buildArtifacts\webapp\webconfig.ps1'
    & 'c:\buildArtifacts\webapp\installAgent.ps1'
    
  • Linux esetén: A buildösszetevők a /tmp könyvtárba kerülnek. Sok Linux operációs rendszeren azonban újraindításkor a /tmp könyvtár tartalma törlődik. Ha azt szeretné, hogy az összetevők a képen szerepeljenek, létre kell hoznia egy másik könyvtárat, és át kell másolnia őket. Például:

    sudo mkdir /lib/buildArtifacts
    sudo cp -r "/tmp/_ImageBuilding/webapp" /lib/buildArtifacts/.
    

    Ha a /tmp könyvtár használata rendben van, a szkriptet az alábbi kóddal futtathatja:

    # Grant execute permissions to run scripts
    sudo chmod +x "/tmp/_ImageBuilding/webapp/coreConfig.sh"
    echo "running script"
    sudo . "/tmp/AppsAndImageBuilderLinux/_WebApp/coreConfig.sh"
    

Mi történik a buildösszetevőkkel a rendszerkép összeállítása után?

Megjegyzés:

A VM Image Builder nem távolítja el automatikusan a buildösszetevőket. Határozottan javasoljuk, hogy mindig használjon kódot a buildösszetevők eltávolításához.

  • Windows esetén: A VM Image Builder fájlokat helyez üzembe a C:\buildArtifacts könyvtárban. Mivel a könyvtár megmarad, egy szkript futtatásával el kell távolítania. Például:

    # Clean up buildArtifacts directory
    Remove-Item -Path "C:\buildArtifacts\*" -Force -Recurse
    
    # Delete the buildArtifacts directory
    Remove-Item -Path "C:\buildArtifacts" -Force
    
  • Linux esetén: A buildösszetevők a /tmp könyvtárba kerülnek. Sok Linux operációs rendszeren azonban a /tmp könyvtár tartalma az újraindításkor törlődik. Javasoljuk, hogy kóddal távolítsa el a tartalmat, és ne támaszkodjon az operációs rendszerre a tartalom eltávolításához. Például:

    sudo rm -R "/tmp/AppsAndImageBuilderLinux"
    

A kép buildjének teljes hossza

A Teljes hossz még nem módosítható a DevOps-folyamat tevékenységében. Az alapértelmezett 240 percet használja. Ha növelni szeretné a buildTimeoutInMinutes értékét, használhat egy Azure CLI-feladatot a kiadási folyamatban. Konfigurálja a feladatot egy sablon másolására és elküldésére. Példamegoldás : Környezeti változók és paraméterek használata a VM Image Builderrel vagy az Azure PowerShell használata.

Storage account

Válassza ki az előfeltételek között létrehozott tárfiókot. Ha nem látja a listában, a VM Image Builder nem rendelkezik hozzá engedéllyel.

A build indításakor a VM Image Builder létrehoz egy imagebuilder-vststask nevű tárolót, ahol a rendszer tárolja az adattár buildösszetevőit.

Megjegyzés:

Minden build után manuálisan kell törölnie a tárfiókot vagy a tárolót.

Elosztás

A következő három elosztott típus támogatott.

Felügyelt rendszerkép

  • Erőforrás-azonosító:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
    
  • Helyek

A számítási katalógusnak már léteznie kell.

  • Erőforrás-azonosító:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>
    
  • Régiók: Régiók listája, vesszővel elválasztva. Például,westus , eastuscentralus.

Virtuális merevlemez

Ehhez nem adhat át értékeket. A VM Image Builder kibocsátja a virtuális merevlemez virtuális merevlemezét az ideiglenes VM Image Builder erőforráscsoportba a IT_<DestinationResourceGroup>_<TemplateName>vhds-tárolóban. A kiadási build indításakor a VM Image Builder naplókat bocsát ki. Ha a VM Image Builder befejeződött, a VHD URL-címét bocsátja ki.

Választható beállítások

A virtuális gép méretbeállítását felülbírálhatja az alapértelmezett Standard_D1_v2 méretétől. Érdemes lehet csökkenteni a teljes testreszabási időt. Vagy érdemes lehet olyan képeket létrehozni, amelyek bizonyos virtuálisgép-méretektől függenek, például GPU-tól (grafikus feldolgozó egység), HPC-ről (nagy teljesítményű számítástechnikáról) és így tovább.

A feladat működése

A kiadás létrehozásakor a feladat létrehoz egy tárolót a tárfiókban imagebuilder-vststask néven. Tömöríti (tömöríti) és feltölti a buildösszetevőket, és létrehoz egy közös hozzáférésű jogosultságkód-jogkivonatot a zip-fájlhoz.

A feladat a feladatnak átadott tulajdonságokat használja a VM Image Builder-sablon összetevőjének létrehozásához. A feladat a következőket végzi el:

  • Letölti a buildösszetevő zip-fájljait és minden más kapcsolódó szkriptet. A fájlok egy tárfiókba vannak mentve az ideiglenes VM Image Builder erőforráscsoportban IT_<DestinationResourceGroup>_<TemplateName>.

  • Létrehoz egy t_ és egy 10 jegyű monoton egész számmal ellátott sablont. A sablont a rendszer a kiválasztott erőforráscsoportba menti, és az az erőforráscsoportban a build időtartamára létezik.

Example output:

start reading task parameters...
found build at:  /home/vsts/work/r1/a/_ImageBuilding/webapp
end reading parameters
getting storage account details for aibstordot1556933914
created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip
Source for image:  { type: 'SharedImageVersion',
  imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
template name:  t_1556938436xxx
starting put template...

A rendszerkép buildjének indításakor a rendszer a kiadási naplókban jelenti a futtatási állapotot:

starting run template...

Amikor a kép összeállítása befejeződött, a kimenet a következő szöveghez hasonló:

2019-05-06T12:49:52.0558229Z starting run template...
2019-05-06T13:36:33.8863094Z run template:  Succeeded
2019-05-06T13:36:33.8867768Z getting runOutput for  SharedImage_distribute
2019-05-06T13:36:34.6652541Z ==============================================================================
2019-05-06T13:36:34.6652925Z ## task output variables ##
2019-05-06T13:36:34.6658728Z $(imageUri) =  /subscriptions/<subscriptionID>/resourceGroups/aibwinsig/providers/Microsoft.Compute/galleries/my22stSIG/images/winWAppimages/versions/0.23760.13763
2019-05-06T13:36:34.6659989Z ==============================================================================
2019-05-06T13:36:34.6663500Z deleting template t_1557146959485...
2019-05-06T13:36:34.6673713Z deleting storage blob imagebuilder-vststask\webapp/18-1/webapp_1557146958741.zip
2019-05-06T13:36:34.9786039Z blob imagebuilder-vststask\webapp/18-1/webapp_1557146958741.zip is deleted
2019-05-06T13:38:37.4884068Z delete template:  Succeeded

A képsablon, és IT_<DestinationResourceGroup>_<TemplateName> törlődik.

Az $(imageUri) Azure DevOps Services (korábbi nevén Visual Studio Team Services vagy VSTS) változót használhatja a következő feladatban, vagy egyszerűen használhatja az értéket, és létrehozhat egy virtuális gépet.

Kimeneti DevOps-változók

A forrás marketplace-rendszerkép közzétevője, ajánlata, termékváltozata és verziója:

  • $(pirPublisher)
  • $(pirOffer)
  • $(pirSku)
  • $(pirVersion)

A rendszerkép URI-ja, amely az elosztott rendszerkép erőforrás-azonosítója:

  • $(imageUri)

GYIK

Használhatok már létrehozott képsablont a DevOpson kívül?

Jelenleg nem.

Megadhatja a képsablon nevét?

Nem. A rendszer egyedi sablonnevet használ, majd törli.

A VM Image Builder feladat nem sikerült. Hogyan háríthatom el a problémát?

Buildelési hiba esetén a DevOps-feladat nem törli az átmeneti erőforráscsoportot. A build testreszabási naplóját tartalmazó átmeneti erőforráscsoportot is elérheti.

A VM Image Builder feladat DevOps-naplójában hibaüzenet jelenik meg, és az üzenet tartalmazza a testreszabás.log helyét. Például:

Screenshot of an example DevOps task error that describes the failure and provides the location of the customization.log file.

További információ: A virtuálisgép-rendszerkép-készítő szolgáltatás hibaelhárítása.

A hiba kivizsgálása után törölheti az átmeneti erőforráscsoportot. Először törölje a VM Image Builder-sablon erőforrás-összetevőt. Az összetevő előtagja t_, és a DevOps-feladat összeállítási naplójában találja:

...
Source for image:  { type: 'SharedImageVersion',
  imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
...
template name:  t_1556938436xxx
...

A VM Image Builder-sablon erőforrás-összetevője abban az erőforráscsoportban található, amelyet eredetileg a tevékenységben adott meg. Ha végzett a hibaelhárítással, törölje az összetevőt. Ha az Azure Portal használatával törli, az erőforráscsoporton belül válassza a Rejtett típusok megjelenítése lehetőséget az összetevő megtekintéséhez.

További lépések

További információ: VM Image Builder – áttekintés.