Ú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:

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

  1. Vyberte Upravit kanál>verze.

  2. V uživatelském agentu vyberte znaménko plus (+) a přidejte a vyhledejte Image Builder.

  3. 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>_guidprostř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í.

Snímek obrazovky znázorňující, jak přidat artefakt do kanálu verze

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:

Snímek obrazovky s adresářovou strukturou zobrazující hierarchii

  • 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ří se webapp 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í

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,westuseastus , 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:

Snímek obrazovky s ukázkou chyby úlohy DevOps popisem selhání a umístěním souboru customization.log

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.