Freigeben über


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:

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 hierfür 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.

  1. Wählen Sie die VM im mittleren Fensterbereich des Hyper-V-Managers.

  2. Wählen Sie Verbinden aus, um das Fenster für die VM zu öffnen.

  3. 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
    
  4. 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
    
  5. 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 Variablen GRUB_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"
    
  6. 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.

  7. Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist normalerweise die Standardeinstellung.

  8. Installieren Sie cloud-init (den Bereitstellungs-Agent) und den Azure Linux-Agent (den Handler für Gasterweiterungen). Cloud-init verwendet netplan zum Konfigurieren der Systemnetzwerkkonfiguration (während der Bereitstellung und jedem nachfolgenden Start) und gdisk 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 Pakete NetworkManager und NetworkManager-gnome, falls sie installiert worden sind.

  9. Entfernen Sie Standardkonfigurationen von cloud-init und übrig gebliebene netplan-Artefakte, die mit der cloud-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
    
  10. 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
    
  11. 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
    
  12. 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
    
  13. 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.

  14. Wählen Sie im Hyper-V-Manager Aktion>Herunterfahren aus.

  15. 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 zu Convert-VHD unter Convert-VHD.

  16. Führen Sie die folgenden Schritte aus, um eine VM der Generation 2 in Azure zu bringen:

    1. Ändern Sie das Verzeichnis in das boot EFI-Verzeichnis:

      cd /boot/efi/EFI
      
    2. Kopieren Sie das ubuntu-Verzeichnis in ein neues Verzeichnis namens boot:

      sudo cp -r ubuntu/ boot
      
    3. Ändern Sie das Verzeichnis in das neu erstellte Startverzeichnis:

      cd boot
      
    4. Benennen Sie die Datei shimx64.efi um:

      sudo mv shimx64.efi bootx64.efi
      
    5. Benennen Sie die Datei grub.cfg in bootx64.cfg um:

      sudo mv grub.cfg bootx64.cfg
      

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.