Azure Image Builder Bicep veya ARM şablonu JSON şablonu oluşturma
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri
Azure Image Builder, Görüntü Oluşturucusu hizmetine bilgi geçirmek için bir Bicep dosyası veya ARM şablonu JSON şablon dosyası kullanır. Bu makalede, kendi dosyalarınızı oluşturabilmeniz için dosyaların bölümlerinin üzerinden geçeceğiz. En son API sürümleri için bkz . şablon başvurusu. Tam .json dosyalarının örneklerini görmek için bkz . Azure Image Builder GitHub.
Temel biçim:
{
"type": "Microsoft.VirtualMachineImages/imageTemplates",
"location": "<region>",
"tags": {
"<name>": "<value>",
"<name>": "<value>"
},
"identity": {},
"properties": {
"buildTimeoutInMinutes": <minutes>,
"customize": [],
"errorHandling":[],
"distribute": [],
"optimize": [],
"source": {},
"stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>",
"validate": {},
"vmProfile": {
"vmSize": "<vmSize>",
"osDiskSizeGB": <sizeInGB>,
"vnetConfig": {
"subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName1>",
"containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
"proxyVmSize": "<vmSize>"
},
"userAssignedIdentities": [
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName1>",
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName2>",
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName3>",
...
]
}
}
}
API sürümü
API sürümü, API değiştikçe zaman içinde değişir. Azure VM Görüntü Oluşturucu hizmeti için tüm önemli API değişiklikleri ve özellik güncelleştirmeleri için bkz. Azure VM Görüntü Oluşturucusu'ndaki yenilikler.
Tür
type
, olması gereken Microsoft.VirtualMachineImages/imageTemplates
kaynak türüdür.
Konum
Konum, özel görüntünün oluşturulduğu bölgedir. Aşağıdaki bölgeler desteklenir:
- Doğu ABD
- Doğu ABD 2
- Batı Orta ABD
- Batı ABD
- Batı ABD 2
- Batı ABD 3
- Orta Güney ABD
- Kuzey Avrupa
- West Europe
- Güneydoğu Asya
- Güneydoğu Avustralya
- Doğu Avustralya
- Güney Birleşik Krallık
- Batı Birleşik Krallık
- Güney Brezilya
- Orta Kanada
- Orta Hindistan
- Central US
- Orta Fransa
- Orta Batı Almanya
- Doğu Japonya
- Orta Kuzey ABD
- Norveç Doğu
- Kuzey İsviçre
- Jio Hindistan Batı
- Kuzey BAE
- Doğu Asya
- Güney Kore - Orta
- Güney Afrika Kuzey
- Katar Merkezi
- USGov Arizona (Genel Önizleme)
- USGov Virginia (Genel Önizleme)
- Çin Kuzey 3 (Genel Önizleme)
- Orta İsveç
- Polonya Merkezi
- Kuzey İtalya
- Orta İsrail
Önemli
Azure Kamu bölgelerde (USGov Arizona ve USGov Virginia) Azure Image Builder genel önizlemesine erişmek için özelliği Microsoft.VirtualMachineImages/FairfaxPublicPreview
kaydedin.
Önemli
Çin Kuzey 3 bölgesindeki Azure Image Builder genel önizlemesine erişmek için özelliği Microsoft.VirtualMachineImages/MooncakePublicPreview
kaydedin.
Azure Kamu bölgelerinde (USGov Arizona ve USGov Virginia) Azure VM Image Builder genel önizlemesine erişmek için Microsoft.VirtualMachineImages/FairfaxPublicPreview özelliğini kaydetmeniz gerekir. Bunu yapmak için PowerShell veya Azure CLI'da aşağıdaki komutu çalıştırın:
Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name FairfaxPublicPreview
Çin Kuzey 3 bölgesinde Azure VM Image Builder genel önizlemesine erişmek için Microsoft.VirtualMachineImages/MooncakePublicPreview özelliğini kaydetmeniz gerekir. Bunu yapmak için PowerShell veya Azure CLI'da aşağıdaki komutu çalıştırın:
Register-AzProviderPreviewFeature -ProviderNamespace Microsoft.VirtualMachineImages -Name MooncakePublicPreview
Veri yerleşimi
Azure VM Image Builder hizmeti, bir müşteri bu bölgede derleme isteğinde bulunduğunda katı tek bölge veri yerleşimi gereksinimlerine sahip olan bölgelerin dışında müşteri verilerini depolamaz veya işlemez. Veri yerleşimi gereksinimleri olan bölgeler için hizmet kesintisi yaşanırsa, farklı bir bölgede ve coğrafyada Bicep dosyaları/şablonları oluşturmanız gerekir.
Bölge yedekliliği
Dağıtım alanlar arası yedekliliği destekler, VHD'ler varsayılan olarak Bir Alanlar Arası Yedekli Depolama (ZRS) hesabına dağıtılır ve Azure İşlem Galerisi (eski adıyla Paylaşılan Görüntü Galerisi) sürümü belirtilirse ZRS depolama türünü destekler.
Etiketler
Etiketler, oluşturulan görüntü için belirtebileceğiniz anahtar/değer çiftleridir.
Kimlik
Aşağıda açıklanan kullanıcı tarafından atanan kimlikleri eklemenin iki yolu vardır.
Azure Image Builder görüntü şablonu kaynağı için kullanıcı tarafından atanan kimlik
Gerekli - Görüntü Oluşturucusu'nun görüntüleri okuma/yazma ve Azure Depolama'daki betiklerde okuma izinlerine sahip olması için, tek tek kaynaklar üzerinde izinleri olan azure kullanıcı tarafından atanan bir kimlik oluşturmanız gerekir. Görüntü Oluşturucusu izinlerinin nasıl çalıştığı ve ilgili adımlar hakkında ayrıntılı bilgi için bkz . Azure depolama hesabındaki dosyalara erişmek için görüntü oluşturma ve kullanıcı tarafından atanan yönetilen kimliği kullanma.
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<imgBuilderId>": {}
}
}
Görüntü Oluşturucu hizmeti Kullanıcı Tarafından Atanan Kimlik:
- Yalnızca tek bir kimliği destekler.
- Özel etki alanı adlarını desteklemez.
Daha fazla bilgi edinmek için bkz . Azure kaynakları için yönetilen kimlikler nedir?. Bu özelliği dağıtma hakkında daha fazla bilgi için bkz . Azure CLI kullanarak Azure VM'de Azure kaynakları için yönetilen kimlikleri yapılandırma.
Görüntü Oluşturucusu Derleme VM'sine kullanıcı tarafından atanan kimlik
Bu özellik yalnızca API sürümlerinde veya daha yeni sürümlerde 2021-10-01
kullanılabilir.
İsteğe bağlı - Görüntüyü derlemek ve özelleştirmek için aboneliğinizdeki Görüntü Oluşturucusu hizmeti tarafından oluşturulan Görüntü Oluşturucu derleme VM'si kullanılır. Image Builder Derleme VM'sinin aboneliğinizdeki Azure Key Vault gibi diğer hizmetlerle kimlik doğrulaması yapma izinlerine sahip olması için, tek tek kaynaklar üzerinde izinleri olan bir veya daha fazla Azure Kullanıcı Tarafından Atanan Kimlik oluşturmanız gerekir. Azure Görüntü Oluşturucusu daha sonra bu Kullanıcı Tarafından Atanan Kimlikleri Derleme VM'siyle ilişkilendirebilir. Derleme VM'sinde çalıştırılan özelleştirici betikleri daha sonra bu kimlikler için belirteçleri getirebilir ve gerektiğinde diğer Azure kaynaklarıyla etkileşim kurabilir. Azure Image Builder için kullanıcı tarafından atanan kimliğin, azure görüntü oluşturucusu için kullanıcı tarafından atanan tüm kimliklerde derleme VM'si ile ilişkilendirebilmesi için "Yönetilen Kimlik Operatörü" rol atamasına sahip olması gerektiğini unutmayın.
Not
Görüntü şablonu kaynağı için oluşturduğunuz kimlik de dahil olmak üzere Görüntü Oluşturucusu Derleme VM'si için birden çok kimlik belirtilebileceğini unutmayın. Varsayılan olarak, görüntü şablonu kaynağı için oluşturduğunuz kimlik derleme VM'sine otomatik olarak eklenmez.
"properties": {
"vmProfile": {
"userAssignedIdentities": [
"/subscriptions/<subscriptionID>/resourceGroups/<identityRgName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>"
]
}
}
Görüntü Oluşturucusu Oluşturma VM Kullanıcı Tarafından Atanan Kimlik:
- VM'de yapılandırılacak bir veya daha fazla kullanıcı tarafından atanan yönetilen kimlik listesini destekler.
- Abonelikler arası senaryoları destekler (görüntü şablonu aynı kiracı altındaki başka bir abonelikte oluşturulurken bir abonelikte oluşturulan kimlik).
- Kiracılar arası senaryoları desteklemez (görüntü şablonu başka bir kiracıda oluşturulurken bir kiracıda oluşturulan kimlik).
Daha fazla bilgi edinmek için şu makalelere bakın:
- Erişim belirteci almak için Azure VM'sinde Azure kaynakları için yönetilen kimlikleri kullanma
- Oturum açmak için azure vm'sindeki Azure kaynakları için yönetilen kimlikleri kullanma
Özellikler: buildTimeoutInMinutes
Görüntü şablonunu oluştururken beklenme süresi üst sınırı (tüm özelleştirmeleri, doğrulamaları ve dağıtımları içerir).
Özelliğini belirtmezseniz veya değeri 0 olarak ayarlamazsanız, varsayılan değer 240 dakika veya dört saattir. En düşük değer 6 dakika, maksimum değer ise 960 dakika veya 16 saattir. Zaman aşımı değerine (görüntü derlemesinin tamamlanıp tamamlanmadığı) isabet edildiğinde şuna benzer bir hata görürsünüz:
[ERROR] Failed while waiting for packerizer: Timeout waiting for microservice to
[ERROR] complete: 'context deadline exceeded'
Windows için 60 dakikanın altına ayar buildTimeoutInMinutes
yapmanızı önermeyiz. Zaman aşımına girdiğinizi fark ederseniz, özelleştirme adımının kullanıcı girişi gibi bir şey bekleyip beklemediğini görmek için günlükleri gözden geçirin. Özelleştirmelerin tamamlanması için daha fazla zamana ihtiyacınız olduğunu fark ederseniz değeri artırın buildTimeoutInMinutes
. Ancak, hata görmeden önce zaman aşımına uğramasını beklemeniz gerekebileceğinden çok yüksek ayarlamayın.
Özellikler: özelleştirme
Görüntü Oluşturucusu, betik çalıştırma veya sunucuları yeniden başlatma gibi görüntünüzü özelleştirmek için kullanılan birden çok "özelleştiriciyi" destekler.
kullanırken customize
:
- Birden çok özelleştirici kullanabilirsiniz.
- Özelleştiriciler şablonda belirtilen sırayla yürütülür.
- Bir özelleştirici başarısız olursa, özelleştirme bileşeninin tamamı başarısız olur ve bir hatayı geri bildirir.
- Betikleri şablonda kullanmadan önce iyice test edin. Betiklerde tek başına hata ayıklamak daha kolaydır.
- Betiklere hassas veriler koymayın. Satır içi komutlar görüntü şablonu tanımında görüntülenebilir. Hassas bilgileriniz varsa (parolalar, SAS belirteci, kimlik doğrulama belirteçleri vb.), erişim için kimlik doğrulaması gerektiren Azure Depolama'daki betiklere taşınmalıdır.
- MSI kullanmıyorsanız betik konumlarının genel olarak erişilebilir olması gerekir.
bölümü customize
bir dizidir. Desteklenen özelleştirici türleri şunlardır: Dosya, PowerShell, Kabuk, WindowsRestart ve WindowsUpdate.
"customize": [
{
"type": "File",
"destination": "string",
"sha256Checksum": "string",
"sourceUri": "string"
},
{
"type": "PowerShell",
"inline": [ "string" ],
"runAsSystem": "bool",
"runElevated": "bool",
"scriptUri": "string",
"sha256Checksum": "string",
"validExitCodes": [ "int" ]
},
{
"type": "Shell",
"inline": [ "string" ],
"scriptUri": "string",
"sha256Checksum": "string"
},
{
"type": "WindowsRestart",
"restartCheckCommand": "string",
"restartCommand": "string",
"restartTimeout": "string"
},
{
"type": "WindowsUpdate",
"filters": [ "string" ],
"searchCriteria": "string",
"updateLimit": "int"
}
]
Kabuk özelleştiricisi
Özelleştirici, Shell
Linux üzerinde kabuk betikleri çalıştırmayı destekler. Kabuk betiklerinin genel olarak erişilebilir olması veya Görüntü Oluşturucusu'na erişmek için bir MSI yapılandırmış olmanız gerekir.
"customize": [
{
"type": "Shell",
"name": "<name>",
"scriptUri": "<link to script>",
"sha256Checksum": "<sha256 checksum>"
}
],
"customize": [
{
"type": "Shell",
"name": "<name>",
"inline": "<commands to run>"
}
]
Özellikleri özelleştirme:
type – Shell.
name - özelleştirmeyi izlemek için ad.
scriptUri - Dosyanın konumuna URI.
satır içi - virgülle ayrılmış kabuk komutlarının dizisi.
sha256Checksum - Dosyanın sha256 sağlama toplamı değeri, bu değeri yerel olarak oluşturursunuz ve ardından Görüntü Oluşturucusu sağlama toplamı alır ve doğrular.
Mac/Linux üzerinde bir terminal kullanarak sha256Checksum oluşturmak için şunu çalıştırın:
sha256sum <fileName>
Not
Satır içi komutlar, görüntü şablonu tanımının bir parçası olarak depolanır; görüntü tanımının dökümünü aldığınızda bunları görebilirsiniz. Hassas komutlarınız veya değerleriniz (parolalar, SAS belirteci, kimlik doğrulama belirteçleri vb.) varsa bunların betiklere taşınması ve Azure Depolama'da kimlik doğrulaması yapmak için bir kullanıcı kimliği kullanılması önerilir.
Süper kullanıcı ayrıcalıkları
Süper kullanıcı ayrıcalıklarıyla sudo
çalıştırmak için komutlara ön ek ekleyin. Komutları betiklere ekleyebilir veya satır içi komutlarını kullanabilirsiniz, örneğin:
"type": "Shell",
"name": "setupBuildPath",
"inline": [
"sudo mkdir /buildArtifacts",
"sudo cp /tmp/index.html /buildArtifacts/index.html"
]
scriptUri kullanarak başvurabileceğiniz sudo kullanan bir betik örneği:
#!/bin/bash -e
echo "Telemetry: creating files"
mkdir /myfiles
echo "Telemetry: running sudo 'as-is' in a script"
sudo touch /myfiles/somethingElevated.txt
Windows yeniden başlatma özelleştiricisi
Özelleştirici WindowsRestart
bir Windows VM'sini yeniden başlatmanıza ve VM'nin yeniden çevrimiçi olmasını beklemenize olanak tanır. Bu özelleştirici, yeniden başlatma gerektiren yazılımları yüklemenize olanak tanır.
"customize": [
{
"type": "WindowsRestart",
"restartCommand": "shutdown /r /f /t 0",
"restartCheckCommand": "echo Azure-Image-Builder-Restarted-the-VM > c:\\buildArtifacts\\azureImageBuilderRestart.txt",
"restartTimeout": "5m"
}
]
Özellikleri özelleştirme:
- Tür: WindowsRestart.
- restartCommand - Yeniden başlatmayı yürütmek için komut (isteğe bağlı). Varsayılan değer:
'shutdown /r /f /t 0 /c \"packer restart\"'
. - restartCheckCommand – Yeniden başlatmanın başarılı olup olmadığını denetlemek için komut (isteğe bağlı).
- restartTimeout - Bir büyüklük ve birim dizesi olarak belirtilen yeniden başlatma zaman aşımı. Örneğin,
5m
(5 dakika) veya2h
(2 saat). Varsayılan değer:5m
.
Not
Linux yeniden başlatma özelleştiricisi yok.
PowerShell özelleştiricisi
Özelleştirici PowerShell
, Windows'da PowerShell betiklerini ve satır içi komutu çalıştırmayı destekler. IB'nin bunlara erişebilmesi için betiklere genel olarak erişilebilir olması gerekir.
"customize": [
{
"type": "PowerShell",
"name": "<name>",
"scriptUri": "<path to script>",
"runElevated": <true false>,
"runAsSystem": <true false>,
"sha256Checksum": "<sha256 checksum>"
},
{
"type": "PowerShell",
"name": "<name>",
"inline": "<PowerShell syntax to run>",
"validExitCodes": [<exit code>],
"runElevated": <true or false>,
"runAsSystem": <true or false>
}
]
Özellikleri özelleştirme:
type – PowerShell.
scriptUri - PowerShell betik dosyasının konumuna URI.
satır içi – Virgülle ayrılmış olarak çalıştırılacak satır içi komutlar.
validExitCodes – betik/satır içi komutundan döndürülebilen isteğe bağlı, geçerli kodlar . özelliği, betik/satır içi komutun bildirilen başarısızlığını önler.
runElevated – İsteğe bağlı, boole, yükseltilmiş izinlere sahip komut ve betik çalıştırma desteği.
runAsSystem - İsteğe bağlı boole, PowerShell betiğinin Sistem kullanıcısı olarak çalıştırılıp çalıştırılmayacağını belirler.
sha256Checksum - dosyanın SHA256 sağlama toplamını yerel olarak oluşturun, sağlama toplamı değerini küçük harfe güncelleştirin ve Görüntü Oluşturucusu görüntü şablonunun dağıtımı sırasında sağlama toplamını doğrular.
sha256Checksum oluşturmak için PowerShell'de Get-FileHash cmdlet'ini kullanın.
Dosya özelleştirici
Özelleştirici, File
Image Builder'ın GitHub deposundan veya Azure depolama alanından dosya indirmesine olanak tanır. Özelleştirici hem Linux'ı hem de Windows'ı destekler. Derleme yapıtlarına dayalı bir görüntü derleme işlem hattınız varsa, derleme paylaşımından indirilmesi için dosya özelleştiriciyi ayarlayabilir ve yapıtları görüntüye taşıyabilirsiniz.
"customize": [
{
"type": "File",
"name": "<name>",
"sourceUri": "<source location>",
"destination": "<destination>",
"sha256Checksum": "<sha256 checksum>"
}
]
Dosya özelleştirici özellikleri:
sourceUri - erişilebilir bir depolama uç noktası olan bu uç nokta GitHub veya Azure depolama olabilir. Dizinin tamamını değil, yalnızca bir dosyayı indirebilirsiniz. Bir dizin indirmeniz gerekiyorsa sıkıştırılmış bir dosya kullanın, ardından Shell veya PowerShell özelleştiricilerini kullanarak sıkıştırmasını açın.
Not
SourceUri bir Azure Depolama Hesabı ise (blob genel olarak işaretlendiğinden bağımsız olarak) Yönetilen Kullanıcı Kimliği'ne blob üzerinde okuma erişimi vermeniz gerekir. Depolama izinlerini ayarlamak için bu örne bakın.
destination – tam hedef yolu ve dosya adı. Başvuruda bulunılan tüm yollar ve alt dizinler mevcut olmalıdır. Bu yolları önceden ayarlamak için Shell veya PowerShell özelleştiricilerini kullanın. Yolu oluşturmak için betik özelleştiricilerini kullanabilirsiniz.
Bu özelleştirici Windows dizinleri ve Linux yolları tarafından desteklenir, ancak bazı farklılıklar vardır:
- Linux – Görüntü oluşturucunun yazabileceği tek yol /tmp'dir.
- Windows – Yol kısıtlaması yoktur, ancak yol mevcut olmalıdır.
Dosyayı indirmeye veya belirtilen dizine yerleştirmeye çalışırken bir hata varsa, özelleştirme adımı başarısız olur ve bu hata customization.log.
Not
Dosya özelleştiricisi yalnızca 20 MB'lık küçük dosya indirmeleri < için uygundur. Daha büyük dosya indirmeleri için bir betik veya satır içi komut kullanın, ardından Linux wget
veya curl
, Windows Invoke-WebRequest
gibi dosyaları indirmek için kod kullanın. Azure depolamadaki dosyalar için, buradaki belgeleri izleyerek bu dosyayı derleme VM'sine görüntüleme izinlerine sahip bir kimlik atadığınızdan emin olun: Görüntü Oluşturucusu Derleme VM'sine Kullanıcı Tarafından Atanan Kimlik. Azure Image Builder'ın indirebilmesi için Azure'da depolanmayan tüm dosyalara genel erişim sağlanmalıdır.
sha256Checksum - dosyanın SHA256 sağlama toplamını yerel olarak oluşturun, sağlama toplamı değerini küçük harfe güncelleştirin ve Görüntü Oluşturucusu görüntü şablonunun dağıtımı sırasında sağlama toplamını doğrular.
sha256Checksum oluşturmak için PowerShell'de Get-FileHash cmdlet'ini kullanın.
Windows update özelleştiricisi
ÖzelleştiriciWindowsUpdate
, Packer topluluğu tarafından sürdürülen açık kaynak bir proje olan Packer için Windows Update Provisioner topluluğu üzerine kurulmuştur. Microsoft, Image Builder hizmetiyle sağlamayı test eder ve doğrular ve bununla ilgili sorunların araştırılmasını destekler ve sorunları çözmek için çalışır, ancak açık kaynak projesi Microsoft tarafından resmi olarak desteklenmez. Windows Update Provisioner hakkında ayrıntılı belgeler ve yardım için proje deposuna bakın.
"customize": [
{
"type": "WindowsUpdate",
"searchCriteria": "IsInstalled=0",
"filters": [
"exclude:$_.Title -like '*Preview*'",
"include:$true"
],
"updateLimit": 20
}
]
Özelleştirici özellikleri:
- type – WindowsUpdate.
- searchCriteria - İsteğe bağlı olarak, hangi tür güncelleştirmelerin yüklendiğini tanımlar (Önerilen veya Önemli gibi), BrowseOnly=0 ve IsInstalled=0 (Önerilen) varsayılan değerdir.
- filters – İsteğe bağlı olarak, güncelleştirmeleri dahil etmek veya hariç tutmak için bir filtre belirtmenize olanak tanır.
- updateLimit – İsteğe bağlı, kaç güncelleştirmenin yüklenebileceğini (varsayılan 1000) tanımlar.
Not
Windows Update özelleştiricisi, bekleyen Windows yeniden başlatmaları veya hala çalışan uygulama yüklemeleri varsa başarısız olabilir; genellikle bu hatayı customization.log System.Runtime.InteropServices.COMException (0x80240016): Exception from HRESULT: 0x80240016
. Windows Update'i çalıştırmadan önce, Windows Yeniden Başlatma'ya ekleme ve/veya uygulamaların satır içi komutlarda veya betiklerde uyku veya bekleme komutlarını kullanarak yüklemelerini tamamlamaları için yeterli süre vermenizi kesinlikle öneririz.
Genelleştir
Varsayılan olarak Azure Image Builder, görüntüyü genelleştirmek için her görüntü özelleştirme aşamasının sonunda kod çalıştırır deprovision
. Genelleştirme, görüntünün birden çok VM oluşturmak için yeniden kullanılabilmesi için ayarlandığı bir işlemdir. Windows VM'leri için Azure Image Builder Sysprep kullanır. Linux için Azure Image Builder çalıştırır waagent -deprovision
.
Image Builder kullanıcılarının genelleştirmesi gereken komutlar her durum için uygun olmayabilir, bu nedenle Azure Image Builder gerekirse bu komutu özelleştirmenize olanak tanır.
Mevcut özelleştirmeyi geçiriyorsanız ve farklı Sysprep/waagent komutları kullanıyorsanız, Görüntü Oluşturucusu genel komutlarını kullanabilirsiniz ve VM oluşturma işlemi başarısız olursa kendi Sysprep veya waagent komutlarınızı kullanın.
Azure Görüntü Oluşturucusu başarıyla bir Windows özel görüntüsü oluşturursa ve bu görüntüden bir VM oluşturursanız, VM oluşturma işleminin başarısız olduğunu veya başarıyla tamamlanmadığını fark ederseniz, Windows Server Sysprep belgelerini gözden geçirmeniz veya doğru Sysprep kullanımı sorunlarını giderebilen ve önerebilen Windows Server Sysprep Müşteri Hizmetleri Destek ekibiyle bir destek isteği göndermeniz gerekir.
Varsayılan Sysprep komutu
Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
Write-Output '>>> Removing Sysprep\unattend.xml ...'
Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
if (Test-Path $Env:SystemRoot\Panther\unattend.xml) {
Write-Output '>>> Removing Panther\unattend.xml ...'
Remove-Item $Env:SystemRoot\Panther\unattend.xml -Force
}
Write-Output '>>> Sysprepping VM ...'
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
$imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
Write-Output $imageState
if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'
Varsayılan Linux sağlamayı kaldırma komutu
WAAGENT=/usr/sbin/waagent
waagent -version 1> /dev/null 2>&1
if [ $? -eq 0 ]; then
WAAGENT=waagent
fi
$WAAGENT -force -deprovision+user && export HISTSIZE=0 && sync
Komutları Geçersiz Kılma
Komutları geçersiz kılmak için PowerShell veya Shell betik hazırlayıcılarını kullanarak tam dosya adıyla komut dosyalarını oluşturun ve bunları doğru dizinlere yerleştirin:
- Windows: c:\DeprovisioningScript.ps1
- Linux: /tmp/DeprovisioningScript.sh
Image Builder bu komutları okur, bu komutlar AIB günlüklerine customization.log
yazılır. Günlükleri toplama ile ilgili sorun giderme bölümüne bakın.
Özellikler: errorHandling
özelliği, errorHandling
görüntü oluşturma sırasında hataların nasıl işleneceğini yapılandırmanıza olanak tanır.
özelliği, errorHandling
görüntü oluşturma sırasında hataların nasıl işleneceğini yapılandırmanıza olanak tanır. İki özelliği vardır:
- onCustomizerError - Görüntü oluşturma işleminin özelleştirici aşamasında bir hata oluştuğunda gerçekleştirebileceğiniz eylemi belirtir.
- onValidationError - Görüntü şablonunun doğrulanması sırasında bir hata oluştuğunda gerçekleştirecek eylemi belirtir.
özelliği, errorHandling
görüntü oluşturma sırasında hataları işlemek için iki olası değere de sahiptir:
- cleanup - Packer veya özelleştirme/doğrulamalardan biri hatayla karşılaşsa bile Packer tarafından oluşturulan geçici kaynakların temizlenmesini sağlar. Bu, mevcut davranışla geriye dönük uyumluluğu korur.
- abort - Packer'ın bir hatayla karşılaşması durumunda Azure Görüntü Oluşturucusu (AIB) hizmeti geçici kaynakların temizlenmesini atlar. AIB şablonunun sahibi olarak bu kaynakları aboneliğinizden temizlemek sizin sorumluluğunuzdadır. Bu kaynaklar, packer tarafından karşılaşılan hatanın araştırılmasında yardımcı olabilecek geçici bir VM'de kalan günlükler ve dosyalar gibi yararlı bilgiler içerebilir.
Özellikler: dağıtma
Azure Image Builder üç dağıtım hedeflerini destekler:
- ManagedImage - Yönetilen görüntü.
- sharedImage - Azure İşlem Galerisi.
- VHD - Depolama hesabında VHD.
Bir görüntüyü aynı yapılandırmadaki hedef türlerin her ikisine de dağıtabilirsiniz.
Not
Varsayılan AIB sysprep komutu "/mode:vm" içermez, ancak HyperV rolünün yüklü olacağı görüntüler oluşturulduğunda bu özellik gerekebilir. Bu komut bağımsız değişkenini eklemeniz gerekiyorsa sysprep komutunu geçersiz kılmalısınız.
Dağıtılacak birden fazla hedefiniz olabileceğinden, Görüntü Oluşturucusu sorgulanarak runOutputName
erişilebilen her dağıtım hedefi için bir durum tutar. runOutputName
, dağıtım sonrası bu dağıtım hakkında bilgi için sorgulayabileceğiniz bir nesnedir. Örneğin, VHD'nin konumunu veya görüntü sürümünün çoğaltıldığı bölgeleri veya SIG Görüntü sürümünün oluşturulduğu bölgeleri sorgulayabilirsiniz. Bu, her dağıtım hedefinin bir özelliğidir. runOutputName
her dağıtım hedefi için benzersiz olmalıdır. Aşağıda Azure İşlem Galerisi dağıtımlarını sorgulamaya yönelik bir örnek verilmişti:
subscriptionID=<subcriptionID>
imageResourceGroup=<resourceGroup of image template>
runOutputName=<runOutputName>
az resource show \
--ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/$runOutputName" \
--api-version=2023-07-01
Çıktı:
{
"id": "/subscriptions/xxxxxx/resourcegroups/rheltest/providers/Microsoft.VirtualMachineImages/imageTemplates/ImageTemplateLinuxRHEL77/runOutputs/rhel77",
"identity": null,
"kind": null,
"location": null,
"managedBy": null,
"name": "rhel77",
"plan": null,
"properties": {
"artifactId": "/subscriptions/xxxxxx/resourceGroups/aibDevOpsImg/providers/Microsoft.Compute/galleries/devOpsSIG/images/rhel/versions/0.24105.52755",
"provisioningState": "Succeeded"
},
"resourceGroup": "rheltest",
"sku": null,
"tags": null,
"type": "Microsoft.VirtualMachineImages/imageTemplates/runOutputs"
}
Dağıt: managedImage
Görüntü çıkışı yönetilen bir görüntü kaynağıdır.
{
"type":"ManagedImage",
"imageId": "<resource ID>",
"location": "<region>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Özellikleri dağıtma:
- type – ManagedImage
- imageId – Hedef görüntünün kaynak kimliği, beklenen biçim: /subscriptions/<subscriptionId>/resourceGroups/<destinationResourceGroupName>/providers/Microsoft.Compute/images/<imageName>
- location - yönetilen görüntünün konumu.
- runOutputName – dağıtımı tanımlamak için benzersiz ad.
- artifactTags - İsteğe bağlı kullanıcı tarafından belirtilen anahtar\değer etiketleri.
Not
Hedef kaynak grubu mevcut olmalıdır. Görüntünün farklı bir bölgeye dağıtılmasını istiyorsanız, dağıtım süresini artırır.
Dağıt: sharedImage
Azure İşlem Galerisi, görüntü bölgesi çoğaltma, sürüm oluşturma ve özel görüntüleri paylaşma yönetimine olanak tanıyan yeni bir Görüntü Yönetimi hizmetidir. Azure Image Builder bu hizmetle dağıtmayı desteklediği için görüntüleri Azure İşlem Galerileri tarafından desteklenen bölgelere dağıtabilirsiniz.
Azure İşlem Galerisi aşağıdakilerden oluşur:
- Galeri - Birden çok görüntü için kapsayıcı. Galeri tek bir bölgeye dağıtılır.
- Görüntü tanımları - görüntüler için kavramsal bir gruplandırma.
- Görüntü sürümleri - VM veya ölçek kümesi dağıtmak için kullanılan görüntü türü. Görüntü sürümleri, VM'lerin dağıtılması gereken diğer bölgelere çoğaltılabilir.
Galeriye dağıtmadan önce bir galeri ve görüntü tanımı oluşturmanız gerekir. Bkz . Galeri oluşturma.
Not
Görüntü sürümü kimliğinin mevcut Azure İşlem Galerisi'ndeki tüm görüntü sürümlerinden farklı veya farklı olması gerekir.
{
"type": "SharedImage",
"galleryImageId": "<resource ID>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
Aşağıdaki JSON, bir Azure İşlem Galerisi'ne dağıtmak için alanının nasıl kullanılacağını replicationRegions
gösteren bir örnektir.
Not
replicationRegions
, güncelleştirilmiş özellik olarak targetRegions
galeri dağıtımları için kullanım dışıdır. Daha fazla bilgi için bkz . targetRegions.
Dağıt: targetRegions
Aşağıdaki JSON, bir Azure İşlem Galerisi'ne dağıtmak için targetRegions alanının nasıl kullanılacağını gösteren bir örnektir.
"distribute": [
{
"type": "SharedImage",
"galleryImageId": "<resource ID>",
"runOutputName": "<name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
},
"targetRegions": [
{
"name": "eastus",
"replicaCount": 2,
"storageAccountType": "Standard_ZRS"
},
{
"name": "eastus2",
"replicaCount": 3,
"storageAccountType": "Premium_LRS"
}
]
},
]
Galerilerin özelliklerini dağıtma:
type - sharedImage
galleryImageId – Azure İşlem Galerisi'nin kimliği, bu özellik iki biçimde belirtilebilir:
- Otomatik sürüm oluşturma - Görüntü Oluşturucusu sizin için monoton bir sürüm numarası oluşturur, bu özellik aynı şablondan görüntüleri yeniden oluşturmaya devam etmek istediğinizde kullanışlıdır: biçimi:
/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName>
. - Açık sürüm oluşturma - Görüntü oluşturucunun kullanmasını istediğiniz sürüm numarasını geçirebilirsiniz. Biçim:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>/versions/<version - for example: 1.1.1>
- Otomatik sürüm oluşturma - Görüntü Oluşturucusu sizin için monoton bir sürüm numarası oluşturur, bu özellik aynı şablondan görüntüleri yeniden oluşturmaya devam etmek istediğinizde kullanışlıdır: biçimi:
runOutputName – dağıtımı tanımlamak için benzersiz ad.
artifactTags - isteğe bağlı kullanıcı tarafından belirtilen anahtar\değer etiketleri.
replicationRegions - çoğaltma için bölge dizisi. Bölgelerden biri Galeri'nin dağıtıldığı bölge olmalıdır. Bölgelerin eklenmesi derleme süresinin artması anlamına gelir çünkü çoğaltma tamamlanana kadar derleme tamamlanmaz. Bu alan API sürüm 2022-07-01 itibariyle kullanım dışıdır, lütfen bir "SharedImage" türü dağıtırken kullanın
targetRegions
.targetRegions - çoğaltma için bir bölge dizisi. 2022-07-01 API'sinin bir parçası olarak yeni kullanıma sunulmuştur ve yalnızca dağıtım türü için
SharedImage
geçerlidir.excludeFromLatest (isteğe bağlı) - Oluşturduğunuz görüntü sürümünü galeri tanımında en son sürüm olarak kullanılmamak üzere işaretlemenize olanak tanır; varsayılan değer 'false'tur.
storageAccountType (isteğe bağlı) - AIB, oluşturulacak görüntü sürümü için şu depolama türlerini belirtmeyi destekler:
- "Standard_LRS"
- "Standard_ZRS","
Not
Resim şablonu ve başvuruda image definition
bulunanlar aynı konumda değilse, görüntü oluşturmak için ek süre görürsünüz. Görüntü Oluşturucusu'nun şu anda görüntü sürümü kaynağı için bir location
parametresi yok, bunu üst image definition
öğesinden alıyoruz. Örneğin, bir görüntü tanımı içindeyse westus
ve görüntü sürümünün öğesine çoğaltılmasını eastus
istiyorsanız, bir blob öğesine kopyalanır westus
, içindeki westus
bir görüntü sürümü kaynağı oluşturulur ve sonra öğesine eastus
çoğaltılır. Ek çoğaltma süresini önlemek için ve görüntü şablonunun image definition
aynı konumda olduğundan emin olun.
sürüm oluşturma
Sürüm oluşturma özelliği yalnızca dağıtım türü içindirsharedImage
. İki olası değeri olan bir sabit listesidir:
- en son - Tasarım başına şemayı kesinlikle artıran yeni
- source - Kaynak görüntünün sürüm numarasını temel alan şema.
Varsayılan sürüm numaralandırma şemasıdır latest
. En son şemada, en son sürümün oluşturulacağı ana sürümü belirten "major" adlı ek bir özellik vardır.
Not
Dağıtım için sharedImage
mevcut sürüm oluşturma mantığı kullanım dışıdır. İki yeni seçenek sağlanır: galerideki her zaman en son sürüm olan monoton olarak artan sürümler ve kaynak görüntünün sürüm numarasına göre oluşturulan sürümler. Sürüm oluşturma şemasını belirten sabit listesi, gelecekte ek sürüm oluşturma şemaları ile genişletmeye olanak tanır.
"distribute": [
"versioning": {
"scheme": "Latest",
"major": 1
}
]
sürüm oluşturma özellikleri:
- scheme - Dağıtım için yeni sürüm numarası oluşturun.
Latest
veyaSource
iki olası değerdir. - major - En son sürümün oluşturulacağı ana sürümü belirtir. Yalnızca ayarı
scheme
olarak ayarlandığındaLatest
geçerlidir. Örneğin, aşağıdaki sürümlerin yayımlandığı bir galeride: 0.1.1, 0.1.2, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.2.0, 2.0.0, 2.0.0- Ana değer ayarlanmadığından veya ana değer 2 olarak ayarlanmadığından,
Latest
şema 2.1.1 sürümünü oluşturur - Ana değer 1 olarak ayarlandığında, En Son düzen sürüm 1.2.1'i oluşturur
- Ana değer 0 olarak ayarlandığında, En Son düzen 0.1.3 sürümünü oluşturur
- Ana değer ayarlanmadığından veya ana değer 2 olarak ayarlanmadığından,
Dağıt: VHD
VHD'ye çıkış yapabilirsiniz. Ardından VHD'yi kopyalayıp Azure MarketPlace'de yayımlamak için kullanabilir veya Azure Stack ile kullanabilirsiniz.
{
"type": "VHD",
"runOutputName": "<VHD name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
}
}
İşletim Sistemi Desteği: Windows ve Linux
VHD parametrelerini dağıtma:
- type - VHD.
- runOutputName – dağıtımı tanımlamak için benzersiz ad.
- tags - İsteğe bağlı kullanıcı tarafından belirtilen anahtar değeri çifti etiketleri.
Azure Image Builder kullanıcının depolama hesabı konumu belirtmesine izin vermez, ancak konumu almak için öğesinin runOutputs
durumunu sorgulayabilirsiniz.
az resource show \
--ids "/subscriptions/$subscriptionId/resourcegroups/<imageResourceGroup>/providers/Microsoft.VirtualMachineImages/imageTemplates/<imageTemplateName>/runOutputs/<runOutputName>" | grep artifactUri
Not
VHD oluşturulduktan sonra, mümkün olan en kısa sürede farklı bir konuma kopyalayın. VHD, görüntü şablonu Azure Görüntü Oluşturucusu hizmetine gönderildiğinde oluşturulan geçici kaynak grubundaki bir depolama hesabında depolanır. Görüntü şablonunu silerseniz VHD'yi kaybedersiniz.
Aşağıdaki JSON, görüntüyü bir VHD olarak özel bir depolama hesabına dağıtır.
"distribute": [
{
"type": "VHD",
"runOutputName": "<VHD name>",
"artifactTags": {
"<name>": "<value>",
"<name>": "<value>"
},
"uri": "<replace with Azure storage URI>"
}
]
VHD dağıtım özellikleri:
uri - Dağıtılmış VHD blobu için isteğe bağlı Azure Depolama URI'si. VHD'nin hazırlama kaynak grubundaki depolama hesabında yayımlandığı varsayılan dizeyi (boş dize) kullanmayı atla.
Özellikler: iyileştirme
Özelliği optimize
vm görüntüsü oluşturulurken etkinleştirilebilir ve VM iyileştirmesinin görüntü oluşturma süresini iyileştirmesine olanak tanır.
- vmBoot: Önyükleme süresini veya diğer performans yönlerini geliştirebilecek iyileştirmeleri denetlemek için kullanılan, sanal makinenin (VM) önyükleme işlemiyle ilgili bir yapılandırma.
- durum: görüntü oluşturma süresini iyileştirmek için özelliğin açık olduğunu belirten değerle
Enabled
birlikte içindeki önyükleme iyileştirme özelliğininvmBoot
durumu.
Daha fazla bilgi edinmek için bkz . Azure VM Görüntü Oluşturucusu ile galeri görüntüleri için VM iyileştirme.
Özellikler: kaynak
bölümü, source
Görüntü Oluşturucusu tarafından kullanılacak kaynak görüntü hakkında bilgi içerir. Azure Image Builder yalnızca genelleştirilmiş görüntüleri kaynak görüntüler olarak destekler, şu anda özel görüntüler desteklenmez.
API, görüntü derlemesinin kaynağını tanımlayan bir SourceType
gerektirir; şu anda üç tür vardır:
- PlatformImage - kaynak görüntünün bir Market görüntüsü olduğunu belirtir.
- ManagedImage - normal bir yönetilen görüntüden başlatılırken kullanılır.
- SharedImageVersion - Kaynak olarak Azure İşlem Galerisi'nde görüntü sürümü kullandığınızda kullanılır.
Not
Mevcut Windows özel görüntülerini kullanırken Sysprep komutunu tek bir Windows 7 veya Windows Server 2008 R2 görüntüsünde üç kez veya sonraki sürümler için tek bir Windows görüntüsünde 1001 kez çalıştırabilirsiniz; Daha fazla bilgi için sysprep belgelerine bakın.
PlatformImage kaynağı
Azure Image Builder, Windows Server ve istemciyi ve Linux Azure Market görüntülerini destekler. Tam liste için bkz. Azure Görüntü Oluşturucusu hakkında bilgi edinin.
"source": {
"type": "PlatformImage",
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "18.04-LTS",
"version": "latest"
}
Buradaki özellikler, AZ CLI kullanarak VM'leri oluşturmak için kullanılan özelliklerle aynıdır ve özellikleri almak için aşağıdaki komutu çalıştırın:
az vm image list -l westus -f UbuntuServer -p Canonical --output table --all
Sürümünde kullanabilirsiniz latest
; sürüm, şablon gönderildiğinde değil görüntü derlemesi gerçekleştiğinde değerlendirilir. Bu işlevi Azure İşlem Galerisi hedefiyle kullanırsanız, şablonu yeniden göndermekten kaçınabilir ve görüntü derlemesini aralıklarla yeniden çalıştırarak resimlerinizin en son görüntülerden yeniden oluşturulmasını sağlayabilirsiniz.
Pazar yeri planı bilgileri için destek
Plan bilgilerini de belirtebilirsiniz, örneğin:
"source": {
"type": "PlatformImage",
"publisher": "RedHat",
"offer": "rhel-byos",
"sku": "rhel-lvm75",
"version": "latest",
"planInfo": {
"planName": "rhel-lvm75",
"planProduct": "rhel-byos",
"planPublisher": "redhat"
}
}
ManagedImage kaynağı
Kaynak görüntüyü genelleştirilmiş bir VHD veya VM'nin mevcut yönetilen görüntüsü olarak ayarlar.
Not
Kaynak yönetilen görüntü desteklenen bir işletim sistemine ait olmalı ve görüntünün Azure Image Builder şablonunuzla aynı abonelikte ve bölgede bulunması gerekir.
"source": {
"type": "ManagedImage",
"imageId": "/subscriptions/<subscriptionId>/resourceGroups/{destinationResourceGroupName}/providers/Microsoft.Compute/images/<imageName>"
}
yönetilen imageId
görüntünün ResourceId değeri olmalıdır. Kullanılabilir görüntüleri listelemek için kullanın az image list
.
SharedImageVersion kaynağı
Kaynak görüntüyü Azure İşlem Galerisi'nde var olan bir görüntü sürümü olarak ayarlar.
Not
Kaynak paylaşılan görüntü sürümü desteklenen bir işletim sistemine ait olmalı ve görüntü sürümü Azure Görüntü Oluşturucusu şablonunuzla aynı bölgede bulunmalıdır, değilse görüntü sürümünü Image Builder Şablonu bölgesine çoğaltın.
"source": {
"type": "SharedImageVersion",
"imageVersionId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageDefinitionName/versions/<imageVersion>"
}
- imageVersionId - Görüntü sürümünün ARM şablonu kaynak kimliği. Görüntü sürümü adı 'en son' olduğunda, görüntü derlemesi gerçekleştiğinde sürüm değerlendirilir.
imageVersionId
ResourceId
, görüntü sürümünün olmalıdır. Resim sürümlerini listelemek için az sig image-version list komutunu kullanın.
Aşağıdaki JSON, kaynak görüntüyü Doğrudan Paylaşılan Galeri'de depolanan bir görüntü olarak ayarlar.
Not
Doğrudan Paylaşılan Galeri şu anda önizlemededir.
source: {
"type": "SharedImageVersion",
"imageVersionId": "<replace with resourceId of the image stored in the Direct Shared Gallery>"
},
Aşağıdaki JSON, kaynak görüntüyü Azure İşlem Galerisi'nde depolanan bir görüntü için en son görüntü sürümü olarak ayarlar.
"properties": {
"source": {
"type": "SharedImageVersion",
"imageVersionId": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<azureComputeGalleryName>/images/<imageDefinitionName>/versions/latest"
}
},
SharedImageVersion özellikleri:
imageVersionId - Görüntü sürümünün ARM şablonu kaynak kimliği. Görüntü sürümü adı 'en son' olduğunda, görüntü derlemesi gerçekleştiğinde sürüm değerlendirilir.
Özellikler: stagingResourceGroup
özelliği, stagingResourceGroup
Görüntü Oluşturucu hizmetinin görüntü derleme işlemi sırasında kullanılmak üzere oluşturduğu hazırlama kaynak grubu hakkında bilgi içerir. stagingResourceGroup
, görüntü derleme işlemi sırasında Image Builder tarafından oluşturulan kaynak grubu üzerinde daha fazla denetim sahibi olmak isteyen herkes için isteğe bağlı bir özelliktir. Kendi kaynak grubunuzu oluşturabilir ve bölümünde belirtebilir veya Görüntü Oluşturucusu'nun stagingResourceGroup
sizin yerinize bir tane oluşturmasını sağlayabilirsiniz.
Önemli
Belirtilen hazırlama kaynak grubu başka bir görüntü şablonuyla ilişkilendirilemez, görüntü şablonuyla aynı bölgede boş (içinde kaynak yok) ve Azure Görüntü Oluşturucusu görüntü şablonu kaynağına atanan kimliğe "Katkıda Bulunan" veya "Sahip" RBAC uygulanmalıdır.
"properties": {
"stagingResourceGroup": "/subscriptions/<subscriptionID>/resourceGroups/<stagingResourceGroupName>"
}
Şablon oluşturma senaryoları
stagingResourceGroup özelliği boş bırakıldı
stagingResourceGroup
Özellik boş bir dizeyle belirtilmezse veya belirtilmezse, Görüntü Oluşturucu hizmeti varsayılan "IT_**" ad kuralına sahip bir hazırlama kaynak grubu oluşturur. Hazırlama kaynak grubuna varsayılan etiketler uygulanmış:createdBy
,imageTemplateName
,imageTemplateResourceGroupName
. Ayrıca varsayılan RBAC, "Katkıda Bulunan" olan Azure Görüntü Oluşturucusu şablon kaynağına atanan kimliğe uygulanır.stagingResourceGroup özelliği var olan bir kaynak grubuyla belirtilir
stagingResourceGroup
Özellik mevcut olan bir kaynak grubuyla belirtilirse, Görüntü Oluşturucu hizmeti kaynak grubunun başka bir görüntü şablonuyla ilişkilendirilmediğini, görüntü şablonuyla aynı bölgede boş (içinde kaynak olmadığından) ve Azure Görüntü Oluşturucusu görüntü şablonu kaynağına atanan kimliğe "Katkıda Bulunan" veya "Sahip" RBAC uygulandığından emin olup olmadığını denetler. Yukarıda belirtilen gereksinimlerden herhangi biri karşılanmazsa bir hata oluşur. Hazırlama kaynak grubuna şu etiketler eklendi:usedBy
,imageTemplateName
,imageTemplateResourceGroupName
. Önceden var olan etiketler silinmez.
Önemli
Windows kaynak görüntüsüyle Azure Image Builder hizmetine önceden var olan bir kaynak grubu ve sanal ağ belirtmeye çalışırken Azure Görüntü Oluşturucusu'nun birinci taraf uygulamasına karşılık gelen hizmet sorumlusunun kaynak grubuna katkıda bulunan rolünü atamanız gerekir. Kaynak grubuna katkıda bulunan rolü atamaya ilişkin CLI komutu ve portal yönergeleri için şu belgelere bakın: VM Azure Görüntü Oluşturucusu sorunlarını giderme: Disk oluşturma yetkilendirme hatası
stagingResourceGroup özelliği var olmayan bir kaynak grubuyla belirtilir
stagingResourceGroup
Özellik mevcut olmayan bir kaynak grubuyla belirtilirse, Görüntü Oluşturucu hizmeti özelliğindestagingResourceGroup
sağlanan ada sahip bir hazırlama kaynak grubu oluşturur. Belirtilen ad kaynak grupları için Azure adlandırma gereksinimlerini karşılamıyorsa bir hata oluşur. Hazırlama kaynak grubuna varsayılan etiketler uygulanmış:createdBy
,imageTemplateName
,imageTemplateResourceGroupName
. Varsayılan olarak, Azure Görüntü Oluşturucusu görüntü şablonu kaynağına atanan kimlik, kaynak grubunda bu kaynağa "Katkıda Bulunan" RBAC'yi uygulamıştır.
Şablon silme
Görüntü Oluşturucusu hizmeti tarafından oluşturulan tüm hazırlama kaynak grupları, görüntü şablonu silindikten sonra silinir. Silme özelliğinde stagingResourceGroup
belirtilen ancak görüntü derlemeden önce var olmayan hazırlama kaynak gruplarını içerir.
Görüntü Oluşturucusu hazırlama kaynak grubunu oluşturmadıysa ancak kaynak grubunun içindeki kaynaklar oluşturduysa, Görüntü Oluşturucusu hizmetinin kaynakları silmek için gereken uygun izinlere veya role sahip olduğu göz önünde bulundurulduğunda bu kaynaklar görüntü şablonu silindikten sonra silinir.
Özellikler: doğrulama
Azure Görüntü Oluşturucusu'nu validate
kullanıp kullanmadığınıza bakılmaksızın, platform görüntülerini ve oluşturduğunuz özelleştirilmiş görüntüleri doğrulamak için özelliğini kullanabilirsiniz.
Azure Image Builder özelliği kullanılarak sourceValidationOnly
ayarlanabilen 'Yalnızca Kaynak Doğrulama' modunu destekler. sourceValidationOnly
Özelliği true olarak ayarlanırsa, bölümünde belirtilen source
görüntü doğrudan doğrulanır. Özelleştirilmiş bir görüntü oluşturmak ve doğrulamak için ayrı bir derleme çalıştırılamaz.
özelliği, inVMValidations
görüntüde gerçekleştirilecek doğrulayıcıların listesini alır. Azure Image Builder Dosya, PowerShell ve Kabuk doğrulayıcılarını destekler.
continueDistributeOnFailure
Özellik, doğrulama başarısız olursa çıkış görüntülerinin dağıtılıp dağıtılmayacağından sorumludur. Varsayılan olarak, doğrulama başarısız olursa ve bu özellik false olarak ayarlanırsa çıkış görüntüleri dağıtılamaz. Doğrulama başarısız olursa ve bu özellik true olarak ayarlanırsa, çıkış görüntüleri yine dağıtılır. Başarısız görüntülerin kullanım için dağıtılmasıyla sonuçlandığı için bu seçeneği dikkatli kullanın. Her iki durumda da (true veya false) uçtan uca görüntü çalıştırması, doğrulama hatası durumunda başarısız olarak bildirilir. Bu özelliğin doğrulamanın başarılı olup olmadığı üzerinde hiçbir etkisi yoktur.
kullanırken validate
:
- Birden çok doğrulayıcı kullanabilirsiniz.
- Doğrulayıcılar şablonda belirtilen sırayla yürütülür.
- Bir doğrulayıcı başarısız olursa, doğrulama bileşeninin tamamı başarısız olur ve bir hatayı geri bildirir.
- Betiği bir şablonda kullanmadan önce kapsamlı bir şekilde test edin. Betiği kendi VM'nizde hata ayıklamak daha kolay olacaktır.
- Betiklere hassas veriler koymayın.
- MSI kullanmıyorsanız betik konumlarının genel olarak erişilebilir olması gerekir.
Windows görüntülerini doğrulamak için özelliğini kullanma validate
:
{
"properties":{
"validate":{
"continueDistributeOnFailure":false,
"sourceValidationOnly":false,
"inVMValidations":[
{
"type":"File",
"destination":"string",
"sha256Checksum":"string",
"sourceUri":"string"
},
{
"type":"PowerShell",
"name":"test PowerShell validator inline",
"inline":[
"<command to run inline>"
],
"validExitCodes":"<exit code>",
"runElevated":"<true or false>",
"runAsSystem":"<true or false>"
},
{
"type":"PowerShell",
"name":"<name>",
"scriptUri":"<path to script>",
"runElevated":"<true false>",
"sha256Checksum":"<sha256 checksum>"
}
]
}
}
}
inVMValidations
Özellikler:
type – PowerShell.
name - doğrulayıcının adı
scriptUri - PowerShell betik dosyasının URI'sini.
satır içi – virgülle ayrılmış olarak çalıştırılacak komut dizisi.
validExitCodes – İsteğe bağlı, betik/satır içi komutundan döndürülebilecek geçerli kodlar, bu, betik/satır içi komutun bildirilen hatasını önler.
runElevated – İsteğe bağlı, boole, yükseltilmiş izinlere sahip komut ve betik çalıştırma desteği.
sha256Checksum - Dosyanın sha256 sağlama toplamı değeri, bunu yerel olarak oluşturursunuz ve ardından Görüntü Oluşturucusu sağlama toplamı alır ve doğrular.
Windows Get-Hash üzerinde bir PowerShell kullanarak sha256Checksum oluşturmak için
Linux görüntülerini doğrulamak için özelliğini kullanma validate
:
{
"properties": {
"validate": {
"continueDistributeOnFailure": false,
"sourceValidationOnly": false,
"inVMValidations": [
{
"type": "Shell",
"name": "<name>",
"inline": [
"<command to run inline>"
]
},
{
"type": "Shell",
"name": "<name>",
"scriptUri": "<path to script>",
"sha256Checksum": "<sha256 checksum>"
},
{
"type": "File",
"destination": "string",
"sha256Checksum": "string",
"sourceUri": "string"
}
]
}
}
}
inVMValidations
Özellikler:
type – Gerçekleştirilecek doğrulama türü olarak belirtilen Kabuk veya Dosya.
name - doğrulayıcının adı
scriptUri - Betik dosyasının URI'si
satır içi - virgülle ayrılmış olarak çalıştırılacak komut dizisi.
sha256Checksum - Dosyanın sha256 sağlama toplamı değeri, bunu yerel olarak oluşturursunuz ve ardından Görüntü Oluşturucusu sağlama toplamı alır ve doğrular.
Mac/Linux üzerinde bir terminal kullanarak sha256Checksum oluşturmak için şunu çalıştırın:
sha256sum <fileName>
destination - Dosyanın hedefi.
sha256Checksum - Dosyanın SHA256 sağlama toplamını belirtir.
sourceUri - Dosyanın kaynak URI'si.
Özellikler: vmProfile
vmSize (isteğe bağlı)
Görüntü Oluşturucusu, 1. Nesil görüntüleri ve Standard_D2ds_v4
2. Nesil görüntüleri için varsayılan SKU boyutunu Standard_D1_v2
kullanır. Oluşturma, içinde source
belirttiğiniz görüntü tarafından tanımlanır. VmSize'ı şu nedenlerle geçersiz kılabilirsiniz:
- Daha fazla bellek, CPU gerektiren özelleştirmeler gerçekleştirme ve büyük dosyaları (GB) işleme.
- Windows derlemelerini çalıştırırken "Standard_D2_v2" veya eşdeğer VM boyutu kullanmanız gerekir.
- VM yalıtımı gerektir.
- Belirli donanım gerektiren bir görüntüyü özelleştirin. Örneğin, BIR GPU VM için bir GPU VM boyutuna ihtiyacınız vardır.
- Derleme VM'sinin geri kalanında uçtan uca şifreleme gerektir, yerel geçici diskleri kullanmayan destek derleme VM boyutunu belirtmeniz gerekir.
osDiskSizeGB
Varsayılan olarak, Görüntü Oluşturucusu görüntünün boyutunu değiştirmez, kaynak görüntüdeki boyutu kullanır. İsteğe bağlı olarak yalnızca işletim sistemi diskinin boyutunu artırabilirsiniz (Win ve Linux) ve 0 değeri, kaynak görüntüyle aynı boyutta bırakmak anlamına gelir. İşletim sistemi Disk boyutunu kaynak görüntüdeki boyuttan daha küçük bir boyuta indiremezsiniz.
vnetConfig (isteğe bağlı)
Herhangi bir sanal ağ özelliği belirtmezseniz, Image Builder kendi sanal ağını, Genel IP'sini ve ağ güvenlik grubunu (NSG) oluşturur. Genel IP, hizmetin derleme VM'siyle iletişim kurması için kullanılır. Genel IP'ye sahip olmak istemiyorsanız veya Görüntü Oluşturucusu'nun yapılandırma sunucuları (DSC, Chef, Puppet, Ansible), dosya paylaşımları gibi mevcut sanal ağ kaynaklarınıza erişmesini istiyorsanız, bir sanal ağ belirtebilirsiniz. Daha fazla bilgi için ağ belgelerini gözden geçirin.
"vnetConfig": {
"subnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName1>",
"containerInstanceSubnetId": "/subscriptions/<subscriptionID>/resourceGroups/<vnetRgName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName2>",
"proxyVmSize": "<vmSize>"
}
subnetId
Derleme VM'sinin ve doğrulama VM'sinin dağıtıldığı önceden var olan bir alt ağın kaynak kimliği.
containerInstanceSubnetId (isteğe bağlı)
Yalıtılmış Derlemeler için Azure Container Instance'ın (ACI) dağıtıldığı önceden var olan bir alt ağın kaynak kimliği. Bu alan belirtilmezse, alt ağlar ve Ağ Güvenlik Grupları ile birlikte geçici bir Sanal Ağ, ACI ile derleme VM'si arasında iletişimi etkinleştirmek için diğer ağ kaynaklarına (Özel Uç Nokta, Özel Bağlantı Hizmeti, Azure Load Balancer ve Proxy VM) ek olarak hazırlama kaynak grubuna dağıtılır.
[Bu özellik yalnızca API sürümlerinde 2024-02-01
veya daha yeni sürümlerde kullanılabilir, ancak önceki API sürümleri kullanılarak oluşturulan mevcut şablonlar bu özelliği belirtmek için güncelleştirilebilir.]
Bu alan yalnızca aynı zamanda belirtilmişse subnetId
ve aşağıdaki gereksinimleri karşılaması gerekiyorsa belirtilebilir:
- Bu alt ağ, içinde
subnetId
belirtilen alt ağ ile aynı Sanal Ağ olmalıdır. - Bu alt ağ içinde
subnetId
belirtilen alt ağ ile aynı alt ağ olmamalıdır. - ACI kaynaklarını dağıtmak için kullanılabilmesi için bu alt ağın ACI hizmetine temsilci olarak atanması gerekir. Azure hizmetleri için alt ağ temsilcisi seçme hakkında daha fazla bilgiyi buradan okuyabilirsiniz. ACI'ye özgü alt ağ temsilcisi bilgilerine buradan ulaşabilirsiniz.
- Bu alt ağ, İnternet'e ve içinde
subnetId
belirtilen alt ağa giden erişime izin vermelidir. Bu erişimler, ACI'nin sağlanabilmesi ve özelleştirmeler/doğrulamalar gerçekleştirmek için derleme VM'siyle iletişim kurabilmesi için gereklidir. Diğer uçta, içindesubnetId
belirtilen alt ağ bu alt ağdan gelen erişime izin vermelidir. Genel olarak, Azure Ağ Güvenlik Gruplarının (NSG) varsayılan güvenlik kuralları bu erişimlere izin verir. Ancak, NSG'lerinize daha fazla güvenlik kuralı eklerseniz aşağıdaki erişimlere yine de izin verilmelidir:- Içinde belirtilen
containerInstanceSubnetId
alt ağdan giden erişim:- 443 numaralı bağlantı noktasında İnternet'e (kapsayıcı görüntüsünü sağlamak için).
- 445 numaralı bağlantı noktasında İnternet'e (Azure Depolama'dan dosya paylaşımını bağlamak için).
- 22 numaralı bağlantı noktasında belirtilen alt ağa
subnetId
(ssh/Linux için) ve 5986 numaralı bağlantı noktasına (WinRM/Windows için) (derleme VM'sine bağlanmak için).
- içinde
subnetId
belirtilen alt ağa gelen erişim:- (ACI'nin derleme VM'sine bağlanması için) içinde belirtilen alt ağdan 22 Numaralı Bağlantı Noktasına (ssh/Linux için) ve Bağlantı Noktası 5986'ya
containerInstanceSubnetId
(WinRM/Windows için).
- (ACI'nin derleme VM'sine bağlanması için) içinde belirtilen alt ağdan 22 Numaralı Bağlantı Noktasına (ssh/Linux için) ve Bağlantı Noktası 5986'ya
- Içinde belirtilen
- Şablon kimliği, bu alt ağın kapsamında 'Microsoft.Network/virtualNetworks/subnets/join/action' eylemi gerçekleştirme iznine sahip olmalıdır. Burada Ağ için Azure izinleri hakkında daha fazla bilgi edinebilirsiniz.
proxyVmSize (isteğe bağlı)
Derleme VM'sine ve doğrulama VM'sine trafik geçirmek için kullanılan ara sunucu sanal makinesinin boyutu. Bu durumda hiçbir ara sunucu sanal makinesi dağıtılmadığından belirtildiyse containerInstanceSubnetId
bu alan belirtilmemelidir. Varsayılanı kullanmak için boş dizeyi atla veya belirt (Standard_A1_v2).
Özellikler: autoRun
Görüntü şablonu oluşturma işleminin autoRun
şablon oluşturulduğunda otomatik olarak başlatılıp başlatılmayacağını denetlemek için özelliğini kullanabilirsiniz. İki olası değeri olan bir sabit listesidir:
- Etkin - Otomatik çalıştırma etkinleştirildiğinden, görüntü şablonu derleme işleminiz şablon oluşturulduğunda otomatik olarak başlatılır.
- Devre dışı - Otomatik çalıştırma devre dışı bırakıldığından, şablon oluşturulduktan sonra görüntü derleme işlemini el ile başlatmanız gerekir.
"properties": {
"autoRun": {
"state": "Enabled"
}
}
Not
"Etkin" olarak ayarladığınızdaautoRun
, şablon oluşturulduktan sonra görüntü derleme işlemi bir kez çalıştırılır. İlk görüntü derlemesinin sorunsuz bir şekilde gerçekleşmesini sağlar. Ancak tutarlı ve sürekli görüntü derlemeleri sağlamaz. Bir görüntü şablonu güncelleştirildikten sonra çalışan tutarlı ve sürekli görüntü derlemeleri için bkz . Otomatik görüntü derlemesi ayarlamak için Azure Görüntü Oluşturucu tetikleyicilerini kullanma.
sürümünden farklı olarak autoRun
, Azure Image Builder tetikleyici kaynağı aracılığıyla otomatik görüntü oluşturma, görüntü derlemelerinin tutarlı bir şekilde gerçekleşmesini sağlar. Şablonda her değişiklik olduğunda, Azure Image Builder hizmeti görüntü derleme işlemini otomatik olarak tetikler.
Şablon oluşturma işleminden sonra anlık görüntü derlemeleri için seçin autoRun
. Görüntü derlemelerinde sürekli tutarlılık gerektiğinde otomatik görüntü oluşturmayı tercih edin. Özel gereksinimlerinizi göz önünde bulundurun ve iş akışınıza göre uygun seçeneği kullanın.
Özellikler: managedResourceTags
Özelliğini kullanarak managedResourceTags
Azure Image Builder hizmetinin görüntü derlemesi sırasında hazırlama kaynak grubunda oluşturduğu kaynaklara etiket uygulayabilirsiniz. Hazırlama kaynak grubu hakkında daha fazla bilgi için bkz. Azure Image Builder'a Genel Bakış
"properties": {
"managedResourceTags": {
"tag1": "value1",
"tag2": "value2"
}
}
Görüntü Şablonu İşlemleri
Görüntü Derlemesi Başlatma
Derleme başlatmak için Görüntü Şablonu kaynağında 'Çalıştır'ı çağırmanız gerekir, komut örnekleri run
:
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2023-07-01" -Action Run -Force
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateLinux01 \
--action Run
Görüntü Derlemesini İptal Etme
Yanlış olduğuna inandığınız bir görüntü derlemesi çalıştırıyorsanız, kullanıcı girişini bekliyorsanız veya hiçbir zaman başarıyla tamamlanamadığını düşünüyorsanız, derlemeyi iptal edebilirsiniz.
Derleme istediğiniz zaman iptal edilebilir. Dağıtım aşaması başladıysa yine de iptal edebilirsiniz, ancak tamamlanmamış olabilecek görüntüleri temizlemeniz gerekir. İptal komutu, iptalin tamamlanmasını beklemez, bu durum komutlarını kullanarak ilerlemeyi iptal etme işlemini izlerlastrunstatus.runstate
.
cancel
Komut örnekleri:
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2023-07-01" -Action Cancel -Force
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateLinux01 \
--action Cancel
Sonraki adımlar
Azure Image Builder GitHub'da farklı senaryolar için örnek .json dosyaları vardır.