Azure VM Görüntü Oluşturucu hizmeti DevOps görevi (önizleme)

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Bu makalede, uygulamanızı ve işletim sisteminizi yükleyip yapılandırabilmeniz için bir sanal makine (VM) görüntüsüne derleme yapıtları eklemek için Azure DevOps görevini kullanmayı öğreneceksiniz.

Önemli

VM Görüntü Oluşturucusu için Azure DevOps görevi şu anda ÖNİzLEME aşamasındadır. Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

DevOps görev sürümleri

Şu anda iki Azure VM Görüntü Oluşturucusu DevOps görevi vardır:

Önkoşullar

Dekont

VM Görüntü Oluşturucusu görevi şu anda Windows Yeniden Başlatmayı veya yükseltilmiş komutları Yönetici istrator olarak çalıştırmayı desteklemez. Başka bir ifadeyle, görev bu özellikleri gerektiren Azure Sanal Masaüstü senaryoları veya Windows özelleştirmeleri için uygun değildir. DevOps'yi VM Görüntü Oluşturucusu ile kullanmak için şablonu bir Azure Resource Manager görevi içinde iç içe geçirin ve Azure CLI veya PowerShell görevlerini kullanın.

Başlamadan önce şunları yapmanız gerekir:

  • Visual Studio Market'ten Kararlı DevOps görevini yükleyin.

  • Bir Azure DevOps Services (eski adıyla Visual Studio Team Services veya VSTS) hesabınız ve bir Derleme İşlem Hattı oluşturmanız gerekir.

  • İşlem hatları tarafından kullanılan abonelikte VM Görüntü Oluşturucusu özellik gereksinimlerini kaydedin ve etkinleştirin:

  • Kaynak görüntü kaynak grubunda standart bir Azure depolama hesabı oluşturun. Diğer kaynak gruplarını veya depolama hesaplarını kullanabilirsiniz. Depolama hesabı, derleme yapıtlarını DevOps görevinden görüntüye aktarırken kullanılır.

    # 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
    

Yayın işlem hattına görev ekleme

  1. Yayın İşlem Hattı>Düzenleme'yi seçin.

  2. Kullanıcı Aracısı'nda, Resim Oluşturucusu'nu eklemek ve aramak için artı işaretini (+) seçin.

  3. Ekle'yi seçin.

Aşağıdaki bölümlerde görev özelliklerini ayarlayın.

Azure aboneliği

Açılan listede VM Görüntü Oluşturucusu'nu çalıştırmak istediğiniz aboneliği seçin. Kaynak görüntülerinizin depolandığı ve görüntülerin dağıtılacağı aboneliği kullanın. VM Görüntü Oluşturucusu'na abonelik veya kaynak grubu için katkıda bulunan erişimi vermeniz gerekir.

Kaynak grubu

Geçici görüntü şablonu yapıtının depolanacağı kaynak grubunu kullanın. Şablon yapıtı oluşturduğunuzda, başka bir geçici VM Görüntü Oluşturucusu kaynak grubu IT_<DestinationResourceGroup>_<TemplateName>_guidoluşturulur. Geçici kaynak grubu, betikler gibi görüntü meta verilerini depolar. Görevin sonunda görüntü şablonu yapıtı ve geçici VM Görüntü Oluşturucusu kaynak grubu silinir.

Konum

Konum, VM Görüntü Oluşturucusu'nu çalıştıracağı bölgedir. Yalnızca belirli sayıda bölge desteklenir. Kaynak görüntülerin bu konumda mevcut olması gerekir. Örneğin, Azure İşlem Galerisi 'ni (eski adıyla Paylaşılan Görüntü Galerisi) kullanıyorsanız, bu bölgede bir çoğaltma bulunmalıdır.

Yönetilen kimlik (gerekli)

VM Görüntü Oluşturucusu, kaynak özel görüntüleri okumak, Azure Depolama'a bağlanmak ve özel görüntüler oluşturmak için kullandığı yönetilen bir kimlik gerektirir. Daha fazla bilgi için bkz . VM Görüntü Oluşturucusu hakkında bilgi edinin.

Sanal ağ desteği

Oluşturulan VM'yi belirli bir sanal ağda olacak şekilde yapılandırabilirsiniz. Görevi yapılandırırken, VNet Yapılandırması (İsteğe bağlı) giriş alanında önceden var olan bir alt ağın kaynak kimliğini belirtin. Belirli bir sanal ağın kullanılması gerekmiyorsa kaynak kimliğini atla. Daha fazla bilgi için bkz . Azure VM Görüntü Oluşturucu hizmeti ağ seçenekleri.

Source

Kaynak görüntüler desteklenen VM Image Builder işletim sistemlerinden olmalıdır. VM Image Builder'ın çalıştığı bölgede var olan özel görüntüleri seçebilirsiniz:

  • Yönetilen Görüntü: Kaynak kimliğini geçirin. Örneğin:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
    
  • İşlem Galerisi: Görüntü sürümünün kaynak kimliğini geçirin. Örneğin:

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

    En son İşlem Galerisi sürümünü almanız gerekiyorsa, bunu almak ve bir DevOps değişkeni ayarlamak için bir Azure PowerShell veya Azure CLI görevi kullanın. VM Görüntü Oluşturucusu DevOps görevinde değişkenini kullanın. Daha fazla bilgi için En son görüntü sürümü kaynak kimliğini alma'daki örneklere bakın.

  • (Market) Temel görüntü: Desteklenen işletim sistemlerinin her zaman en son sürümünü kullanan popüler görüntülerin açılan listesini kullanın.

    Temel görüntü listede değilse, kullanarak Publisher:Offer:Skutam görüntüyü belirtebilirsiniz.

    (İsteğe bağlı) Temel görüntü sürümü: Kullanmak istediğiniz görüntünün sürümünü sağlayabilirsiniz. Varsayılan sürüm: latest.

Özelleştirme

Aşağıdaki bölümlerde görevleri özelleştirmenin çeşitli yolları açıklanmıştır.

Sağlama

Başlangıçta iki özelleştirici desteklenir: Shell ve PowerShell. Yalnızca satır içi desteklenir. Betikleri indirmek istiyorsanız, bunu yapmak için satır içi komutlar geçirebilirsiniz.

İşletim sisteminiz için PowerShell veya Shell'i seçin.

Windows Update görevi

Yalnızca Windows için, görev özelleştirmelerin sonunda Windows Update'i çalıştırır. Ayrıca gerekli yeniden başlatmaları da işler.

Görev aşağıdaki Windows Update yapılandırmasını çalıştırır:

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

Görev, önizleme sürümleri olmayan önemli ve önerilen Windows Güncelleştirmeler yükler.

Yeniden başlatmaları işleme

DevOps görevi şu anda Windows derlemelerinin yeniden başlatılmasını desteklememektedir. PowerShell koduyla yeniden başlatmayı denerseniz derleme başarısız olur. Ancak Linux derlemelerini yeniden başlatmak için kod kullanabilirsiniz.

Derleme yolu

Görev, görüntüye DevOps Derleme yayın yapıtları eklemek için tasarlanmıştır. Bunu yapmak için bir derleme işlem hattı ayarlamanız gerekir. Yayın işlem hattı kurulumunda derleme yapıtlarının depounu ekleyin.

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

Görüntüye yerleştirilmesini istediğiniz derleme klasörünü seçmek için Yol Oluştur düğmesini seçin. VM Görüntü Oluşturucusu görevi, içindeki tüm dosyaları ve dizinleri kopyalar. Görüntü oluşturulduğunda, VM Görüntü Oluşturucusu işletim sistemine bağlı olarak dosyaları ve dizinleri farklı yollara dağıtır.

Önemli

Depo yapıtı eklerken, dizin adının önüne bir alt çizgi karakteri (_) eklendiğini görebilirsiniz. Alt çizgi, satır içi komutlarla ilgili sorunlara neden olabilir. Komutlarda uygun tırnak işaretlerini kullandığınızdan emin olun.

Aşağıdaki örnekte bunun nasıl çalıştığı açıklanmaktadır:

Screenshot of a directory structure showing hierarchy.

  • Windows için: Dosyalar C: sürücüsünde bulunur. webapp dizinini içeren buildArtifacts adlı bir dizin oluşturulur.

  • Linux için: Dosyalar dizinde /tmp bulunur. Dizin webapp , tüm dosyaları ve dizinleri içeren oluşturulur. Bu geçici bir dizin olduğundan, dosyaları bu dizinden taşımanız gerekir. Aksi takdirde silinirler.

Satır içi özelleştirme betiği

  • Windows için: PowerShell satır içi komutlarını virgülle ayırarak girebilirsiniz. Derleme dizininizde bir betik çalıştırmak istiyorsanız şunları kullanabilirsiniz:

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

    Birden çok betike başvurabilir veya daha fazla komut ekleyebilirsiniz. Örneğin:

    & 'c:\buildArtifacts\webapp\webconfig.ps1'
    & 'c:\buildArtifacts\webapp\installAgent.ps1'
    
  • Linux için: Derleme yapıtları /tmp dizinine konur. Ancak, birçok Linux işletim sisteminde yeniden başlatmada /tmp dizin içeriği silinir. Yapıtların görüntüde var olmasını istiyorsanız, başka bir dizin oluşturup bunları üzerine kopyalamanız gerekir. Örneğin:

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

    /tmp dizinini kullanmakta sorun yoksa aşağıdaki kodu kullanarak betiği çalıştırabilirsiniz:

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

Görüntü derlemeden sonra derleme yapıtlarına ne olur?

Dekont

VM Görüntü Oluşturucusu derleme yapıtlarını otomatik olarak kaldırmaz. Derleme yapıtlarını kaldırmak için her zaman kod kullanmanızı kesinlikle öneririz.

  • Windows için: VM Görüntü Oluşturucusu dosyaları C:\buildArtifacts dizinine dağıtır. Dizin kalıcı olduğundan, bir betik çalıştırarak dizini kaldırmanız gerekir. Örneğin:

    # Clean up buildArtifacts directory
    Remove-Item -Path "C:\buildArtifacts\*" -Force -Recurse
    
    # Delete the buildArtifacts directory
    Remove-Item -Path "C:\buildArtifacts" -Force
    
  • Linux için: Derleme yapıtları /tmp dizinine konur. Ancak, birçok Linux işletim sisteminde , /tmp dizin içeriği yeniden başlatmada silinir. İçeriği kaldırmak için kod kullanmanızı ve içeriği kaldırmak için işletim sistemine güvenmemenizi öneririz. Örneğin:

    sudo rm -R "/tmp/AppsAndImageBuilderLinux"
    

Toplam görüntü derleme uzunluğu

Toplam uzunluk henüz DevOps işlem hattı görevinde değiştirilemez. Varsayılan olarak 240 dakika kullanır. buildTimeoutInMinutes değerini artırmak istiyorsanız yayın işlem hattında bir Azure CLI görevi kullanabilirsiniz. Bir şablonu kopyalayıp göndermek için görevi yapılandırın. Örnek bir çözüm için bkz . VM Image Builder ile ortam değişkenlerini ve parametrelerini kullanma veya Azure PowerShell kullanma.

Storage account

Önkoşullarda oluşturduğunuz depolama hesabını seçin. Listede görmüyorsanız VM Görüntü Oluşturucusu'nun izinlerine sahip değildir.

Derleme başladığında VM Görüntü Oluşturucusu, depodaki derleme yapıtlarının depolandığı imagebuilder-vststask adlı bir kapsayıcı oluşturur.

Dekont

Her derlemeden sonra depolama hesabını veya kapsayıcıyı el ile silmeniz gerekir.

Dağıt

Aşağıdaki üç dağıtım türü desteklenir.

Yönetilen görüntü

  • Kaynak kimliği:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>
    
  • Yerleşimler

İşlem Galerisi zaten mevcut olmalıdır.

  • Kaynak kimliği:

    /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>
    
  • Bölgeler: Bölgelerin listesi, virgülle ayrılmış. Örneğin,westus , eastuscentralus.

Sanal sabit disk

Buna herhangi bir değer geçiremezsiniz. VM Görüntü Oluşturucusu, sanal sabit disk VHD'sini vhds kapsayıcısında geçici VM Görüntü Oluşturucusu kaynak grubuna IT_<DestinationResourceGroup>_<TemplateName>yayar. Yayın derlemesini başlattığınızda VM Görüntü Oluşturucusu günlükleri yayar. VM Görüntü Oluşturucusu tamamlandığında VHD URL'sini gösterir.

İsteğe bağlı ayarlar

VM boyutu ayarını varsayılan Standard_D1_v2 boyutundan geçersiz kılabilirsiniz. Toplam özelleştirme süresini azaltmak için bunu yapmak isteyebilirsiniz. İsterseniz GPU (grafik işleme birimi), HPC (yüksek performanslı bilgi işlem) gibi belirli VM boyutlarına bağlı görüntüler oluşturmak da isteyebilirsiniz.

Görev nasıl çalışır?

Sürümü oluşturduğunuzda, görev depolama hesabında imagebuilder-vststask adlı bir kapsayıcı oluşturur. Derleme yapıtlarınızı sıkıştırır (sıkıştırır) ve zip dosyası için paylaşılan erişim imzası belirteci oluşturur.

Görev, VM Görüntü Oluşturucusu şablon yapıtını oluşturmak için göreve geçirilen özellikleri kullanır. Görev aşağıdakileri yapar:

  • Derleme yapıtı zip dosyasını ve ilişkili diğer betikleri indirir. Dosyalar geçici VM Görüntü Oluşturucusu kaynak grubundaki IT_<DestinationResourceGroup>_<TemplateName>bir depolama hesabına kaydedilir.

  • t_ ve 10 basamaklı monoton tamsayı ile önekli bir şablon oluşturur. Şablon seçtiğiniz kaynak grubuna kaydedilir ve kaynak grubundaki derleme süresi boyunca bulunur.

Örnek çıkış:

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...

Görüntü derlemesi başladığında, çalıştırma durumu yayın günlüklerinde bildirilir:

starting run template...

Görüntü derlemesi tamamlandığında çıkış aşağıdaki metne benzer:

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

Resim şablonu ve IT_<DestinationResourceGroup>_<TemplateName> silinir.

Azure DevOps Services (eski adıyla Visual Studio Team Services veya VSTS) değişkenini alıp $(imageUri) sonraki görevde kullanabilir veya yalnızca değerini kullanıp bir VM oluşturabilirsiniz.

Çıkış DevOps değişkenleri

Kaynak market görüntüsünün yayımcısı, teklifi, SKU'su ve sürümü aşağıdadır:

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

Dağıtılmış görüntünün kaynak kimliği olan görüntü URI'si aşağıdadır:

  • $(imageUri)

SSS

DevOps dışında önceden oluşturduğum mevcut bir görüntü şablonunu kullanabilir miyim?

Şu anda hayır.

Resim şablonu adını belirtebilir miyim?

Hayır. Benzersiz bir şablon adı kullanılır ve ardından silinir.

VM Görüntü Oluşturucusu görevi başarısız oldu. Sorunu nasıl giderebilirim?

Derleme hatası varsa DevOps görevi hazırlama kaynak grubunu silmez. Derleme özelleştirme günlüğünü içeren hazırlama kaynak grubuna erişebilirsiniz.

VM Görüntü Oluşturucusu görevi için DevOps günlüğünde bir hata görürsünüz ve iletide customization.log konumu yer alır. Örneğin:

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

Daha fazla bilgi için bkz . VM Görüntü Oluşturucusu hizmetinde sorun giderme.

Hatayı araştırdıktan sonra hazırlama kaynak grubunu silebilirsiniz. İlk olarak VM Görüntü Oluşturucusu şablonu kaynak yapıtını silin. Yapıtın ön eki t_ ve Bunu DevOps görev derleme günlüğünde bulabilirsiniz:

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

VM Görüntü Oluşturucusu şablonu kaynak yapıtı, başlangıçta görevde belirtilen kaynak grubunda yer alır. Sorun gidermeyi bitirdiğinizde yapıtı silin. Azure portalını kullanarak siliyorsanız kaynak grubunda Gizli Türleri Göster'i seçerek yapıtı görüntüleyin.

Sonraki adımlar

Daha fazla bilgi için bkz . VM Görüntü Oluşturucu'ya genel bakış.