Partilhar via


Dados do usuário para a Máquina Virtual do Azure

Os dados do usuário permitem que você passe seus próprios scripts ou metadados para sua máquina virtual.

O que são "dados do utilizador"

Dados do usuário são um conjunto de scripts ou outros metadados inseridos em uma máquina virtual do Azure no momento do provisionamento. Qualquer aplicativo na máquina virtual pode acessar os dados do usuário do 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 benefícios adicionais:

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

  • Os dados do usuário são persistentes. Ele estará disponível durante o tempo de vida da VM.

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

  • Os dados do usuário podem ser consultados via GET VM/VMSS API com $expand opção.

Além disso, se os dados do usuário não forem adicionados no momento do provisionamento, você ainda poderá adicioná-los após o provisionamento.

Aviso de segurança

Aviso

Os dados do usuário não serão criptografados e qualquer processo na VM pode consultar esses dados. Você não deve armazenar informações confidenciais nos dados do usuário.

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

Criar dados de usuário para VM/VMSS do Azure

Adicionando dados do usuário ao criar uma nova VM

Use este modelo do Azure Resource Manager para criar uma nova VM com dados do usuário. Se você estiver usando a API rest, para VMs únicas, 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" } ] },
  }
}

Adicionando dados do usuário ao criar um novo Conjunto de Dimensionamento de Máquina Virtual

Usando a API rest, adicione 'UserData' à seção "virtualMachineProfile" com a solicitação PUT ao criar o Conjunto de Escala de Máquina Virtual.

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

Recuperando dados do usuário

Os aplicativos executados dentro da VM podem recuperar dados do usuário do ponto de extremidade IMDS. Para obter detalhes, consulte 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 o ponto de extremidade $expand=userData (o corpo da solicitação pode ser deixado vazio).

VMs únicas:

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

Conjunto de escala da máquina virtual:

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

VM do Conjunto de Dimensionamento de Máquina Virtual:

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

Atualizando 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 reiniciar a VM.

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

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

O VM.Properties nessas solicitações deve conter o campo UserData desejado, 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 você passar uma cadeia de caracteres vazia para "userData" nesse caso, os dados do usuário serão excluídos.

Dados do utilizador e dados personalizados

Os dados personalizados continuam a funcionar da mesma forma que hoje. Observe que não é possível recuperar dados personalizados do IMDS.

Adicionando dados do usuário a uma VM existente

Se você tiver uma VM/VMSS existente sem dados do usuário, ainda poderá adicionar dados do usuário a essa VM usando os comandos de atualização, conforme descrito na seção "Atualizando os dados do usuário". Certifique-se de atualizar para a versão mais recente da API do Azure Resource Manger.

Próximos passos

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