Verwenden von cloud-init zum Aktualisieren und Installieren von Paketen auf einer Linux-VM in Azure
Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen
In diesem Artikel wird gezeigt, wie Sie cloud-init zum Aktualisieren von Paketen auf einem virtuellen Linux-Computer (VM) oder in VM-Skalierungsgruppen 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“.
Aktualisieren einer VM mit cloud-init
Aus Sicherheitsgründen sollten Sie eine VM so konfigurieren, dass die neuesten Updates beim ersten Systemstart angewendet werden. Da cloud-init in verschiedenen Linux-Distributionen funktioniert, müssen weder apt
noch zypper
noch yum
für den Paket-Manager angegeben werden. Stattdessen definieren Sie package_upgrade
und lassen die geeignete Methode für die verwendete Distribution vom cloud-init-Vorgang auswählen.
In diesem Beispiel verwenden Sie Azure Cloud Shell. Um den Upgradevorgang in Aktion zu sehen, erstellen Sie eine Datei namens cloud_init_upgrade.txt, und fügen Sie die folgende Konfiguration ein: Dazu können Sie einen beliebigen Editor verwenden. Stellen Sie sicher, dass die gesamte cloud-init-Datei ordnungsgemäß kopiert wird, insbesondere die erste Zeile.
Kopieren Sie den folgenden Text, und fügen Sie ihn in die Datei cloud_init_upgrade.txt
ein. Stellen Sie sicher, dass die gesamte cloud-init-Datei ordnungsgemäß kopiert wird, insbesondere die erste Zeile.
#cloud-config
package_upgrade: true
packages:
- httpd
Vor der Bereitstellung 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 dem Parameter --custom-data
die cloud-init-Datei an, wie im Folgenden gezeigt wird:
az vm create \
--resource-group myResourceGroup \
--name vmName \
--image imageCIURN \
--custom-data cloud_init_upgrade.txt \
--admin-username azureuser \
--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.
Stellen Sie eine SSH-Verbindung mit der öffentlichen IP-Adresse Ihrer VM her, die in der Ausgabe über den vorherigen Befehl gezeigt wird. Geben Sie Ihren eigenen user und Ihre eigene publicIpAddress wie folgt ein:
ssh <user>@<publicIpAddress>
Führen Sie das Paketverwaltungstool aus, und suchen Sie nach Updates:
- Führen Sie den folgenden Befehl aus, um sicherzustellen, dass keine Updates ausstehen.
sudo yum check-update
Da cloud-init beim Systemstart nach Updates gesucht und sie ggf. installiert hat, sollten keine zusätzlichen anzuwendenden Updates gefunden werden.
- Sie können den Updatevorgang, die Anzahl der geänderten Pakete sowie die Installation von
httpd
anzeigen, indem Sie den folgenden Befehl ausführen und dann die Ausgabe überprüfen.
sudo yum history
ID | Command line | Date and time | Action(s) | Altered
--------------------------------------------------------------------------------------------------
3 | -y install httpd | 2022-02-18 18:30 | Install | 7
2 | -y upgrade | 2022-02-18 18:23 | I, O, U | 321 EE
1 | | 2021-02-04 19:20 | Install | 496 EE
Nächste Schritte
Weitere cloud-init-Beispiele für Änderungen an der Konfiguration finden Sie in den folgenden Themen: