Azure Sanal Makinesi için Kullanıcı Verileri

Kullanıcı verileri, kendi betiklerinizi veya meta verilerinizi sanal makinenize geçirmenize olanak tanır.

"Kullanıcı verileri" nedir?

Kullanıcı verileri, sağlama zamanında bir Azure sanal makinesine eklenen bir dizi betik veya diğer meta verilerdir. Sanal makinedeki herhangi bir uygulama, sağlamadan sonra Azure Örnek Meta Veri Hizmeti'nden (IMDS) kullanıcı verilerine erişebilir.

Kullanıcı verileri özel verilerin yeni bir sürümüdür ve ek avantajlar sunar:

  • Kullanıcı verileri, sağlamadan sonra Azure Örnek Meta Veri Hizmeti'nden (IMDS) alınabilir.

  • Kullanıcı verileri kalıcıdır. Vm'nin kullanım ömrü boyunca kullanılabilir.

  • Kullanıcı verileri, VM'yi durdurmadan veya yeniden başlatmadan VM dışından güncelleştirilebilir.

  • Kullanıcı verileri, $expand seçeneğiyle GET VM/VMSS API'siyle sorgulanabilir.

Ayrıca, kullanıcı verileri sağlama zamanında eklenmiyorsa, sağlamadan sonra da ekleyebilirsiniz.

Güvenlik uyarısı

Uyarı

Kullanıcı verileri şifrelenmez ve VM'de herhangi bir işlem bu verileri sorgulayabilir. Gizli bilgileri kullanıcı verilerinde depolamamalısınız.

Yeni kullanıcı verileri özelliklerini kullanmak için en son Azure Resource Manager API'sini aldığınızdan emin olun. İçeriğin API'ye geçirilmeden önce base64 kodlanmış olması gerekir. Boyut 64 KB'ı aşamaz.

Azure VM/VMSS için kullanıcı verileri oluşturma

Yeni VM oluştururken kullanıcı verileri ekleme

Kullanıcı verileriyle yeni bir VM oluşturmak için bu Azure Resource Manager şablonunu kullanın. Rest API kullanıyorsanız, tek VM'ler için VM'yi oluşturmak için PUT isteğiyle birlikte "özellikler" bölümüne 'UserData' ekleyin.

{
  "name": "testVM",
  "location": "West US",
  "properties": {
    "hardwareProfile": {
      "vmSize": "Standard_A1"
    },
    "storageProfile": {
      "osDisk": {
        "osType": "Windows",
        "name": "osDisk",
        "createOption": "Attach",
        "vhd": {
          "uri": "http://myaccount.blob.core.windows.net/container/directory/blob.vhd"
        }
      }
    },
    "userData": "c2FtcGxlIHVzZXJEYXRh",
    "networkProfile": { "networkInterfaces" : [ { "name" : "nic1" } ] },
  }
}

Yeni Sanal Makine Ölçek Kümesi oluştururken kullanıcı verileri ekleme

Rest API kullanarak, Sanal Makine Ölçek Kümesi oluştururken PUT isteğiyle "virtualMachineProfile" bölümüne 'UserData' ekleyin.

{
  "location": "West US",
  "sku": {
    "name": "Standard_A1",
    "capacity": 1
  },
  "properties": {
    "upgradePolicy": {
      "mode": "Automatic"
    },
    "virtualMachineProfile": {
      "userData": "VXNlckRhdGE=",
      "osProfile": {
        "computerNamePrefix": "TestVM",
        "adminUsername": "TestUserName",
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "timeZone": "Dateline Standard Time"
        }
      },
      "storageProfile": {
        "osDisk": {
          "createOption": "FromImage",
          "caching": "ReadOnly"
        },
        "imageReference": {
          "publisher": "publisher",
          "offer": "offer",
          "sku": "sku",
          "version": "1.2.3"
        }
      },
      "networkProfile": {"networkInterfaceConfigurations":[{"name":"nicconfig1","properties":{"ipConfigurations":[{"name":"ip1","properties":{"subnet":{"id":"vmssSubnet0"}}}]}}]},
      "diagnosticsProfile": {
        "bootDiagnostics": {
          "enabled": true,
          "storageUri": "https://crputest.blob.core.windows.net"
        }
      }
    },
    "provisioningState": 0,
    "overprovision": false,
    "uniqueId": "00000000-0000-0000-0000-000000000000"
  }
}

Kullanıcı verilerini alma

VM içinde çalışan uygulamalar IMDS uç noktasından kullanıcı verilerini alabilir. Ayrıntılar için buradaki IMDS örnek koduna bakın.

Müşteriler, $expand=userData uç noktasını kullanarak rest API aracılığıyla mevcut kullanıcı verilerini alabilir (istek gövdesi boş bırakılabilir).

Tek VM'ler:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachines/{VMName}?$expand=userData"

Sanal Makine Ölçek Kümesi:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMSSName}?$expand=userData"

Sanal Makine Ölçek Kümesi VM'si:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMSSName}/virtualmachines/{vmss instance id}?$expand=userData"

Kullanıcı verilerini güncelleştirme

REST API ile, kullanıcı verilerini güncelleştirmek için normal bir PUT veya PATCH isteği kullanabilirsiniz. Kullanıcı verileri, VM'yi durdurmaya veya yeniden başlatmaya gerek kalmadan güncelleştirilir.

PUT "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/ virtualMachines/{VMName}

PATCH "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/ virtualMachines/{VMName}

Bu isteklerdeki VM.Properties, aşağıdaki gibi istediğiniz UserData alanını içermelidir:

"properties": {
        "hardwareProfile": {
          "vmSize": "Standard_D1_v2"
        },
        "storageProfile": {
          "imageReference": {
            "sku": "2016-Datacenter",
            "publisher": "MicrosoftWindowsServer",
            "version": "latest",
            "offer": "WindowsServer"
          },
          "osDisk": {
            "caching": "ReadWrite",
            "managedDisk": {
              "storageAccountType": "StandardSSD_LRS"
            },
            "name": "vmOSdisk",
            "createOption": "FromImage"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/{existing-nic-name}",
              "properties": {
                "primary": true
              }
            }
          ]
        },
        "osProfile": {
          "adminUsername": "{your-username}",
          "computerName": "{vm-name}",
          "adminPassword": "{your-password}"
        },
        "diagnosticsProfile": {
          "bootDiagnostics": {
            "storageUri": "http://{existing-storage-account-name}.blob.core.windows.net",
            "enabled": true
          }
        },
        "userData": "U29tZSBDdXN0b20gRGF0YQ=="
      } 

Not

Bu durumda "userData" için boş bir dize geçirirseniz, kullanıcı verileri silinir.

Kullanıcı verileri ve özel veriler

Özel veriler bugün olduğu gibi çalışmaya devam eder. IMDS'den özel veri alamazsınız.

Mevcut vm'ye kullanıcı verileri ekleme

Kullanıcı verileri olmayan mevcut bir VM/VMSS'niz varsa, "Kullanıcı verilerini güncelleştirme" bölümünde açıklandığı gibi güncelleştirme komutlarını kullanarak bu VM'ye kullanıcı verileri ekleyebilirsiniz. Azure Kaynak Yöneticisi API'sinin en son sürümüne yükseltdiğinizden emin olun.

Sonraki adımlar

Azure Örnek Meta Veri Hizmeti'ni deneyin, VM örneği meta verilerini ve kullanıcı verilerini uç noktasından almayı öğrenin.