Verwenden von cloud-init zum Aktualisieren und Installieren von Paketen auf einer Linux-VM in Azure

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

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 apt, zypper oder yum für den Paket-Manager nicht 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 wir die 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: