Användardata för virtuell Azure-dator

Med användardata kan du skicka egna skript eller metadata till den virtuella datorn.

Vad är "användardata"

Användardata är en uppsättning skript eller andra metadata som kommer att infogas på en virtuell Azure-dator vid etableringen. Alla program på den virtuella datorn kan komma åt användardata från Azure Instance Metadata Service (IMDS) efter etableringen.

Användardata är en ny version av anpassade data och ger ytterligare fördelar:

  • Användardata kan hämtas från Azure Instance Metadata Service (IMDS) efter etableringen.

  • Användardata är beständiga. Den kommer att vara tillgänglig under den virtuella datorns livslängd.

  • Användardata kan uppdateras utanför den virtuella datorn utan att stoppa eller starta om den virtuella datorn.

  • Du kan fråga användardata via GET VM/VMSS API med $expand alternativ.

Om användardata inte läggs till vid etableringen kan du dessutom fortfarande lägga till dem efter etableringen.

Säkerhetsvarning

Varning

Användardata krypteras inte och alla processer på den virtuella datorn kan köra frågor mot dessa data. Du bör inte lagra konfidentiell information i användardata.

Se till att du får det senaste Azure Resource Manager API:et för att använda de nya användardatafunktionerna. Innehållet ska vara base64-kodat innan det skickas till API:et. Storleken får inte överskrida 64 kB.

Skapa användardata för virtuella Azure-datorer/VMSS

Lägga till användardata när du skapar en ny virtuell dator

Använd den här Azure Resource Manager för att skapa en ny virtuell dator med användardata. Om du använder rest-API:et för enskilda virtuella datorer lägger du till UserData i avsnittet "properties" med PUT-begäran för att skapa den virtuella datorn.

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

Lägga till användardata när du skapar en ny VM-skalningsuppsättning

Med hjälp av REST-API:et lägger du till UserData i avsnittet "virtualMachineProfile" med PUT-begäran när du skapar VM-skalningsuppsättningen.

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

Hämta användardata

Program som körs på den virtuella datorn kan hämta användardata från IMDS-slutpunkten. Mer information finns i EXEMPELkod för IMDS här.

Kunder kan hämta det befintliga värdet för användardata via REST API med hjälp $expand= userData-slutpunkten (begärandetexten kan lämnas tom).

Enskilda virtuella datorer:

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

VM-skalningsuppsättning:

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

Vm-skalningsuppsättning för virtuell dator:

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

Uppdatera användardata

Med REST API kan du använda en normal PUT- eller PATCH-begäran för att uppdatera användardata. Användardata uppdateras utan att du behöver stoppa eller starta om den virtuella datorn.

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

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

VM.Properties i dessa begäranden ska innehålla önskat UserData-fält, så här:

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

Anteckning

Om du skickar en tom sträng för "userData" i det här fallet tas användardata bort.

Användardata och anpassade data

Anpassade data fortsätter att fungera på samma sätt som i dag. Observera att du inte kan hämta anpassade data från IMDS.

Lägga till användardata till en befintlig virtuell dator

Om du har en befintlig virtuell dator/VMSS utan användardata kan du fortfarande lägga till användardata till den här virtuella datorn med hjälp av uppdateringskommandona, enligt beskrivningen i avsnittet Uppdatera användardata . Se till att du uppgraderar till den senaste versionen av Azure Resource Manger API.

Nästa steg

Prova Azure Instance Metadata Service och lär dig hur du hämtar vm-instansmetadata och användardata från dess slutpunkt.