Dados de Utilizador da Máquina Virtual do Azure

Os dados de utilizador permitem-lhe transmitir os seus próprios scripts ou metadados à sua máquina virtual.

O que são "dados de utilizador"

Os dados de utilizador são um conjunto de scripts ou outros metadados inseridos numa máquina virtual do Azure no momento do aprovisionamento. Qualquer aplicação na máquina virtual pode aceder aos dados do utilizador a partir do Serviço de Metadados da Instância do Azure (IMDS) após o aprovisionamento.

Os dados dos utilizadores são uma nova versão dos dados personalizados e oferecem benefícios adicionais:

  • Os dados do utilizador podem ser obtidos a partir do Serviço de Metadados da Instância do Azure (IMDS) após o aprovisionamento.

  • Os dados do utilizador são persistentes. Estará disponível durante a duração da VM.

  • Os dados do utilizador podem ser atualizados a partir de fora da VM, sem parar ou reiniciar a VM.

  • Os dados do utilizador podem ser consultados através da VM GET/API VMSS com $expand opção.

Além disso, se os dados do utilizador não forem adicionados no momento do aprovisionamento, pode adicioná-lo após o aprovisionamento.

Aviso de segurança

Aviso

Os dados do utilizador não serão encriptados e qualquer processo na VM pode consultar estes dados. Não deve armazenar informações confidenciais nos dados dos utilizadores.

Certifique-se de que obtém a API do Azure Resource Manager mais recente para utilizar as novas funcionalidades de dados de utilizador. Os conteúdos devem ser codificados com base64 antes de serem transmitidos para a API. O tamanho não pode exceder os 64 KB.

Criar dados de utilizador para a VM/VMSS do Azure

Adicionar dados de utilizador ao criar uma nova VM

Utilize este modelo de Resource Manager do Azure para criar uma nova VM com dados de utilizador. Se estiver a utilizar a API rest, para VMs individuais, adicione "UserData" à secção "propriedades" com o pedido PUT para criar a 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" } ] },
  }
}

Adicionar dados de utilizador ao criar um novo Conjunto de Dimensionamento de Máquinas Virtuais

Com a API rest, adicione "UserData" à secção "virtualMachineProfile" com o pedido PUT ao criar o Conjunto de Dimensionamento de Máquinas Virtuais.

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

Obter dados de utilizador

As aplicações em execução dentro da VM podem obter dados de utilizador do ponto final do IMDS. Para obter detalhes, veja código de exemplo IMDS aqui.

Os clientes podem obter o valor existente dos dados do utilizador através da API rest com $expand=userData endpoint (o corpo do pedido pode ficar vazio).

VMs individuais:

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

Conjunto de Dimensionamento de Máquinas Virtuais:

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

VM do Conjunto de Dimensionamento de Máquinas Virtuais:

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

Atualizar dados do utilizador

Com a API REST, pode utilizar um pedido PUT ou PATCH normal para atualizar os dados do utilizador. Os dados do utilizador são atualizados sem a necessidade de parar ou reiniciar a VM.

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

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

As Propriedades VM.nestes pedidos devem conter o campo UserData pretendido, da seguinte forma:

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

Nota

Se transmitir uma cadeia vazia para "userData" neste caso, os dados do utilizador serão eliminados.

Dados de utilizador e dados personalizados

Os dados personalizados continuam a funcionar da mesma forma que atualmente. Tenha em atenção que não pode obter dados personalizados do IMDS.

Adicionar dados de utilizador a uma VM existente

Se tiver uma VM/VMSS existente sem dados de utilizador, ainda pode adicionar dados de utilizador a esta VM através dos comandos de atualização, conforme descrito na secção "Atualizar os dados do utilizador ". Certifique-se de que atualiza para a versão mais recente da API do Azure Resource Manger.

Passos seguintes

Experimente o Serviço de Metadados do Azure Instance, saiba como obter os metadados da instância da VM e os dados de utilizador do ponto final.