Úloha DevOps služby Azure VM Image Builderu (Preview)
Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️
V tomto článku se dozvíte, jak pomocí úlohy Azure DevOps vložit artefakty sestavení do image virtuálního počítače, abyste mohli nainstalovat a nakonfigurovat aplikaci a operační systém.
Důležité
Úloha Azure DevOps pro Tvůrce imagí virtuálních počítačů je aktuálně ve verzi PREVIEW. Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.
Verze úloh DevOps
V tuto chvíli existují dvě úlohy DevOps v Azure VM Image Builderu:
Stabilní úloha VM Image Builderu: Nejnovější stabilní build, který byl otestován, a hlásí žádné obecné problémy s nařízením o ochraně osobních údajů (GDPR).
Nestabilní úloha VM Image Builderu: Nabízíme tzv. nestabilní úlohu, abyste mohli otestovat nejnovější aktualizace a funkce před vydáním kódu úkolu jako stabilní. Přibližně po týdnu, pokud neexistují žádné problémy se zákazníkem nebo telemetrií, propagujeme kód úkolu tak, aby byl stabilní.
Požadavky
Poznámka:
Úloha Image Builderu virtuálního počítače v současné době nepodporuje restartování Windows nebo spouštění příkazů se zvýšenými oprávněními jako správce. To znamená, že úloha není vhodná pro scénáře služby Azure Virtual Desktop ani pro přizpůsobení Windows, které tyto funkce vyžadují. Pokud chcete používat DevOps s nástrojem VM Image Builder, vnořte šablonu do úlohy Azure Resource Manageru a použijte azure CLI nebo úlohy PowerShellu.
Než začnete, musíte:
Nainstalujte stabilní úlohu DevOps ze sady Visual Studio Marketplace.
Máte účet Azure DevOps Services (dříve Visual Studio Team Services nebo VSTS) a vytvořený kanál buildu.
Zaregistrujte a povolte požadavky na funkce Image Builderu virtuálních počítačů v předplatném, které kanály používají:
Ve skupině prostředků zdrojové image vytvořte standardní účet úložiště Azure. Můžete použít jiné skupiny prostředků nebo účty úložiště. Účet úložiště se používá k přenosu artefaktů sestavení z úlohy DevOps do image.
# 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
Přidání úlohy do kanálu verze
Vyberte Upravit kanál>verze.
V uživatelském agentu vyberte znaménko plus (+) a přidejte a vyhledejte Image Builder.
Vyberte Přidat.
V následujících částech nastavte vlastnosti úlohy.
Předplatné Azure
V rozevíracím seznamu vyberte předplatné, které má VM Image Builder spustit. Použijte předplatné, ve kterém jsou uložené zdrojové image a které se mají distribuovat. Musíte udělit přispěvateli Image Builderu virtuálního počítače přístup k předplatnému nebo skupině prostředků.
Skupina prostředků
Použijte skupinu prostředků, do které se uloží artefakt šablony dočasné image. Při vytváření artefaktu šablony se vytvoří další dočasná skupina IT_<DestinationResourceGroup>_<TemplateName>_guid
prostředků Image Builderu virtuálního počítače. Dočasná skupina prostředků ukládá metadata obrázků, například skripty. Na konci úlohy se odstraní artefakt šablony image a dočasná skupina prostředků Image Builderu virtuálního počítače.
Umístění
Umístění je oblast, ve které se spustí Image Builder virtuálního počítače. Podporuje se jenom nastavený počet oblastí . Zdrojové image musí být přítomné v tomto umístění. Pokud například používáte Galerii výpočetních prostředků Azure (dříve Sdílená galerie imagí), musí v této oblasti existovat replika.
Spravovaná identita (povinné)
Image Builder virtuálního počítače vyžaduje spravovanou identitu, kterou používá ke čtení zdrojových vlastních imagí, připojení ke službě Azure Storage a vytváření vlastních imagí. Další informace najdete v tématu Další informace o nástroji Image Builder virtuálního počítače.
Podpora virtuální sítě
Vytvořený virtuální počítač můžete nakonfigurovat tak, aby byl v konkrétní virtuální síti. Při konfiguraci úlohy zadejte ID prostředku před existující podsítě do vstupního pole konfigurace virtuální sítě (volitelné). Pokud není potřeba použít žádnou konkrétní virtuální síť, vyhnete se ID prostředku. Další informace najdete v tématu Možnosti sítě služby Azure VM Image Builder.
Zdroj
Zdrojové image musí být podporované operační systémy VM Image Builderu. Můžete zvolit existující vlastní image ve stejné oblasti, ze které nástroj Image Builder virtuálního počítače běží:
Spravovaná image: Předejte ID prostředku. Příklad:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
Galerie výpočetních prostředků: Předejte ID prostředku verze image. Příklad:
/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/<versionNumber>
Pokud potřebujete získat nejnovější verzi galerie výpočetních prostředků, použijte úlohu Azure PowerShellu nebo Azure CLI, abyste ji získali a nastavili proměnnou DevOps. Použijte proměnnou v úloze DevOps VM Image Builderu. Další informace najdete v příkladech v tématu Získání ID prostředku verze nejnovější image.
(Marketplace) Základní image: Použijte rozevírací seznam oblíbených imagí, který vždy používá nejnovější verzi podporovaných operačních systémů.
Pokud základní image není v seznamu, můžete určit přesnou image pomocí .
Publisher:Offer:Sku
(Volitelné) Základní verze image: Můžete zadat verzi image, kterou chcete použít. Výchozí verze je
latest
.
Přizpůsobení
V následujících částech najdete různé způsoby přizpůsobení úkolů.
Zřizovací funkce
Zpočátku se podporují dva úpravce, prostředí Shell a PowerShell. Podporuje se jenom vložený text. Pokud chcete stáhnout skripty, můžete k tomu předat vložené příkazy.
V operačním systému vyberte PowerShell nebo Prostředí.
Úloha služba Windows Update
Pouze pro Windows se úloha spustí služba Windows Update na konci přizpůsobení. Zpracovává také požadované restartování.
Úloha spustí následující konfiguraci služba Windows Update:
"type": "WindowsUpdate",
"searchCriteria": "IsInstalled=0",
"filters": [
"exclude:$_.Title -like '*Preview*'",
"include:$true"
Úloha nainstaluje důležité a doporučené služba Windows Update, které nejsou verze preview.
Zpracování restartování
Úloha DevOps v současné době nepodporuje restartování buildů Windows. Pokud se pokusíte restartovat pomocí kódu PowerShellu, sestavení selže. K restartování linuxových buildů ale můžete použít kód.
Cesta sestavení
Úloha je navržená tak, aby mohla do image vkládat artefakty vydané verze DevOps Buildu. Aby to fungovalo, musíte nastavit kanál buildu. V nastavení kanálu verze přidejte úložiště artefaktů sestavení.
Vyberte tlačítko Cesta k sestavení a zvolte složku sestavení, kterou chcete umístit na obrázek. Úloha Image Builderu virtuálního počítače zkopíruje všechny soubory a adresáře v něm. Když image vytváříte, nástroj Image Builder virtuálního počítače nasadí soubory a adresáře do různých cest v závislosti na operačním systému.
Důležité
Když přidáváte artefakt úložiště, můžete zjistit, že název adresáře má předponu podtržítka (_). Podtržítko může způsobit problémy s vloženými příkazy. Nezapomeňte v příkazech použít příslušné uvozovky.
Následující příklad vysvětluje, jak to funguje:
Pro Windows: Soubory existují na jednotce C: . Vytvoří se adresář s názvem buildArtifacts, který obsahuje adresář webové aplikace.
Pro Linux: Soubory existují v adresáři
/tmp
. Vytvoří sewebapp
adresář, který obsahuje všechny soubory a adresáře. Vzhledem k tomu, že se jedná o dočasný adresář, musíte přesunout soubory z něj. Jinak se odstraní.
Vložený skript pro přizpůsobení
Pro Windows: Můžete zadat vložené příkazy PowerShellu oddělené čárkami. Pokud chcete spustit skript v adresáři sestavení, můžete použít:
& 'c:\buildArtifacts\webapp\webconfig.ps1'
Můžete odkazovat na více skriptů nebo přidat další příkazy. Příklad:
& 'c:\buildArtifacts\webapp\webconfig.ps1' & 'c:\buildArtifacts\webapp\installAgent.ps1'
Pro Linux: Artefakty sestavení jsou vloženy do adresáře /tmp . V mnoha operačních systémech Linux se však při restartování odstraní obsah adresáře /tmp . Pokud chcete, aby artefakty existovaly v imagi, musíte vytvořit jiný adresář a zkopírovat je. Příklad:
sudo mkdir /lib/buildArtifacts sudo cp -r "/tmp/_ImageBuilding/webapp" /lib/buildArtifacts/.
Pokud jste v pořádku s použitím adresáře /tmp , můžete skript spustit pomocí následujícího kódu:
# Grant execute permissions to run scripts sudo chmod +x "/tmp/_ImageBuilding/webapp/coreConfig.sh" echo "running script" sudo . "/tmp/AppsAndImageBuilderLinux/_WebApp/coreConfig.sh"
Co se stane s artefakty sestavení po sestavení image?
Poznámka:
VM Image Builder automaticky neodebere artefakty sestavení. Důrazně doporučujeme vždy použít kód k odebrání artefaktů sestavení.
Pro Windows: Image Builder virtuálního počítače nasadí soubory do adresáře C:\buildArtifacts . Vzhledem k tomu, že je adresář trvalý, musíte ho odebrat spuštěním skriptu. Příklad:
# Clean up buildArtifacts directory Remove-Item -Path "C:\buildArtifacts\*" -Force -Recurse # Delete the buildArtifacts directory Remove-Item -Path "C:\buildArtifacts" -Force
Pro Linux: Artefakty sestavení jsou vloženy do adresáře /tmp . V mnoha operačních systémech Linux se však při restartování odstraní obsah adresáře /tmp . Doporučujeme použít kód k odebrání obsahu a nepoužívat operační systém k odebrání obsahu. Příklad:
sudo rm -R "/tmp/AppsAndImageBuilderLinux"
Celková délka sestavení image
V úloze kanálu DevOps zatím nejde změnit celkovou délku. Používá výchozí hodnotu 240 minut. Pokud chcete zvýšit buildTimeoutInMinutes, můžete použít úlohu Azure CLI v kanálu verze. Nakonfigurujte úlohu tak, aby zkopírovala šablonu a odeslala ji. Příklad řešení najdete v tématu Použití proměnných prostředí a parametrů v Nástroji image virtuálního počítače nebo použití Azure PowerShellu.
Účet úložiště
Vyberte účet úložiště, který jste vytvořili v požadavcích. Pokud ho v seznamu nevidíte, nástroj Image Builder virtuálního počítače k němu nemá oprávnění.
Po spuštění sestavení vytvoří Image Builder virtuálního počítače kontejner s názvem imagebuilder-vststask, kde jsou uloženy artefakty sestavení z úložiště.
Poznámka:
Po každém sestavení je potřeba ručně odstranit účet úložiště nebo kontejner.
Rozmístit
Podporují se následující tři typy distribuce.
Spravovaná image
ID prostředku:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
Umístění
Azure Compute Gallery
Galerie výpočetních prostředků už musí existovat.
ID prostředku:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>
Oblasti: Seznam oblastí oddělených čárkami. Například,
westus
eastus
,centralus
.
Virtuální pevný disk
Do tohoto objektu nemůžete předat žádné hodnoty. Image Builder virtuálního počítače vygeneruje virtuální pevný disk do dočasné skupiny IT_<DestinationResourceGroup>_<TemplateName>
prostředků Image Builderu virtuálního počítače v kontejneru virtuálních pevných disků . Při spuštění sestavení vydané verze vygeneruje Image Builder protokoly. Po dokončení Image Builderu virtuálního počítače vygeneruje adresu URL virtuálního pevného disku.
Volitelná nastavení
Nastavení velikosti virtuálního počítače můžete přepsat z výchozí velikosti Standard_D1_v2. Můžete to udělat, abyste zkrátili celkovou dobu přizpůsobení. Nebo můžete chtít vytvořit image, které závisejí na určitých velikostech virtuálních počítačů, jako je GPU (grafická procesorová jednotka), HPC (vysokovýkonné výpočetní prostředí) atd.
Jak úkol funguje
Při vytváření verze úloha vytvoří kontejner v účtu úložiště s názvem imagebuilder-vststask. Zazipuje (komprimuje) a nahraje artefakty sestavení a vytvoří token sdíleného přístupového podpisu pro soubor ZIP.
Úloha používá vlastnosti, které jsou předány úkolu k vytvoření artefaktu šablony VM Image Builderu. Úkol provede následující akce:
Stáhne soubor ZIP artefaktu sestavení a všechny další přidružené skripty. Soubory jsou uloženy v účtu úložiště v dočasné skupině prostředků Image Builderu virtuálního počítače
IT_<DestinationResourceGroup>_<TemplateName>
.Vytvoří šablonu s předponou t_ a 10místným jednociferným celočíselným číslem. Šablona se uloží do vybrané skupiny prostředků a existuje po dobu trvání sestavení ve skupině prostředků.
Příklad výstupu:
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...
Po spuštění sestavení image se stav spuštění zobrazí v protokolech vydaných verzí:
starting run template...
Po dokončení sestavení image se výstup podobá následujícímu textu:
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
Šablona obrázku a IT_<DestinationResourceGroup>_<TemplateName>
odstraní se.
Můžete použít proměnnou $(imageUri)
Azure DevOps Services (dříve Visual Studio Team Services nebo VSTS) a použít ji v dalším úkolu nebo použít hodnotu a vytvořit virtuální počítač.
Výstupní proměnné DevOps
Tady je vydavatel, nabídka, skladová položka a verze image zdrojového marketplace:
$(pirPublisher)
$(pirOffer)
$(pirSku)
$(pirVersion)
Tady je identifikátor URI image, což je ID prostředku distribuované image:
$(imageUri)
Často kladené dotazy
Můžu použít existující šablonu image, kterou jsem už vytvořil(a) mimo DevOps?
V tuto chvíli to není možné.
Můžu zadat název šablony obrázku?
Ne. Použije se jedinečný název šablony a pak se odstraní.
Úloha Image Builderu virtuálního počítače selhala. Jak můžu tento problém vyřešit?
Pokud dojde k selhání sestavení, úloha DevOps neodstraní přípravnou skupinu prostředků. Můžete získat přístup k přípravné skupině prostředků, která obsahuje protokol přizpůsobení sestavení.
V protokolu DevOps pro úlohu VM Image Builderu se zobrazí chyba a zpráva bude obsahovat customization.log umístění. Příklad:
Další informace najdete v tématu Řešení potíží se službou VM Image Builder.
Po prošetření selhání můžete pracovní skupinu prostředků odstranit. Nejprve odstraňte artefakt prostředku šablony Image Builderu virtuálního počítače. Artefakt má předponu t_ a najdete ho v protokolu sestavení úlohy DevOps:
...
Source for image: { type: 'SharedImageVersion',
imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
...
template name: t_1556938436xxx
...
Artefakt prostředku šablony VM Image Builderu je ve skupině prostředků, která byla původně zadána v úloze. Až budete hotovi s řešením potíží, odstraňte artefakt. Pokud ho odstraňujete pomocí webu Azure Portal, v rámci skupiny prostředků vyberte Zobrazit skryté typy a zobrazte artefakt.
Další kroky
Další informace najdete v tématu Přehled nástroje Image Builder virtuálního počítače.