Uživatelská data pro virtuální počítač Azure

Uživatelská data umožňují předávat virtuálnímu počítači vlastní skripty nebo metadata.

Co jsou "uživatelská data"

Uživatelská data jsou sada skriptů nebo jiných metadat, která se vkládají do virtuálního počítače Azure při zřizování. Každá aplikace na virtuálním počítači má po zřízení přístup k uživatelským datům ze služby Azure Instance Metadata Service (IMDS).

Uživatelská data jsou novou verzí vlastních dat a nabízejí další výhody:

  • Data uživatelů je možné po zřízení načíst ze služby Azure Instance Metadata Service (IMDS).

  • Uživatelská data jsou trvalá. Bude k dispozici po celou dobu životnosti virtuálního počítače.

  • Uživatelská data je možné aktualizovat mimo virtuální počítač, aniž by bylo nutné virtuální počítač zastavit nebo restartovat.

  • Uživatelská data je možné dotazovat prostřednictvím rozhraní GET VM/VMSS API s $expand možností.

Kromě toho platí, že pokud se uživatelská data nepřidají při zřizování, můžete je přidat i po zřízení.

Upozornění zabezpečení

Upozornění

Uživatelská data se nebudou šifrovat a jakýkoli proces na virtuálním počítači se na tato data může dotazovat. V uživatelských datech byste neměli ukládat důvěrné informace.

Ujistěte se, že získáte nejnovější rozhraní AZURE Resource Manager API, abyste mohli používat nové funkce uživatelských dat. Obsah by měl být před předáním do rozhraní API zakódovaný jako base64. Velikost nesmí překročit 64 kB.

Vytvoření uživatelských dat pro virtuální počítače Azure nebo škálovací sady virtuálních počítačů Azure

Přidání uživatelských dat při vytváření nového virtuálního počítače

Pomocí této šablony Azure Resource Manager vytvořte nový virtuální počítač s uživatelskými daty. Pokud používáte rozhraní REST API, pro jednotlivé virtuální počítače přidejte userData do oddílu "properties" s požadavkem PUT na vytvoření virtuálního počítače.

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

Přidání uživatelských dat při vytváření nové škálovací sady virtuálních počítačů

Pomocí rozhraní REST API při vytváření škálovací sady virtuálních počítačů přidejte do části virtualMachineProfile s požadavkem PUT userData.

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

Načítání uživatelských dat

Aplikace spuštěné na virtuálním počítači můžou načítat data uživatelů z koncového bodu IMDS. Podrobnosti najdete tady v ukázkovém kódu IMDS.

Zákazníci můžou načíst stávající hodnotu uživatelských dat prostřednictvím rozhraní REST API pomocí koncového bodu $expand=userData (text požadavku může zůstat prázdný).

Jeden virtuální počítač:

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

Škálovací sada virtuálních počítačů:

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

Virtuální počítač se škálovací sadou virtuálních počítačů:

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

Aktualizace uživatelských dat

S rozhraním REST API můžete k aktualizaci uživatelských dat použít normální požadavek PUT nebo PATCH. Uživatelská data se aktualizují, aniž by bylo nutné virtuální počítač zastavit nebo restartovat.

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

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

Vlastnost VM.Properties v těchto požadavcích by měla obsahovat požadované pole UserData, například takto:

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

Poznámka

Pokud v tomto případě předáte prázdný řetězec pro userData, odstraní se data uživatele.

Uživatelská data a vlastní data

Vlastní data fungují stejně jako dnes. Všimněte si, že z IMDS nemůžete načíst vlastní data.

Přidání uživatelských dat do existujícího virtuálního počítače

Pokud máte existující virtuální počítač nebo škálovací sadu virtuálních počítačů bez uživatelských dat, můžete do tohoto virtuálního počítače přidat uživatelská data pomocí příkazů pro aktualizaci, jak je popsáno v části "Aktualizace uživatelských dat" . Nezapomeňte upgradovat na nejnovější verzi rozhraní API Azure Resource Manageru.

Další kroky

Vyzkoušejte službu Azure Instance Metadata Service a zjistěte, jak získat metadata instance virtuálního počítače a uživatelská data z jejího koncového bodu.