Condividi tramite


Dati personalizzati e cloud-init in Macchine virtuali di Azure

Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili

Potrebbe essere necessario inserire uno script o altri metadati in una macchina virtuale Microsoft Azure in fase di provisioning. In altri cloud, questo concetto viene spesso indicato con il termine dati utente. In Microsoft Azure, è presente una funzionalità simile denominata dati personalizzati.

I dati personalizzati vengono resi disponibili alla macchina virtuale durante il primo avvio o durante la configurazione, denominata provisioning. Il provisioning è il processo in cui i parametri di creazione della macchina virtuale, ad esempio nome host, nome utente, password, certificati, dati personalizzati e chiavi, vengono resi disponibili alla macchina virtuale. Un agente di provisioning, ad esempio l'agente Linux o cloud-init, elabora tali parametri.

Passaggio dei dati personalizzati alla VM

Per usare i dati personalizzati, è necessario codificare il contenuto con Base64 prima di passare i dati all'API, a meno che non si stia usando uno strumento dell'interfaccia della riga di comando che esegue la conversione in automatico, ad esempio l'interfaccia della riga di comando di Azure. Le dimensioni del file non possono superare i 64 kB.

Nell'interfaccia della riga di comando è possibile passare i dati personalizzati come file, come illustrato nell'esempio seguente. Il file viene convertito in Base64.

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

In Azure Resource Manager è presente una funzione base64:

"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2019-07-01",
"location": "[parameters('location')]",
"dependsOn": [
..],
"variables": {
        "customDataBase64": "[base64(parameters('stringData'))]"
    },
"properties": {
..
    "osProfile": {
        "computerName": "[parameters('virtualMachineName')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "customData": "[variables('customDataBase64')]"
        },

Elaborare dati personalizzati

Gli agenti di provisioning installati nelle VM gestiscono la comunicazione con la piattaforma e inseriscono i dati nel file system.

Finestre

I dati personalizzati vengono inseriti in %SYSTEMDRIVE%\AzureData\CustomData.bin come file binario, ma non vengono elaborati. Per elaborare il file, è necessario compilare un'immagine personalizzata e scrivere codice per elaborare CustomData.bin.

Linux

Nei sistemi operativi Linux i dati personalizzati vengono passati alla macchina virtuale tramite il file ovf-env.xml. Questo file viene copiato nella directory /var/lib/waagent durante il provisioning. Le versioni più recenti dell'agente Linux copiano i dati con codifica Base64 in /var/lib/waagent/CustomData per praticità.

Azure supporta attualmente due agenti di provisioning:

  • Agente Linux. Per impostazione predefinita, l'agente non elabora i dati personalizzati. È necessario creare un'immagine personalizzata con i dati abilitati. Le impostazioni pertinenti sono:

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    Quando si abilitano dati personalizzati e si esegue uno script, la macchina virtuale non invierà un provisioning corretto della macchina virtuale fino al termine dell'esecuzione dello script. Se lo script supera il limite di tempo totale di provisioning della macchina virtuale di 40 minuti, la creazione della macchina virtuale avrà esito negativo.

    Se l'esecuzione dello script non riesce o si verificano errori durante l'esecuzione, questo non è un errore irreversibile di provisioning. È necessario creare un percorso di notifica per avvisare l'utente dello stato di completamento dello script.

    Per risolvere i problemi di esecuzione dei dati personalizzati, esaminare il file /var/log/waagent.log.

  • cloud-init. Per impostazione predefinita, questo agente elabora dati personalizzati. Accetta più formati di dati personalizzati, ad esempio la configurazione e gli script cloud-init.

    Analogamente all'agente Linux, se si verificano errori durante l'esecuzione dell'elaborazione della configurazione o degli script quando cloud-init elabora i dati personalizzati, questo non è un errore di provisioning irreversibile. È necessario creare un percorso di notifica per avvisare l'utente dello stato di completamento dello script.

    Tuttavia, a differenza dell'agente Linux, cloud-init non attende il completamento delle configurazioni dei dati personalizzati dell'utente prima di segnalare alla piattaforma che la macchina virtuale è pronta. Per altre informazioni su cloud-init, su Azure, inclusa la risoluzione dei problemi, vedere Supporto di cloud-init per macchine virtuali in Azure.

Domande frequenti

È possibile aggiornare i dati personalizzati dopo la creazione della macchina virtuale?

Per le singole macchine virtuali, non è possibile aggiornare i dati personalizzati nel modello di macchina virtuale. Tuttavia, per i set di scalabilità di macchine virtuali è possibile aggiornare i dati personalizzati. Per altre informazioni vedere Modificare un set di scalabilità. Quando si aggiornano dati personalizzati nel modello per un set di scalabilità di macchine virtuali:

  • Le istanze esistenti nel set di scalabilità non ottengono i dati personalizzati aggiornati finché non vengono aggiornate al modello più recente e finché non ne viene ricreata l'immagine.
  • Le nuove istanze ricevono i nuovi dati personalizzati.

È possibile inserire valori sensibili nei dati personalizzati?

Si consiglia di non archiviare dati sensibili nei dati personalizzati. Per altre informazioni, vedere Procedure consigliate per la sicurezza e la crittografia dei dati di Azure.

I dati personalizzati sono resi disponibili in IMDS?

I dati personalizzati non sono disponibili nel servizio metadati dell'istanza di Azure (IMDS). È consigliabile usare invece i dati utente in IMDS. Per altre informazioni, vedere Dati utente attraverso il servizio metadati dell'istanza di Azure.