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:
Kararlı VM Görüntü Oluşturucusu görevi: Test edilen en son kararlı derlemedir ve Genel Veri Koruma Yönetmeliği (GDPR) sorunu bildirilmemiştir.
Kararsız VM Görüntü Oluşturucusu görevi: Görev kodunu kararlı olarak yayınlamadan önce en son güncelleştirmeleri ve özellikleri test edebilmeniz için kararsız olarak adlandırılan bir görev sunuyoruz. Yaklaşık bir hafta sonra müşteri tarafından bildirilen veya telemetri sorunu yoksa görev kodunu kararlı hale getiririz.
Ö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:
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
Yayın İşlem Hattı>Düzenleme'yi seçin.
Kullanıcı Aracısı'nda, Resim Oluşturucusu'nu eklemek ve aramak için artı işaretini (+) seçin.
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>_guid
oluş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:Sku
tam 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.
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:
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. Dizinwebapp
, 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
Azure Compute Gallery
İş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
,eastus
centralus
.
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:
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ış.