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",
  "apiVersion": "2022-02-14",
  "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/<subnetName>",
        "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>",
        ...
      ]
    }
  }
}

Tür ve API sürümü

type, olması gereken Microsoft.VirtualMachineImages/imageTemplateskaynak türüdür. apiVersion, 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.

"type": "Microsoft.VirtualMachineImages/imageTemplates",
"apiVersion": "2022-02-14",

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
  • İsviçre Kuzey
  • 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

Ö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
"location": "<region>"

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 bir 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 betiklerinde 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:

Ö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 betiklerine 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 kimlik doğrulaması 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) veya 2h (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ıysa( blob genel olarak işaretlendiğinden bağımsız olarak) blob üzerinde okuma erişimi için Yönetilen Kullanıcı Kimliği izinlerini 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-WebRequestgibi 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.logyazı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.

{
  "errorHandling": {
    "onCustomizerError": "abort",
    "onValidationError": "cleanup"
  }
}

ö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 runOutputNameeriş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=2021-10-01

Çıkış:

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

  "replicationRegions": [
      "<region where the gallery is deployed>",
      "<region>"
  ]

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>
  • 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ı eastusistiyorsanı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

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 veya Source iki olası değerdir.
  • major - En son sürümün oluşturulacağı ana sürümü belirtir. Yalnızca ayarı scheme olarak ayarlandığında Latestgeç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

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.

"optimize": {
      "vmboot": {
        "state": "Enabled"
      }
    }
  • 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ğinin vmbootdurumu.

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. imageVersionIdResourceId, 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ğinde stagingResourceGroup 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 sourcebelirttiğ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.

{
  "osDiskSizeGB": 100
}

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/<subnetName>"
}

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 "2021-10-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 "2021-10-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.