Data pengguna untuk Azure Virtual Machine

Data pengguna memungkinkan Anda untuk meneruskan skrip atau metadata Anda sendiri ke komputer virtual Anda.

Apa itu "data pengguna"

Data pengguna adalah sekumpulan skrip atau metadata lain yang disisipkan ke komputer virtual Azure pada waktu provisi. Aplikasi apa pun di komputer virtual dapat mengakses data pengguna dari Azure Instance Metadata Service (IMDS) setelah provisi.

Data pengguna adalah versi baru dari data kustom dan menawarkan manfaat tambahan:

  • Data pengguna dapat diambil dari Azure Instance Metadata Service (IMDS) setelah provisi.

  • Data pengguna bersifat persisten. Ini akan tersedia selama masa pakai VM.

  • Data pengguna dapat diperbarui dari luar VM, tanpa menghentikan atau me-reboot VM.

  • Data pengguna dapat dikueri melalui GET VM/VMSS API dengan opsi $expand.

Selain itu, jika data pengguna tidak ditambahkan pada waktu provisi, Anda masih dapat menambahkannya setelah provisi.

Peringatan keamanan

Peringatan

Data pengguna tidak akan dienkripsi, dan proses apa pun pada VM dapat meminta data ini. Anda tidak boleh menyimpan informasi rahasia dalam data pengguna.

Pastikan Anda mendapatkan API Azure Resource Manager terbaru untuk menggunakan fitur data pengguna baru. Konten harus dikodekan base64 sebelum diteruskan ke API. Ukurannya tidak boleh melebihi 64 KB.

Buat data pengguna untuk Azure VM/VMSS

Menambahkan data pengguna saat membuat VM baru

Gunakan templat Azure Resource Manager ini untuk membuat VM baru dengan data pengguna. Jika Anda menggunakan rest API, untuk VM tunggal, tambahkan 'UserData' ke bagian "properti" dengan permintaan PUT untuk membuat VM.

{
  "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" } ] },
  }
}

Menambahkan data pengguna saat Anda membuat Set Skala Komputer Virtual baru

Menggunakan rest API, tambahkan 'UserData' ke bagian "virtualMachineProfile" dengan permintaan PUT saat membuat Virtual Machine Scale Set.

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

Mengambil data pengguna

Aplikasi yang berjalan di dalam VM dapat mengambil data pengguna dari titik akhir IMDS. Untuk selengkapnya, lihat kode sampel IMDS di sini.

Pelanggan dapat mengambil nilai data pengguna yang ada melalui rest API menggunakan titik akhir $expand=userData (isi permintaan dapat dibiarkan kosong).

VM tunggal:

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

Set Skala Komputer Virtual:

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

Virtual Machine Scale Set VM:

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

Memperbarui data pengguna

Dengan REST API, Anda dapat menggunakan permintaan PUT atau PATCH normal untuk memperbarui data pengguna. Data pengguna diperbarui tanpa perlu menghentikan atau me-reboot VM.

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

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

VM.Properties dalam permintaan ini harus berisi bidang UserData yang Anda inginkan, seperti ini:

"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=="
      } 

Catatan

Jika Anda meneruskan string kosong untuk "userData" dalam hal ini, data pengguna akan dihapus.

Data pengguna dan data kustom

Data kustom terus berfungsi dengan cara yang sama seperti saat ini. Perhatikan bahwa Anda tidak dapat mengambil data kustom dari IMDS.

Menambahkan data pengguna ke VM yang sudah ada

Jika Anda memiliki VM/VMSS yang ada tanpa data pengguna, Anda masih dapat menambahkan data pengguna ke mesin virtual ini dengan menggunakan perintah pembaruan, seperti yang dijelaskan di bagian "Memperbarui data Pengguna". Pastikan Anda memperbarui ke versi terbaru API Azure Resource Manger.

Langkah berikutnya

Cobalah Azure Instance Metadata Service, pelajari cara mendapatkan metadata instans VM dan data pengguna dari titik akhirnya.