Azure Sanal Makineler'da özel veriler ve cloud-init

Dikkat

Bu makalede, Kullanım Süresi Sonu (EOL) durumuna yakın bir Linux dağıtımı olan CentOS'a başvuruda bulunur. Lütfen kullanımınızı göz önünde bulundurun ve uygun şekilde planlayın. Daha fazla bilgi için bkz . CentOS Kullanım Süresi Sonu kılavuzu.

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

Sağlama zamanında bir Microsoft Azure sanal makinesine (VM) betik veya başka meta veriler eklemeniz gerekebilir. Diğer bulutlarda bu kavram genellikle kullanıcı verileri olarak adlandırılır. Microsoft Azure'ın özel veriler adlı benzer bir özelliği vardır.

İlk başlatma veya kurulum sırasında vm'nin kullanımına sunulan ve sağlama olarak adlandırılan özel veriler sağlanır. Sağlama, VM oluşturma parametrelerinin (örneğin, konak adı, kullanıcı adı, parola, sertifikalar, özel veriler ve anahtarlar) VM'nin kullanımına sunulduğu işlemdir. Linux Aracısı veya cloud-init gibi bir sağlama aracısı bu parametreleri işler.

Vm'ye özel veri geçirme

Özel verileri kullanmak için verileri API'ye geçirmeden önce içeriği Base64 ile kodlamanız gerekir. Bu durum, sizin için dönüştürme işlemini sizin için (Azure CLI gibi) yerine sağlayan bir CLI aracı kullanmıyorsanız. Boyut 64 KB'ı aşamaz.

CLI'da, aşağıdaki örnekte gösterildiği gibi özel verilerinizi dosya olarak geçirebilirsiniz. Dosya Base64'e dönüştürülür.

az vm create \
  --resource-group myResourceGroup \
  --name centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

Azure Resource Manager'da bir base64 işlevi vardır:

"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-07-01",
"location": "[parameters('location')]",
"dependsOn": [
..],
"variables": {
        "customDataBase64": "[base64(parameters('stringData'))]"
    },
"properties": {
..
    "osProfile": {
        "computerName": "[parameters('virtualMachineName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "customData": "[variables('customDataBase64')]"
        },

Özel verileri işleme

VM'lere yüklenen sağlama aracıları platformla iletişimi ve dosya sistemine veri yerleştirmeyi işler.

Windows

Özel veriler %SYSTEMDRIVE%\AzureData\CustomData.bin dosyasına ikili dosya olarak yerleştirilir, ancak işlenmez. Bu dosyayı işlemek istiyorsanız özel bir görüntü oluşturmanız ve CustomData.bin işlemek için kod yazmanız gerekir.

Linux

Linux işletim sistemlerinde, özel veriler ovf-env.xml dosyası aracılığıyla VM'ye geçirilir. Bu dosya sağlama sırasında /var/lib/waagent dizinine kopyalanır. Linux Aracısı'nın daha yeni sürümleri, kolaylık sağlamak için Base64 ile kodlanmış verileri /var/lib/waagent/CustomData dosyasına kopyalar.

Azure şu anda iki sağlama aracısını destekler:

  • Linux Aracısı. Aracı varsayılan olarak özel verileri işlemez. Verilerin etkin olduğu özel bir görüntü oluşturmanız gerekir. İlgili ayarlar şunlardır:

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    Özel verileri etkinleştirip bir betik çalıştırdığınızda, betiğin yürütülmesi tamamlanana kadar sanal makine başarılı bir VM sağlama raporu vermez. Betik toplam VM sağlama süresi sınırı olan 40 dakikayı aşarsa, VM oluşturma başarısız olur.

    Betik çalıştırılamazsa veya yürütme sırasında hatalar oluşursa bu önemli bir sağlama hatası değildir. Betiğin tamamlanma durumu hakkında sizi uyarmak için bir bildirim yolu oluşturmanız gerekir.

    Özel veri yürütme sorunlarını gidermek için /var/log/waagent.log gözden geçirin.

  • cloud-init. Varsayılan olarak, bu aracı özel verileri işler. Cloud-init yapılandırması ve betikleri gibi birden çok özel veri biçimi kabul eder.

    Linux Aracısı'na benzer şekilde, cloud-init özel verileri işlerken yapılandırma işleminin veya betiklerin yürütülmesi sırasında hatalar oluşursa bu önemli bir sağlama hatası değildir. Betiğin tamamlanma durumu hakkında sizi uyarmak için bir bildirim yolu oluşturmanız gerekir.

    Ancak, Linux Aracısı'ndan farklı olarak cloud-init, vm'nin hazır olduğunu platforma raporlamadan önce kullanıcıdan gelen özel veri yapılandırmalarının tamamlanmasını beklemez. Sorun giderme dahil olmak üzere Azure'da cloud-init hakkında daha fazla bilgi için bkz . Azure'da sanal makineler için cloud-init desteği.

SSS

VM oluşturulduktan sonra özel verileri güncelleştirebilir miyim?

Tek VM'ler için VM modelindeki özel verileri güncelleştiremezsiniz. Ancak Sanal Makine Ölçek Kümeleri için özel verileri güncelleştirebilirsiniz. Daha fazla bilgi için bkz . Ölçek Kümesini Değiştirme. Sanal Makine Ölçek Kümesi için modeldeki özel verileri güncelleştirdiğinizde:

  • Ölçek kümesindeki mevcut örnekler en son modele güncelleştirilip yeniden tasarlanana kadar güncelleştirilmiş özel verileri almaz.
  • Yeni örnekler yeni özel verileri alır.

Hassas değerleri özel verilere yerleştirebilir miyim?

Hassas verileri özel verilerde depolamamamızı öneririz. Daha fazla bilgi için bkz . Azure veri güvenliği ve şifreleme en iyi yöntemleri.

Özel veriler I AVH'da kullanılabilir hale getirildi mi?

Özel veriler Azure Örnek Meta Veri Hizmeti'nde (I AVH) kullanılamaz. Bunun yerine I AVH kullanıcı verilerini kullanmanızı öneririz. Daha fazla bilgi için bkz . Azure Örnek Meta Veri Hizmeti aracılığıyla kullanıcı verileri.