Sdílet prostřednictvím


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

Uživatelská data umožňují předat 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ízí další výhody:

  • Uživatelská data je možné po zřízení načíst ze služby Azure Instance Metadata Service (IMDS).

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

  • Uživatelská data je možné aktualizovat mimo virtuální počítač bez zastavení nebo restartování virtuálního počítače.

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

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

Upozornění zabezpečení

Upozorňující

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

Ujistěte se, že získáte nejnovější rozhraní API Azure Resource Manageru, 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 kódovaný podle base64. Velikost nesmí překročit 64 kB.

Vytvoření uživatelských dat pro virtuální počítač Azure nebo VMSS

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 Manageru vytvořte nový virtuální počítač s uživatelskými daty. Pokud používáte rozhraní REST API, přidejte pro jednotlivé virtuální počítače část UserData do části Vlastnosti s požadavkem PUT pro 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řidejte userData do části virtualMachineProfile s požadavkem PUT při vytváření škálovací sady virtuálních počítačů.

{
  "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é uvnitř virtuálního počítače můžou načítat uživatelská data z koncového bodu IMDS. Podrobnosti najdete tady v ukázkovém kódu IMDS.

Zákazníci můžou pomocí rozhraní REST API načíst stávající hodnotu uživatelských dat pomocí $expand=koncový bod 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č škálovací sady 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

Pomocí rozhraní REST API můžete k aktualizaci uživatelských dat použít normální požadavek PUT nebo PATCH. Uživatelská data se aktualizují bez nutnosti zastavit nebo restartovat virtuální počítač.

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 uživatelská data.

Uživatelská data a vlastní data

Vlastní data stále fungují stejným způsobem 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 VMSS bez uživatelských dat, můžete do tohoto virtuálního počítače přidat uživatelská data pomocí příkazů aktualizace, jak je popsáno v části Aktualizace dat uživatele. Ujistěte se, že upgradujete na nejnovější verzi rozhraní API služby Azure Resource Manger.

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 jeho koncového bodu.