Vorbereiten eines virtuellen Ubuntu-Computers für Azure
Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen
Ubuntu veröffentlicht jetzt offizielle virtuelle Azure-Festplatten (VHDs) zum Download auf der Webseite für Ubuntu Cloud Images. Wenn Sie Ihr eigenes spezielles Ubuntu-Image für Azure erstellen müssen, anstatt das nachfolgende manuelle Verfahren zu verwenden, beginnen Sie mit diesen bekannten funktionierenden VHDs, und passen Sie diese nach Bedarf an. Sie finden die neuesten Versionen des Images immer an folgenden Speicherorten:
- Ubuntu 18.04/Bionic: bionic-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 20.04/Focal: focal-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.zip
Voraussetzungen
In diesem Artikel wird davon ausgegangen, dass Sie bereits ein Ubuntu Linux-Betriebssystem auf einer virtuellen Festplatte (VHD) installiert haben. Zum Erstellen von VHD-Dateien stehen mehrere verschiedene Tools bereit. Ein Beispiel ist eine Virtualisierungslösung wie Hyper-V. Anweisungen hierzu finden Sie unter Installieren der Hyper-V-Rolle und Konfigurieren eines virtuellen Computers (VM).
Installationshinweise zu Ubuntu
- Weitere Tipps zur Vorbereitung von Linux für Azure finden Sie unter Allgemeine Installationshinweise für Linux.
- Das VHDX-Format wird in Azure nicht unterstützt, dafür jedoch virtuelle Festplatten mit fester Größe. Sie können den Datenträger mit dem Hyper-V-Manager oder dem
Convert-VHD
-Cmdlet in das VHD-Format konvertieren. - Beim Installieren des Linux-Systems wird empfohlen, anstelle von LVM (Logical Volume Manager, logische Volumeverwaltung) – bei vielen Installationen oftmals voreingestellt – die Standardpartitionen zu verwenden. Diese Standardpartitionen vermeiden, dass ein LVM-Namenskonflikt mit geklonten VMs auftritt, insbesondere dann, wenn ein BS-Datenträger zu Fehlerbehebungszwecken mit einer anderen VM verbunden wird. LVM oder RAID können ebenfalls auf Datenträgern verwendet werden.
- Konfigurieren Sie keine Auslagerungspartition oder Auslagerungsdatei auf einem Betriebssystemdatenträger. Sie können den
cloud-init
-Bereitstellungs-Agent so konfigurieren, dass eine Auslagerungsdatei oder Auslagerungspartition auf dem temporären Ressourcendatenträger erstellt wird. Weitere Informationen zu diesem Prozess finden Sie in den folgenden Schritten. - Alle VHDs in Azure benötigen eine virtuelle Größe, die auf 1 MB ausgerichtet ist. Stellen Sie beim Konvertieren von einem RAW-Datenträger in VHD sicher, dass die Größe des RAW-Datenträgers vor der Konvertierung ein Vielfaches von 1 MB beträgt. Weitere Informationen finden Sie in den Linux-Installationshinweisen.
Manuelle Schritte
Hinweis
Bevor Sie versuchen, Ihr eigenes benutzerdefiniertes Ubuntu-Image für Azure zu erstellen, sollten Sie stattdessen in Betracht ziehen, die vorgefertigten und getesteten Images von der Ubuntu Cloud Images-Webseite zu verwenden.
Wählen Sie die VM im mittleren Fensterbereich des Hyper-V-Managers.
Wählen Sie Verbinden aus, um das Fenster für die VM zu öffnen.
Ersetzen Sie die aktuellen Repositorys im Image, um die Azure-Repositorys von Ubuntu zu verwenden.
Bevor Sie
/etc/apt/sources.list
bearbeiten, empfehlen wir, dass Sie eine Sicherung erstellen:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo apt-get update
Die Ubuntu Azure-Images verwenden jetzt den für Azure angepassten Kernel. Aktualisieren Sie das Betriebssystem auf den neuesten, für Azure angepassten Kernel, und installieren Sie Azure Linux-Tools (einschließlich Hyper-V-Abhängigkeiten):
sudo apt update sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure sudo apt full-upgrade sudo reboot
Modifizieren Sie die Boot-Zeile des Kernels für GRUB, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie für diesen Schritt
/etc/default/grub
in einem Texteditor. Suchen Sie nach der VariablenGRUB_CMDLINE_LINUX_DEFAULT
(oder fügen Sie diese gegebenenfalls hinzu), und bearbeiten Sie sie, um die folgenden Parameter einzubinden:GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
Speichern und schließen Sie diese Datei. Führen Sie danach
sudo update-grub
aus. Durch diesen Schritt wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dies kann den technischen Support von Azure bei der Behebung von Fehlern unterstützen.Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist normalerweise die Standardeinstellung.
Installieren Sie
cloud-init
(den Bereitstellungs-Agent) und den Azure Linux-Agent (den Handler für Gasterweiterungen).Cloud-init
verwendetnetplan
zum Konfigurieren der Systemnetzwerkkonfiguration (während der Bereitstellung und jedem nachfolgenden Start) undgdisk
zum Partitionieren der Ressourcendatenträger.sudo apt update sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
Hinweis
Das Paket
walinuxagent
entfernt unter Umständen die PaketeNetworkManager
undNetworkManager-gnome
, falls sie installiert worden sind.Entfernen Sie Standardkonfigurationen von
cloud-init
und übrig gebliebenenetplan
-Artefakte, die mit dercloud-init
-Bereitstellung in Azure in Konflikt geraten können:sudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg sudo rm -f /etc/cloud/ds-identify.cfg sudo rm -f /etc/netplan/*.yaml
Konfigurieren Sie
cloud-init
, um das System mithilfe der Azure-Datenquelle bereitzustellen:cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg datasource_list: [ Azure ] EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg system_info: package_mirrors: - arches: [i386, amd64] failsafe: primary: http://archive.ubuntu.com/ubuntu security: http://security.ubuntu.com/ubuntu search: primary: - http://azure.archive.ubuntu.com/ubuntu/ security: [] - arches: [armhf, armel, default] failsafe: primary: http://ports.ubuntu.com/ubuntu-ports security: http://ports.ubuntu.com/ubuntu-ports EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg reporting: logging: type: log telemetry: type: hyperv EOF
Konfigurieren Sie den Azure Linux-Agent so, dass er die Bereitstellung mit
cloud-init
durchführt. Weitere Informationen zu diesen Optionen finden Sie im WALinuxAgent-Projekt.sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
cat <<EOF | sudo tee -a /etc/waagent.conf # For Azure Linux agent version >= 2.2.45, this is the option to configure, # enable, or disable the provisioning behavior of the Linux agent. # Accepted values are auto (default), waagent, cloud-init, or disabled. # A value of auto means that the agent will rely on cloud-init to handle # provisioning if it is installed and enabled, which in this case it will. Provisioning.Agent=auto EOF
Bereinigen Sie die Runtimeartefakte und Protokolle von
cloud-init
und Azure Linux-Agent:sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo systemctl stop walinuxagent.service sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log
Machen Sie die Bereitstellung der VM rückgängig, und bereiten Sie sie für die Bereitstellung in Azure vor.
Hinweis
Der Befehl
sudo waagent -force -deprovision+user
generalisiert das Image, indem versucht wird, das System zu bereinigen und es für die erneute Bereitstellung vorzubereiten. Die+user
-Option löscht das zuletzt bereitgestellte Benutzerkonto und die zugehörigen Daten.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history
Warnung
Die Aufhebung der Bereitstellung mit dem vorstehenden Befehl garantiert nicht, dass alle vertraulichen Informationen aus dem Image gelöscht werden und dass das Image für eine weitere Verteilung geeignet ist.
Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus.
Azure akzeptiert nur VHDs mit fester Größe. Wenn der Betriebssystem-Datenträger des virtuellen Computers keine VHD mit fester Größe ist, verwenden Sie das PowerShell-Cmdlet
Convert-VHD
, und geben Sie die Option-VHDType Fixed
an. Weitere Informationen erhalten Sie in den Dokumenten zuConvert-VHD
unter Convert-VHD.Führen Sie die folgenden Schritte aus, um eine VM der Generation 2 in Azure zu bringen:
Ändern Sie das Verzeichnis in das
boot EFI
-Verzeichnis:cd /boot/efi/EFI
Kopieren Sie das
ubuntu
-Verzeichnis in ein neues Verzeichnis namensboot
:sudo cp -r ubuntu/ boot
Ändern Sie das Verzeichnis in das neu erstellte Startverzeichnis:
cd boot
Benennen Sie die Datei
shimx64.efi
um:sudo mv shimx64.efi bootx64.efi
Benennen Sie die Datei
grub.cfg
inbootx64.cfg
um:sudo mv grub.cfg bootx64.cfg
Zugehöriger Inhalt
Sie können jetzt Ihre Ubuntu Linux-VHD verwenden, um neue VMs in Azure zu erstellen. Wenn Sie zum ersten Mal die VHD-Datei in Azure hochladen, lesen Sie den Artikel Erstellen eines virtuellen Linux-Computers aus einem benutzerdefinierten Datenträger mithilfe der Azure CLI 2.0.