Aangepaste gegevens en cloud-init op virtuele Azure-machines

Let op

In dit artikel wordt verwezen naar CentOS, een Linux-distributie die de status End Of Life (EOL) nadert. Houd rekening met uw gebruik en plan dienovereenkomstig. Zie de Richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Van toepassing op: ✔️ Virtuele Linux-machines voor Windows-VM's ✔️ ✔️ Flexibele schaalsets

Mogelijk moet u tijdens het inrichten een script of andere metagegevens invoeren in een virtuele Microsoft Azure-machine (VM). In andere clouds wordt dit concept vaak gebruikersgegevens genoemd. Microsoft Azure heeft een vergelijkbare functie met de naam aangepaste gegevens.

Aangepaste gegevens worden beschikbaar gesteld aan de VIRTUELE machine tijdens het eerste opstarten of instellen. Dit wordt inrichting genoemd. Inrichten is het proces waarbij parameters voor het maken van vm's (bijvoorbeeld hostnaam, gebruikersnaam, wachtwoord, certificaten, aangepaste gegevens en sleutels) beschikbaar worden gesteld aan de virtuele machine. Een inrichtingsagent, zoals de Linux-agent of cloud-init, verwerkt deze parameters.

Aangepaste gegevens doorgeven aan de virtuele machine

Als u aangepaste gegevens wilt gebruiken, moet u de inhoud met Base64 coderen voordat u de gegevens doorgeeft aan de API, tenzij u een CLI-hulpprogramma gebruikt dat de conversie voor u uitvoert, zoals de Azure CLI. De grootte mag niet groter zijn dan 64 kB.

In de CLI kunt u uw aangepaste gegevens doorgeven als een bestand, zoals in het volgende voorbeeld wordt weergegeven. Het bestand wordt geconverteerd naar Base64.

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

In Azure Resource Manager is er een base64-functie:

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

Aangepaste gegevens verwerken

De inrichtingsagents die op de VM's zijn geïnstalleerd, verwerken communicatie met het platform en plaatsen van gegevens op het bestandssysteem.

Windows

Aangepaste gegevens worden in %SYSTEMDRIVE%\AzureData\CustomData.bin geplaatst als een binair bestand, maar worden niet verwerkt. Als u dit bestand wilt verwerken, moet u een aangepaste installatiekopieën maken en code schrijven om CustomData.bin te verwerken.

Linux

Op Linux-besturingssystemen worden aangepaste gegevens via het ovf-env.xml-bestand doorgegeven aan de virtuele machine. Dat bestand wordt tijdens het inrichten gekopieerd naar de map /var/lib/waagent . Nieuwere versies van de Linux-agent kopiëren de met Base64 gecodeerde gegevens naar /var/lib/waagent/CustomData voor het gemak.

Azure ondersteunt momenteel twee inrichtingsagents:

  • Linux-agent. De agent verwerkt standaard geen aangepaste gegevens. U moet een aangepaste installatiekopieën maken waarvoor de gegevens zijn ingeschakeld. De relevante instellingen zijn:

    • Provisioning.DecodeCustomData
    • Provisioning.ExecuteCustomData

    Wanneer u aangepaste gegevens inschakelt en een script uitvoert, rapporteert de virtuele machine pas een geslaagde VM-inrichting nadat het script is uitgevoerd. Als het script de totale tijdslimiet voor vm-inrichting van 40 minuten overschrijdt, mislukt het maken van de VIRTUELE machine.

    Als het script niet kan worden uitgevoerd of er fouten optreden tijdens de uitvoering, is dat geen fatale inrichtingsfout. U moet een meldingspad maken om u te waarschuwen voor de voltooiingsstatus van het script.

    Raadpleeg /var/log/waagent.log om problemen met de uitvoering van aangepaste gegevens op te lossen.

  • cloud-init. Deze agent verwerkt standaard aangepaste gegevens. Het accepteert meerdere indelingen van aangepaste gegevens, zoals cloud-init-configuratie en scripts.

    Net als bij de Linux-agent, als er fouten optreden tijdens het uitvoeren van de configuratieverwerking of scripts wanneer cloud-init de aangepaste gegevens verwerkt, is dat geen fatale inrichtingsfout. U moet een meldingspad maken om u te waarschuwen voor de voltooiingsstatus van het script.

    In tegenstelling tot de Linux-agent wacht cloud-init echter niet tot aangepaste gegevensconfiguraties van de gebruiker zijn voltooid voordat ze rapporteren aan het platform dat de VIRTUELE machine gereed is. Zie cloud-init-ondersteuning voor virtuele machines in Azure voor meer informatie over cloud-init in Azure, waaronder probleemoplossing.

Veelgestelde vragen

Kan ik aangepaste gegevens bijwerken nadat de virtuele machine is gemaakt?

Voor enkele VM's kunt u geen aangepaste gegevens bijwerken in het VM-model. Maar voor virtuele-machineschaalsets kunt u aangepaste gegevens bijwerken. Zie Een schaalset wijzigen voor meer informatie. Wanneer u aangepaste gegevens in het model bijwerkt voor een virtuele-machineschaalset:

  • Bestaande exemplaren in de schaalset krijgen pas de bijgewerkte aangepaste gegevens als ze zijn bijgewerkt naar het laatste model en opnieuw worden geinstallatiekopie gemaakt.
  • Nieuwe exemplaren ontvangen de nieuwe aangepaste gegevens.

Kan ik gevoelige waarden in aangepaste gegevens plaatsen?

Het wordt aangeraden geen gevoelige gegevens op te slaan in aangepaste gegevens. Zie best practices voor azure-gegevensbeveiliging en -versleuteling voor meer informatie.

Zijn aangepaste gegevens beschikbaar in IMDS?

Aangepaste gegevens zijn niet beschikbaar in Azure Instance Metadata Service (IMDS). We raden u aan in plaats daarvan gebruikersgegevens te gebruiken in IMDS. Zie Gebruikersgegevens via Azure Instance Metadata Service voor meer informatie.