Dela via


Användardata för en 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 infogas på en virtuell Azure-dator vid etableringstillfället. 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.

  • Användardata kan frågas via GET VM/VMSS API med $expand alternativ.

Om användardata inte läggs till vid etableringstillfället kan du dessutom 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 överstiga 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-mallen för att skapa en ny virtuell dator med användardata. Om du använder rest-API lägger du till UserData i avsnittet "egenskaper" för enskilda virtuella datorer med PUT-begäran om 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

Använd rest-API:et och lägg 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ämtar användardata

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

Kunder kan hämta befintligt värde för användardata via rest-API med hjälp av $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 för vm-skalningsuppsättning:

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 vanlig 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 bör 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=="
      } 

Kommentar

Om du skickar in 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 metadata för vm-instansen och användardata från dess slutpunkt.