Compartilhar via


Dados do usuário na máquina virtual do Azure

Os dados do usuário permitem que você transmita seus scripts ou metadados para a máquina virtual.

O que são "dados do usuário"

Os dados do usuário são um conjunto de scripts ou outros metadados que serão inseridos em uma máquina virtual do Azure no momento do provisionamento. Todos os aplicativos na máquina virtual podem acessar os dados do usuário usando o IMDS (Serviço de Metadados de Instância) do Azure após o provisionamento.

Os dados do usuário são uma nova versão dos dados personalizados e oferecem mais benefícios:

  • Os dados do usuário podem ser recuperados por meio do IMDS (Serviço de Metadados de Instância) do Azure após o provisionamento.

  • Os dados do usuário são persistentes. Eles ficam disponíveis durante todo o tempo de vida da VM.

  • Os dados do usuário podem ser atualizados de fora da VM, sem parar nem reinicializar a VM.

  • Os dados do usuário podem ser consultados por meio da API GET da VM ou do VMSS com a opção $expand.

Além disso, se os dados do usuário não forem adicionados no momento do provisionamento, eles poderão ser adicionados mais tarde.

Aviso de segurança

Aviso

Os dados do usuário não são criptografados e todos os processos na VM podem consultá-los. Você não deve armazenar informações confidenciais nos dados do usuário.

Obtenha a API do Azure Resource Manager mais recente para usar os novos recursos de dados do usuário. O conteúdo deve ser codificado em base64 antes de passado para a API. O tamanho não pode exceder 64 KB.

Criar dados do usuário para uma VM ou um VMSS do Azure

Como adicionar dados do usuário ao criar uma VM

Use este modelo do Azure Resource Manager para criar uma VM com os dados do usuário. Se você está usando uma API REST, para VMs individuais, adicione 'UserData' à seção "propriedades" com a solicitação 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" } ] },
  }
}

Como adicionar dados do usuário ao criar um Conjunto de Dimensionamento de Máquinas Virtuais

Usando uma API REST, adicione 'UserData' à seção "virtualMachineProfile" com a solicitação 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"
  }
}

Como recuperar dados do usuário

Os aplicativos em execução dentro da VM podem recuperar dados do usuário do ponto de extremidade do IMDS. Para obter detalhes, confira o código de exemplo do IMDS aqui.

Os clientes podem recuperar o valor existente dos dados do usuário por meio da API REST usando $expand=userData endpoint (o corpo da solicitação 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"

Como atualizar os dados do usuário

Com a API REST, você pode usar uma solicitação PUT ou PATCH normal para atualizar os dados do usuário. Os dados do usuário são atualizados sem a necessidade de parar ou reinicializar a VM.

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

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

As VM.Properties nessas solicitações devem conter o campo UserData desejado, desta 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=="
      } 

Observação

Se você passar uma cadeia de caracteres vazia para "userData" nesse caso, os dados do usuário serão excluídos.

Dados do usuário e dados personalizados

Os dados personalizados continuam a funcionar como sempre. Observe que não é possível recuperar dados personalizados do IMDS.

Como adicionar dados do usuário a uma VM existente

Se você tem uma VM ou um VMSS existente sem dados do usuário, adicione dados do usuário a essa VM usando os comandos de atualização, conforme a descrição na seção "Como atualizar os dados do usuário". Atualize para a última versão da API do Azure Resource Manger.

Próximas etapas

Experimente o Serviço de Metadados de Instância do Azure. Saiba como obter os metadados da instância de VM e os dados do usuário do respectivo ponto de extremidade.