Share via


Anpassade data och cloud-init på Azure Virtual Machines

Varning

Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (End Of Life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.

Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar

Du kan behöva mata in ett skript eller andra metadata i en virtuell Microsoft Azure-dator (VM) vid etableringstillfället. I andra moln kallas det här begreppet ofta användardata. Microsoft Azure har en liknande funktion som kallas anpassade data.

Anpassade data görs tillgängliga för den virtuella datorn under den första starten eller installationen, vilket kallas etablering. Etablering är den process där parametrar för att skapa virtuella datorer (till exempel värdnamn, användarnamn, lösenord, certifikat, anpassade data och nycklar) görs tillgängliga för den virtuella datorn. En etableringsagent, till exempel Linux-agenten eller cloud-init, bearbetar dessa parametrar.

Skicka anpassade data till den virtuella datorn

Om du vill använda anpassade data måste du Base64-koda innehållet innan du skickar data till API:et – såvida du inte använder ett CLI-verktyg som utför konverteringen åt dig, till exempel Azure CLI. Storleken får inte överstiga 64 kB.

I CLI kan du skicka dina anpassade data som en fil, vilket visas i följande exempel. Filen konverteras till Base64.

az vm create \
  --resource-group myResourceGroup \
  --name centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

I Azure Resource Manager finns det en base64-funktion:

"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')]"
        },

Bearbeta anpassade data

Etableringsagenterna som är installerade på de virtuella datorerna hanterar kommunikationen med plattformen och placerar data i filsystemet.

Windows

Anpassade data placeras i %SYSTEMDRIVE%\AzureData\CustomData.bin som en binär fil, men de bearbetas inte. Om du vill bearbeta den här filen måste du skapa en anpassad avbildning och skriva kod för att bearbeta CustomData.bin.

Linux

I Linux-operativsystem skickas anpassade data till den virtuella datorn via filen ovf-env.xml . Filen kopieras till katalogen /var/lib/waagent under etableringen. Nyare versioner av Linux-agenten kopierar Base64-kodade data till /var/lib/waagent/CustomData för enkelhetens skull.

Azure stöder för närvarande två etableringsagenter:

  • Linux-agent. Agenten bearbetar som standard inte anpassade data. Du måste skapa en anpassad avbildning med data aktiverade. De relevanta inställningarna är:

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    När du aktiverar anpassade data och kör ett skript rapporterar den virtuella datorn inte en lyckad vm-etablering förrän skriptet har körts klart. Om skriptet överskrider den totala tidsgränsen för vm-etablering på 40 minuter misslyckas det att skapa virtuella datorer.

    Om skriptet inte kan köras, eller om fel inträffar under körningen, är det inte ett allvarligt etableringsfel. Du måste skapa en meddelandesökväg för att avisera dig om att skriptet har slutförts.

    Om du vill felsöka körning av anpassade data läser du /var/log/waagent.log.

  • cloud-init. Som standard bearbetar den här agenten anpassade data. Den accepterar flera format för anpassade data, till exempel cloud-init-konfiguration och skript.

    På samma sätt som Linux-agenten, om fel inträffar under körningen av konfigurationsbearbetningen eller skripten när cloud-init bearbetar anpassade data, är det inte ett allvarligt etableringsfel. Du måste skapa en meddelandesökväg för att avisera dig om att skriptet har slutförts.

    Men till skillnad från Linux-agenten väntar cloud-init inte på att anpassade datakonfigurationer från användaren ska slutföras innan de rapporterar till plattformen att den virtuella datorn är klar. Mer information om cloud-init i Azure, inklusive felsökning, finns i cloud-init-stöd för virtuella datorer i Azure.

Vanliga frågor

Kan jag uppdatera anpassade data när den virtuella datorn har skapats?

För enskilda virtuella datorer kan du inte uppdatera anpassade data i VM-modellen. Men för vm-skalningsuppsättningar kan du uppdatera anpassade data. Mer information finns i Ändra en skalningsuppsättning. När du uppdaterar anpassade data i modellen för en VM-skalningsuppsättning:

  • Befintliga instanser i skalningsuppsättningen hämtar inte uppdaterade anpassade data förrän de har uppdaterats till den senaste modellen och har återskapats.
  • Nya instanser tar emot nya anpassade data.

Kan jag placera känsliga värden i anpassade data?

Vi rekommenderar att du inte lagrar känsliga data i anpassade data. Mer information finns i Metodtips för Datasäkerhet och kryptering i Azure.

Görs anpassade data tillgängliga i IMDS?

Anpassade data är inte tillgängliga i Azure Instance Metadata Service (IMDS). Vi föreslår att du använder användardata i IMDS i stället. Mer information finns i Användardata via Azure Instance Metadata Service.