Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen
Möglicherweise müssen Sie zum Zeitpunkt der Bereitstellung ein Skript oder andere Metadaten in einen virtuellen Microsoft Azure-Computer (VM) einfügen. Azure unterstützt dieses Szenario über ein Feature, das als benutzerdefinierte Daten bezeichnet wird.
Benutzerdefinierte Daten werden dem virtuellen Computer während des ersten Starts oder der Einrichtung zur Verfügung gestellt, was als Bereitstellung bezeichnet wird. Bei der Bereitstellung werden VM-Erstellungsparameter (z. B. Hostname, Benutzername, Kennwort, Zertifikate, benutzerdefinierte Daten und Schlüssel) für den virtuellen Computer zur Verfügung gestellt. Ein Bereitstellungs-Agent, z. B. der Cloud-Init, verarbeitet diese Parameter.
Note
Azure bietet auch ein separates Benutzerdatenfeature. Im Gegensatz zu benutzerdefinierten Daten können Benutzerdaten aus dem Azure Instanzmetadatendienst (IMDS) abgerufen werden, ist für die Lebensdauer des virtuellen Computers persistent und kann aktualisiert werden, ohne den virtuellen Computer zu beenden oder neu zu erstellen. Verwenden Sie Benutzerdaten, wenn Sie nach der Bereitstellung zugriff oder Updates benötigen; Verwenden Sie benutzerdefinierte Daten, wenn Sie beim ersten Start eine vom Bereitstellungs-Agent verarbeitete Nutzlast benötigen.
Übergeben von benutzerdefinierten Daten an die VM
Wenn Sie benutzerdefinierte Daten verwenden möchten, müssen Sie die Inhalte mit Base64 codieren, bevor Sie die Daten an die API übergeben. Dies gilt jedoch nicht, wenn Sie ein CLI-Tool verwenden, das diese Konvertierung durchführt, z. B. die Azure-Befehlszeilenschnittstelle. Die Dateigröße darf 64 KB nicht überschreiten.
In der CLI können Sie Ihre benutzerdefinierten Daten wie im folgenden Beispiel gezeigt als Datei übergeben. Die Datei wird in Base64 konvertiert.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--custom-data cloud-init.txt \
--generate-ssh-keys
In Azure Resource Manager gibt es eine 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')]"
},
Verarbeiten benutzerdefinierter Daten
Die auf den virtuellen Computern installierten Bereitstellungs-Agents verarbeiten die Kommunikation mit der Plattform und das Platzieren der Daten im Dateisystem.
Windows
Benutzerdefinierte Daten werden in %SystemDrive%\AzureData\CustomData.bin als Binärdatei platziert, werden jedoch nicht verarbeitet. Um diese Datei zu verarbeiten, erstellen Sie ein benutzerdefiniertes Bild, und schreiben Sie Code, der CustomData.bin liest.
Der ordner "%SystemDrive%\AzureData " wird während der Bereitstellung gesichert, sodass nur NT AUTHORITY\SYSTEM und BUILTIN\Administrators vollzugriff haben und CustomData.bin diese Berechtigungen erbt. Wenn Sie CustomData.bin an anderer Stelle zur Verarbeitung kopieren, legen Sie berechtigungen für das Ziel explizit fest, da ihre Berechtigungen nicht mit der Datei übertragen werden.
Linux
Unter Linux-Betriebssystemen werden benutzerdefinierte Daten über die Datei ovf-env.xml an den virtuellen Computer übergeben. Diese Datei wird während der Bereitstellung in das Verzeichnis /var/lib/waagent kopiert. Neuere Versionen des Linux-Agents kopieren die Base64-codierten Daten zur Vereinfachung in /var/lib/waagent/CustomData.
Azure unterstützt derzeit zwei Bereitstellungs-Agents:
Linux-Agent. Standardmäßig verarbeitet der Agent keine benutzerdefinierten Daten. Sie müssen ein benutzerdefiniertes Abbild erstellen, bei dem die Daten aktiviert sind. Die relevanten Einstellungen sind:
Provisioning.DecodeCustomDataProvisioning.ExecuteCustomData
Wenn Sie benutzerdefinierte Daten aktivieren und ein Skript ausführen, meldet der virtuelle Computer erst dann eine erfolgreiche VM-Bereitstellung, wenn die Ausführung des Skripts abgeschlossen ist. Wenn das Skript die VM-Bereitstellungsdauer von 40 Minuten überschreitet, tritt beim Erstellen des virtuellen Computers ein Fehler auf.
Wenn das Skript nicht ausgeführt werden kann oder während der Ausführung Fehler auftreten, ist dies kein schwerwiegender Bereitstellungsfehler. Sie müssen einen Benachrichtigungspfad erstellen, damit Sie hinsichtlich des Abschlusszustands des Skripts gewarnt werden.
Zur Problembehandlung bei der Ausführung benutzerdefinierter Daten überprüfen Sie /var/log/waagent.log.
cloud-init. Standardmäßig verarbeitet dieser Agent benutzerdefinierte Daten. Er akzeptiert mehrere Formate von benutzerdefinierten Daten, z. B. die cloud-init-Konfiguration und Skripts.
Ähnlich wie beim Linux-Agent ist dies kein schwerwiegender Bereitstellungsfehler, wenn während der Ausführung der Konfigurationsverarbeitung oder von Skripts Fehler auftreten, wenn cloud-init die benutzerdefinierten Daten verarbeitet. Sie müssen einen Benachrichtigungspfad erstellen, damit Sie hinsichtlich des Abschlusszustands des Skripts gewarnt werden.
Im Gegensatz zum Linux-Agent wartet cloud-init jedoch nicht, bis benutzerdefinierte Datenkonfigurationen vom Benutzer abgeschlossen sind, bevor die Meldung an die Plattform erfolgt, dass der virtuelle Computer bereit ist. Weitere Informationen zu cloud-init in Azure, einschließlich der Problembehandlung, finden Sie unter cloud-init-Unterstützung für virtuelle Computer in Azure.
Häufig gestellte Fragen
Kann ich benutzerdefinierte Daten nach dem Erstellen der VM aktualisieren?
Bei einzelnen virtuellen Computern können Sie die benutzerdefinierten Daten im VM-Modell nicht aktualisieren. Für Virtual Machine Scale Sets können Sie jedoch benutzerdefinierte Daten aktualisieren. Weitere Informationen finden Sie unter Ändern einer Skalierungsgruppe. Wenn Sie benutzerdefinierte Daten im Modell für eine VM-Skalierungsgruppe aktualisieren:
- Vorhandene Instanzen im Skalierungsset erhalten die aktualisierten benutzerdefinierten Daten erst, wenn sie auf das neueste Modell aktualisiert und neu erstellt werden.
- Neue Instanzen erhalten die neuen benutzerdefinierten Daten.
Kann ich vertrauliche Werte in benutzerdefinierte Daten einschließen?
Es wird empfohlen, vertrauliche Daten nicht in benutzerdefinierten Daten zu speichern. Weitere Informationen finden Sie unter Bewährte Methoden für die Datensicherheit und Verschlüsselung in Azure.
Werden benutzerdefinierte Daten in IMDS zur Verfügung gestellt?
No. Benutzerdefinierte Daten werden nicht über den Azure Instanzmetadatendienst (IMDS) angezeigt. Wenn Sie nach der Bereitstellung eine Nutzlast aus dem virtuellen Computer abrufen oder aktualisieren müssen, ohne den virtuellen Computer zu beenden oder neu zu erstellen, verwenden Sie stattdessen das Benutzerdatenfeature . Ausführliche Informationen zum Lesen von Benutzerdaten aus IMDS finden Sie unter Abrufen von Benutzerdaten.