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:
Stabil VM Image Builder-feladat: A legújabb stabil build, amelyet teszteltek, és nem jelent általános adatvédelmi szabályozással (GDPR) kapcsolatos problémákat.
Instabil VM Image Builder-feladat: Egy úgynevezett instabil feladatot kínálunk, hogy tesztelhesse a legújabb frissítéseket és funkciókat, mielőtt stabilként bocsátjuk ki a feladatkódot. Körülbelül egy hét elteltével, ha nincsenek ügyfél által jelentett vagy telemetriai problémák, a feladatkódot stabilsá tesszük.
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
Válassza a Kiadási folyamat>szerkesztése lehetőséget.
A Felhasználói ügynökben válassza ki a pluszjelet (+) a Képszerkesztő hozzáadásához és kereséséhez.
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>_guid
jö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:Sku
adhatja 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.
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:
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önwebapp
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
Azure Compute Gallery
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
,eastus
centralus
.
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:
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.