Freigeben über


Verwenden von cloud-init zum Ausführen von Bash-Skripts auf einer Linux-VM in Azure

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

In diesem Artikel wird gezeigt, wie Sie cloud-init zum Ausführen eines vorhandenen Bash-Skripts auf einem virtuellen Linux-Computer (VM) oder in VM-Skalierungsgruppen (VMSS) während der Bereitstellung in Azure verwenden. Diese cloud-init-Skripts werden beim erstmaligen Starten ausgeführt, nachdem die Ressourcen von Azure bereitgestellt wurden. Weitere Informationen zur nativen Funktionsweise von „cloud-init“ in Azure und zu den unterstützten Linux-Distributionen finden Sie in der Übersicht zu „cloud-init“.

Ausführen von Bash-Skripts mit cloud-init

Mit cloud-Init müssen Sie Ihre vorhandenen Skripts nicht in eine Cloudkonfiguration konvertieren, da cloud-init verschiedene Eingabetypen akzeptiert, zu denen auch Bash-Skripts gehören.

Wenn Sie die Azure-Erweiterung für benutzerdefinierte Linux-Skripts zum Ausführen Ihrer Skripts verwendet haben, können Sie diese mit cloud-init migrieren. Obwohl Azure-Erweiterungen Warnungen zu Skriptfehlern integriert haben, scheitert die Bereitstellung eines cloud-init-Images NICHT, wenn das Skript fehlerhaft ist.

Um diese Funktionalität in Aktion sehen zu können, erstellen Sie zu Testzwecken ein einfaches Bash-Skript. Wie die cloud-init-Datei #cloud-config muss auch dieses Skript lokal auf dem Computer gespeichert werden, auf dem Sie die Befehle der Azure-Befehlszeilenschnittstelle ausführen, um den virtuellen Computer bereitzustellen. Erstellen Sie für dieses Beispiel die Datei in der Cloud Shell, nicht auf dem lokalen Computer. Dazu können Sie einen beliebigen Editor verwenden. Stellen Sie sicher, dass die gesamte cloud-init-Datei ordnungsgemäß kopiert wird, insbesondere die erste Zeile.

#!/bin/sh
echo "this has been written via cloud-init" + $(date) >> /tmp/myScript.txt

Vor der Bereitstellung dieses Images müssen Sie mit dem Befehl az group create eine Ressourcengruppe erstellen. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort eastus.

az group create --name myResourceGroup --location eastus

Erstellen Sie nun mit dem Befehl az vm create eine VM, und geben Sie mit --custom-data simple_bash.sh die Bash-Skriptdatei wie folgt an:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data simple_bash.sh \
  --generate-ssh-keys

Hinweis

Ersetzen Sie die Werte myResourceGroup, vmName und imageCIURN entsprechend. Stellen Sie sicher, dass ein Image mit Cloud-init ausgewählt ist.

Überprüfen, ob das Bash-Skript ausgeführt wurde

Stellen Sie eine SSH-Verbindung mit der öffentlichen IP-Adresse Ihrer VM her, die aus der Ausgabe des vorherigen Befehls hervorgeht. Geben Sie Ihren eigenen user und Ihre eigene publicIpAddress wie folgt ein:

ssh <user>@<publicIpAddress>

Vergewissern Sie sich, dass die /tmp/myScript.txt-Datei vorhanden und der entsprechende Text darin enthalten ist.

sudo cat /tmp/myScript

Falls nicht, können Sie /var/log/cloud-init.log auf weitere Details überprüfen. Suchen Sie nach dem folgenden Eintrag:

sudo cat /var/log/cloud-init.log
Running config-scripts-user using lock Running command ['/var/lib/cloud/instance/scripts/part-001']

Nächste Schritte

Weitere cloud-init-Beispiele für Änderungen an der Konfiguration finden Sie in den folgenden Themen: