Vorbereiten eines auf Red Hat basierenden virtuellen Computers für Azure

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

In diesem Artikel erfahren Sie, wie Sie einen auf Red Hat Enterprise Linux (RHEL) basierenden virtuellen Computer für die Verwendung in Azure vorbereiten. In diesem Artikel werden die RHEL-Versionen 6.x, 7.x und 8.x behandelt. Darüber hinaus werden in diesem Artikel die Hypervisoren Hyper-V, KVM und VMware für die Vorbereitung vorgestellt. Weitere Informationen zu den Berechtigungsvoraussetzungen für die Teilnahme am Cloud Access-Programm von Red Hat finden Sie auf der Red Hat Cloud Access-Website und unter Running RHEL on Azure (Ausführen von RHEL in Azure). Weitere Informationen zu den Möglichkeiten zum Automatisieren der Erstellung von RHEL-Images finden Sie unter Azure Image Builder.

Hinweis

Achten Sie auf Versionen, die End of Life (EOL) sind und von Red Hat nicht mehr unterstützt werden. Hochgeladene Images, die das EOL-Datum erreicht oder überschritten haben, werden mit einem angemessenen geschäftlichen Aufwand unterstützt. Link zum Produktlebenszyklus von Red Hat

Hyper-V-Manager

In diesem Abschnitt erfahren Sie, wie Sie mit dem Hyper-V-Manager eine RHEL 6-, RHEL 7- oder RHEL 8-VM vorbereiten.

Voraussetzungen

In diesem Abschnitt wird davon ausgegangen, dass Sie bereits eine ISO-Datei von der Red Hat-Website beschafft und das RHEL-Image auf einer virtuellen Festplatte (VHD) installiert haben. Weitere Informationen zum Installieren eines Betriebssystemimage mit dem Hyper-V-Manager finden Sie unter Installieren der Hyper-V-Rolle und Konfigurieren eines virtuellen Computers.

Installationshinweise zu RHEL

  • Das VHDX-Format wird von Azure nicht unterstützt. Azure unterstützt nur feste virtuelle Festplatten. Sie können Hyper-V Manager verwenden, um den Datenträger in das VHD-Format zu konvertieren, oder Sie können das convert-vhd-Cmdlet verwenden. Wählen Sie bei Verwendung von VirtualBox die Option Feste Größe und nicht die standardmäßig dynamisch zugeordnete Option, wenn Sie den Datenträger erstellen.

  • Azure unterstützt die virtuellen Computer Gen1 (BIOS-Start) und Gen2 (UEFI-Start).

  • Die maximal zulässige Größe für die virtuelle Festplatte beträgt 1.023 GB.

  • Das vfat-Kernelmodul muss im Kernel aktiviert sein.

  • Logical Volume Manager (LVM) wird unterstützt und kann auf dem Betriebssystemdatenträger oder den Datenträgern mit Daten auf virtuellen Azure-Computern verwendet werden. Im Allgemeinen wird jedoch empfohlen, anstelle von LVM Standardpartitionen auf dem Betriebssystemdatenträger zu verwenden. Bei diesem Verfahren werden LVM-Namenskonflikte mit geklonten virtuellen Computern verhindert. Dies gilt besonders, falls Sie einen Betriebssystem-Datenträger zur Problembehandlung mit einem anderen virtuellen Computer verbinden müssen, der identisch ist. Lesen Sie die Informationen in der Dokumentation zu LVM und RAID.

  • Kernelunterstützung für die Bereitstellung von UDF-Dateisystemen (Universal Disk Format) ist erforderlich. Beim ersten Starten unter Azure übergibt das Medium mit UDF-Formatierung, das an den Gast angefügt ist, die Bereitstellungskonfiguration an den virtuellen Linux-Computer. Der Azure-Linux-Agent muss das UDF-Dateisystem einbinden können, um dessen Konfiguration zu lesen und den virtuellen Computer bereitzustellen. Andernfalls schlägt die Bereitstellung fehl.

  • Konfigurieren Sie auf dem Betriebssystemdatenträger keine Swap-Partition. Weitere Informationen hierzu finden Sie unter den folgenden Schritten.

  • Alle VHDs in Azure benötigen eine virtuelle Größe, die auf 1 MB ausgerichtet ist. Beim Konvertieren von einem unformatierten Datenträger in VHD müssen Sie sicherstellen, dass die Größe des unformatierten Datenträgers ein Vielfaches von 1 MB vor der Konvertierung beträgt. Einzelheiten erfahren Sie im folgenden Schritt. Weitere Informationen finden Sie auch in den Linux-Installationshinweisen.

Hinweis

cloud-init >= 21.2 setzt die UDF-Anforderung außer Kraft. Ohne aktiviertes UDF-Modul wird das CD-ROM-Laufwerk während der Bereitstellung jedoch nicht eingebunden, sodass von dort keine benutzerdefinierten Daten angewandt werden können. Eine Problemumgehung hierfür besteht darin, benutzerdefinierte Daten mithilfe von Benutzerdaten anzuwenden. Im Gegensatz zu benutzerdefinierten Daten werden Benutzerdaten jedoch nicht verschlüsselt. https://cloudinit.readthedocs.io/en/latest/topics/format.html

RHEL 6 mit dem Hyper-V-Manager

Wichtig

Am 30. November 2020 ist die Wartungsphase für Red Hat Enterprise Linux 6 beendet. Danach folgt eine Phase des erweiterten Lebenszyklus. Da die Phasen der vollständigen Unterstützung und Wartung für Red Hat Enterprise Linux 6 enden, wird dringend empfohlen, ein Upgrade auf Red Hat Enterprise Linux 7, 8 oder 9 durchzuführen. Wenn Kund*innen weiterhin Red Hat Enterprise Linux 6 verwenden müssen, empfiehlt es sich, das Add-On zur erweiterten Lebenszyklusunterstützung (Extended Life Cycle Support, ELS) für Red Hat Enterprise Linux hinzuzufügen.

  1. Wählen Sie im Hyper-V-Manager den virtuellen Computer aus.

  2. Klicken Sie auf Verbinden , um ein Konsolenfenster für den virtuellen Computer zu öffnen.

  3. In RHEL 6 kann NetworkManager zu Einschränkungen beim Azure Linux-Agent führen. Deinstallieren Sie dieses Paket, indem Sie den folgenden Befehl ausführen:

    sudo rpm -e --nodeps NetworkManager
    
  4. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Verschieben (oder entfernen) Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers unter Microsoft Azure oder Hyper-V zu Problemen führen:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    

Hinweis

** Bei Verwendung von beschleunigtem Netzwerkbetrieb (Accelerated Networking, AN) muss die synthetische Schnittstelle, die erstellt wird, so konfiguriert werden, dass sie nicht mithilfe einer udev-Regel verwaltet wird. Dadurch wird verhindert, dass NetworkManager ihm dieselbe IP-Adresse wie der primären Schnittstelle zuweist.

Anwendung:

sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
# Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
# This interface is transparentlybonded to the synthetic interface,
# so NetworkManager should just ignore any SRIOV interfaces.
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
EOF
  1. Stellen Sie sicher, dass der Netzwerkdienst beim Booten startet, indem Sie den folgenden Befehl ausführen:

    sudo chkconfig network on
    
  2. Registrieren Sie mit dem folgenden Befehl das Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Das WALinuxAgent-Paket WALinuxAgent-<version> wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Änderung /boot/grub/menu.lst in einem Text-Editor, und stellen Sie sicher, dass der Standardkernel die folgenden Parameter enthält:

    console=ttyS0 earlyprintk=ttyS0
    

    Dadurch wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dieser kann Azure bei der Behebung von Fehlern unterstützen.

    Außerdem wird empfohlen, die folgenden Parameter zu entfernen:

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Beachten Sie, dass der verfügbare Arbeitsspeicher des virtuellen Computers mit diesem Parameter um mindestens 128 MB reduziert wird. Diese Konfiguration kann für kleinere virtuelle Computer problematisch sein.

  5. Stellen Sie sicher, dass der SSH-Server (Secure Shell) installiert und für das Starten während des Startvorgangs konfiguriert ist. Dies ist normalerweise die Standardeinstellung. Ändern Sie die Datei „/etc/ssh/sshd_config“, sodass sie die folgende Zeile enthält:

    ClientAliveInterval 180
    
  6. Installieren Sie den Azure Linux-Agent, indem Sie den folgenden Befehl ausführen:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    

    Durch eine Installation des WALinuxAgent-Pakets werden die NetworkManager- und NetworkManager-gnome-Pakete entfernt, sofern sie nicht bereits in Schritt 3 entfernt wurden.

  7. Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.

    Der Azure Linux-Agent kann den Auslagerungsbereich automatisch mit dem lokalen Ressourcendatenträger konfigurieren, der nach der Bereitstellung des virtuellen Computers in Azure mit dem virtuellen Computer verknüpft ist. Beachten Sie, dass der lokale Ressourcendatenträger ein temporärer Datenträger ist und geleert werden kann, wenn die Bereitstellung des virtuellen Computers aufgehoben wird. Ändern Sie nach dem Installieren des Azure Linux-Agents im vorherigen Schritt entsprechend die folgenden Parameter in „/etc/waagent.conf“:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set this to whatever you need it to be.
    
  8. Heben Sie das Abonnement (falls erforderlich) auf, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager unregister
    
  9. Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

Hinweis

Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung.

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
  1. Klicken Sie im Hyper-V-Manager auf Aktion>Herunterfahren. Ihre Linux-VHD kann nun in Azure hochgeladen werden.

RHEL 7 mit dem Hyper-V-Manager

  1. Wählen Sie im Hyper-V-Manager den virtuellen Computer aus.

  2. Klicken Sie auf Verbinden , um ein Konsolenfenster für den virtuellen Computer zu öffnen.

  3. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  5. Stellen Sie sicher, dass der Netzwerkdienst beim Booten startet, indem Sie den folgenden Befehl ausführen:

    sudo systemctl enable network
    
  6. Registrieren Sie mit dem folgenden Befehl das Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Änderung /etc/default/grub in einem Text-Editor, und bearbeiten Sie den GRUB_CMDLINE_LINUX-Parameter. Beispiel:

    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0"
    GRUB_TERMINAL_OUTPUT="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    

    Dadurch wird außerdem sichergestellt, dass alle Konsolennachrichten an den ersten seriellen Anschluss gesendet werden, und die Interaktion mit der seriellen Konsole ermöglicht, was den Azure Support bei Debugproblemen unterstützen kann. Außerdem werden bei dieser Konfiguration die neuen RHEL 7-Benennungskonventionen für Netzwerkkarten deaktiviert.

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Beachten Sie, dass die Menge an verfügbarem Arbeitsspeicher auf dem virtuellen Computer mit diesem Parameter um mindestens 128 MB reduziert wird. Dies kann bei kleineren virtuellen Computern problematisch sein.

  8. Nachdem Sie die Bearbeitung von /etc/default/grub abgeschlossen haben, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Hinweis

    Beim Hochladen einer UEFI-fähigen VM lautet der Befehl zum Upgraden von GRUB grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Stellen Sie sicher, dass der SSH-Server installiert und so konfiguriert ist, dass er beim Booten hochfährt. Ergänzen Sie /etc/ssh/sshd_config um die folgende Zeile:

    ClientAliveInterval 180
    
  10. Das WALinuxAgent-Paket WALinuxAgent-<version> wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Installieren Sie den Azure Linux Agent, cloud-init und andere notwendige Hilfsprogramme, indem Sie den folgenden Befehl ausführen:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  12. Konfigurieren von cloud-init zum Behandeln der Bereitstellung:

    1. Konfigurieren von waagent für cloud-init:
    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/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
    

    Hinweis

    Wenn Sie einen bestimmten virtuellen Computer migrieren, anstatt ein generalisiertes Image zu erstellen, legen Sie in der /etc/waagent.conf-Konfigurationsdatei Provisioning.Agent=disabled fest.

    1. Konfigurieren der Einbindungen:
    sudo echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    1. Konfigurieren der Azure-Datenquelle:
    sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    1. Falls sie konfiguriert ist, entfernen Sie die vorhandene Auslagerungsdatei:
    if [[ -f /mnt/resource/swapfile ]]; then
    echo "Removing swapfile" #RHEL uses a swapfile by default
    swapoff /mnt/resource/swapfile
    rm /mnt/resource/swapfile -f
    fi
    
    1. Konfigurieren der cloud-init-Protokollierung:
    sudo echo "Add console log file"
    sudo cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
    
  13. Auslagerungskonfiguration. Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.

    Früher wurde der Azure Linux-Agent zum automatischen Konfigurieren des Auslagerungsbereichs mit dem lokalen Ressourcendatenträger verwendet, der nach der Bereitstellung der VM in Azure an die VM angefügt ist. Dies wird jetzt von cloud-init verarbeitet. Der Linux-Agent darf nicht zum Formatieren des Ressourcendatenträgers und Erstellen der Auslagerungsdatei verwendet werden. Ändern Sie die folgenden Parameter in /etc/waagent.conf entsprechend:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Beim Einbinden, Formatieren und Erstellen einer Auslagerungspartition können Sie eine der folgenden Aktionen ausführen:

    • Übergeben Sie dies bei jeder VM-Erstellung über customdata als cloud-init-Konfiguration. Dies ist die empfohlene Methode.

    • Verwenden Sie eine im Image integrierte cloud-init-Anweisung, die dies bei jeder VM-Erstellung durchführt.

      sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
      sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
      #cloud-config
      # Generated by Azure cloud image build
      disk_setup:
        ephemeral0:
          table_type: mbr
          layout: [66, [33, 82]]
          overwrite: True
      fs_setup:
        - device: ephemeral0.1
          filesystem: ext4
        - device: ephemeral0.2
          filesystem: swap
      mounts:
        - ["ephemeral0.1", "/mnt/resource"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
      EOF
      
  14. Wenn Sie die Registrierung des Abonnements aufheben möchten, führen Sie den folgenden Befehl aus:

    sudo subscription-manager unregister
    
  15. Aufheben der Bereitstellung

    Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

    Achtung

    Wenn Sie einen bestimmten virtuellen Computer migrieren, anstatt ein generalisiertes Image zu erstellen, überspringen Sie den Schritt zum Aufheben der Bereitstellung. Durch das Ausführen des Befehls waagent -force -deprovision+user wird der Quellcomputer unbrauchbar. Dieser Schritt ist nur für das Erstellen von generalisierten Images vorgesehen.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  16. Klicken Sie im Hyper-V-Manager auf Aktion>Herunterfahren. Ihre Linux-VHD kann nun in Azure hochgeladen werden.

RHEL 8 mit dem Hyper-V-Manager

  1. Wählen Sie im Hyper-V-Manager den virtuellen Computer aus.

  2. Klicken Sie auf Verbinden , um ein Konsolenfenster für den virtuellen Computer zu öffnen.

  3. Stellen Sie sicher, dass der Netzwerk-Managerdienst beim Booten startet, indem Sie den folgenden Befehl ausführen:

    sudo systemctl enable NetworkManager.service
    
  4. Konfigurieren Sie die Netzwerkschnittstelle so, dass sie beim Systemstart automatisch gestartet wird und DHCP verwendet:

    sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
    
  5. Registrieren Sie mit dem folgenden Befehl das Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  6. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer GRUB-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden und die serielle Konsole zu aktivieren.

    1. Entfernen der aktuellen GRUB-Parameter:
    sudo grub2-editenv - unset kernelopts
    
    1. Bearbeiten Sie /etc/default/grub in einem Text-Editor, und fügen Sie die folgenden Parameter hinzu:
    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0"
    GRUB_TERMINAL_OUTPUT="serial console"
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    

    Dadurch wird außerdem sichergestellt, dass alle Konsolennachrichten an den ersten seriellen Anschluss gesendet werden, und die Interaktion mit der seriellen Konsole ermöglicht, was den Azure Support bei Debugproblemen unterstützen kann. Außerdem werden bei dieser Konfiguration die neuen Benennungskonventionen für NICs deaktiviert.

    1. Außerdem empfehlen wir, die folgenden Parameter zu entfernen:
    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Beachten Sie, dass die Menge an verfügbarem Arbeitsspeicher auf dem virtuellen Computer mit diesem Parameter um mindestens 128 MB reduziert wird. Dies kann bei kleineren virtuellen Computern problematisch sein.

  7. Nachdem Sie die Bearbeitung von /etc/default/grubabgeschlossen haben, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Führen Sie für eine UEFI-fähige VM den folgenden Befehl aus:

    sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  8. Stellen Sie sicher, dass der SSH-Server installiert und so konfiguriert ist, dass er beim Booten hochfährt. Ergänzen Sie /etc/ssh/sshd_config um die folgende Zeile:

    ClientAliveInterval 180
    
  9. Installieren Sie den Azure Linux Agent, cloud-init und andere notwendige Hilfsprogramme, indem Sie den folgenden Befehl ausführen:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  10. Konfigurieren von cloud-init zum Behandeln der Bereitstellung:

    1. Konfigurieren von waagent für cloud-init:
    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/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
    

    Hinweis

    Wenn Sie eine bestimmte VM migrieren, anstatt ein generalisiertes Image zu erstellen, legen Sie Provisioning.Agent=disabled in der Konfigurationsdatei /etc/waagent.conf fest.

    1. Konfigurieren der Einbindungen:
    sudo echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    1. Konfigurieren der Azure-Datenquelle:
    sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    1. Falls sie konfiguriert ist, entfernen Sie die vorhandene Auslagerungsdatei:
    if [[ -f /mnt/resource/swapfile ]]; then
    echo "Removing swapfile" #RHEL uses a swapfile by defaul
    swapoff /mnt/resource/swapfile
    rm /mnt/resource/swapfile -f
    fi
    
    1. Konfigurieren der cloud-init-Protokollierung:
    sudo echo "Add console log file"
    sudo cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
  11. Auslagerungskonfiguration: Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.

    Früher wurde der Azure Linux-Agent zum automatischen Konfigurieren des Auslagerungsbereichs mit dem lokalen Ressourcendatenträger verwendet, der nach der Bereitstellung der VM in Azure an die VM angefügt ist. Dies wird jetzt von cloud-init verarbeitet. Der Linux-Agent darf nicht zum Formatieren des Ressourcendatenträgers und Erstellen der Auslagerungsdatei verwendet werden. Ändern Sie die folgenden Parameter in /etc/waagent.conf entsprechend:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    
    • Übergeben Sie dies bei jeder VM-Erstellung über customdata als cloud-init-Konfiguration. Dies ist die empfohlene Methode.

    • Verwenden Sie eine im Image integrierte cloud-init-Anweisung, die dies bei jeder VM-Erstellung durchführt.

      sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
      sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
      #cloud-config
      # Generated by Azure cloud image build
      disk_setup:
        ephemeral0:
          table_type: mbr
          layout: [66, [33, 82]]
          overwrite: True
      fs_setup:
        - device: ephemeral0.1
          filesystem: ext4
        - device: ephemeral0.2
          filesystem: swap
      mounts:
        - ["ephemeral0.1", "/mnt/resource"]
        - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"]
      EOF
      
  12. Wenn Sie die Registrierung des Abonnements aufheben möchten, führen Sie den folgenden Befehl aus:

    sudo subscription-manager unregister
    
  13. Aufheben der Bereitstellung

    Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo sudo rm -f /var/log/waagent.log
    sudo export HISTSIZE=0
    

    Achtung

    Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung. Durch das Ausführen des Befehls waagent -force -deprovision+user wird der Quellcomputer unbrauchbar. Dieser Schritt ist nur für das Erstellen von generalisierten Images vorgesehen.

  14. Klicken Sie im Hyper-V-Manager auf Aktion>Herunterfahren. Ihre Linux-VHD kann nun in Azure hochgeladen werden.

KVM

In diesem Abschnitt erfahren Sie, wie Sie mit KVM eine RHEL 6- oder RHEL 7-Distribution für den Upload in Azure vorbereiten.

RHEL 6 mit KVM

Wichtig

Am 30. November 2020 ist die Wartungsphase für Red Hat Enterprise Linux 6 beendet. Danach folgt eine Phase des erweiterten Lebenszyklus. Da die Phasen der vollständigen Unterstützung und Wartung für Red Hat Enterprise Linux 6 enden, wird dringend empfohlen, ein Upgrade auf Red Hat Enterprise Linux 7, 8 oder 9 durchzuführen. Wenn Kund*innen weiterhin Red Hat Enterprise Linux 6 verwenden müssen, empfiehlt es sich, das Add-On zur erweiterten Lebenszyklusunterstützung (Extended Life Cycle Support, ELS) für Red Hat Enterprise Linux hinzuzufügen.

  1. Laden Sie das KVM-Image von RHEL 6 von der Red Hat-Website herunter.

  2. Legen Sie ein Stammkennwort fest.

    Generieren Sie ein verschlüsseltes Kennwort, und kopieren Sie die Ausgabe des Befehls:

    sudo openssl passwd -1 changeme
    

    Legen Sie ein Stammkennwort mit Guestfish fest:

    sudo guestfish --rw -a <image-name>
    > <fs> run
    > <fs> list-filesystems
    > <fs> mount /dev/sda1 /
    > <fs> vi /etc/shadow
    > <fs> exit
    

    Ändern Sie das zweite Feld des Stammbenutzers von „!!“ in das verschlüsselte Kennwort.

  3. Erstellen Sie einen virtuellen Computer in KVM über das qcow2-Image. Legen Sie den Datenträgertyp auf qcow2 und als Gerätemodell der virtuellen Netzwerkschnittstelle virtio fest. Starten Sie anschließend den virtuellen Computer, und melden Sie sich als Stammbenutzer an.

  4. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Verschieben (oder entfernen) Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers unter Azure oder Hyper-V zu Problemen führen:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    

Hinweis

** Bei Verwendung von beschleunigtem Netzwerkbetrieb (Accelerated Networking, AN) muss die synthetische Schnittstelle, die erstellt wird, so konfiguriert werden, dass sie nicht mithilfe einer udev-Regel verwaltet wird. Dadurch wird verhindert, dass NetworkManager ihm dieselbe IP-Adresse wie der primären Schnittstelle zuweist.

Anwendung:

sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
# Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
# This interface is transparently bonded to the synthetic interface,
# so NetworkManager should just ignore any SRIOV interfaces.
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
EOF
  1. Stellen Sie sicher, dass der Netzwerkdienst beim Booten startet, indem Sie den folgenden Befehl ausführen:

    sudo chkconfig network on
    
  2. Registrieren Sie mit dem folgenden Befehl das Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Konfiguration /boot/grub/menu.lst in einem Text-Editor, und stellen Sie sicher, dass der Standardkernel die folgenden Parameter enthält:

    console=ttyS0 earlyprintk=ttyS0
    

    Dadurch wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dieser kann Azure bei der Behebung von Fehlern unterstützen.

    Neben den oben erwähnten Punkten ist es ratsam, die folgenden Parameter zu entfernen:

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Beachten Sie, dass die Menge an verfügbarem Arbeitsspeicher auf dem virtuellen Computer mit diesem Parameter um mindestens 128 MB reduziert wird. Dies kann bei kleineren virtuellen Computern problematisch sein.

  4. Fügen Sie „initramfs“ Hyper-V-Module hinzu:

    Bearbeiten Sie /etc/dracut.conf, und fügen Sie den folgenden Inhalt hinzu:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Erstellen Sie „initramfs“ neu:

    sudo dracut -f -v
    
  5. Deinstallieren Sie die Cloud-Initialisierung:

    sudo yum remove cloud-init
    
  6. Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Starten hochfährt:

    sudo chkconfig sshd on
    

    Ändern Sie die Datei „/etc/ssh/sshd_config“, sodass sie die folgenden Zeilen enthält:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  7. Das WALinuxAgent-Paket WALinuxAgent-<version> wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  8. Installieren Sie den Azure Linux-Agent, indem Sie den folgenden Befehl ausführen:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  9. Der Azure Linux-Agent kann den Auslagerungsbereich automatisch mit dem lokalen Ressourcendatenträger konfigurieren, der nach der Bereitstellung des virtuellen Computers in Azure mit dem virtuellen Computer verknüpft ist. Beachten Sie, dass der lokale Ressourcendatenträger ein temporärer Datenträger ist und geleert werden kann, wenn die Bereitstellung des virtuellen Computers aufgehoben wird. Ändern Sie nach dem Installieren des Azure Linux-Agents im vorherigen Schritt entsprechend die folgenden Parameter in /etc/waagent.conf:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set this to whatever you need it to be.
    
  10. Heben Sie das Abonnement (falls erforderlich) auf, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager unregister
    
  11. Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

    Hinweis

    Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung.

    sudo rm -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  12. Fahren Sie den virtuellen Computer in KVM herunter.

  13. Konvertieren Sie das qcow2-Image in das VHD-Format.

    Hinweis

    Es gibt einen bekannten Fehler in der qemu-img-Version> 2.2.1 und in höheren Versionen, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Sie sollten entweder qemu-img 2.2.0 oder niedriger verwenden oder auf 2.6 oder höher aktualisieren. Referenz: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertieren Sie das Bild zuerst in das raw-Format:

    sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
    

    Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-6.9.raw $rounded_size
    

    Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
    

    Mit QEMU, Version 2.6+ , müssen Sie außerdem die Option force_size einschließen:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
    

RHEL 7 mit KVM

  1. Laden Sie das KVM-Image von RHEL 7 von der Red Hat-Website herunter. Bei diesem Verfahren wird RHEL 7 als Beispiel verwendet.

  2. Legen Sie ein Stammkennwort fest.

    Generieren Sie ein verschlüsseltes Kennwort, und kopieren Sie die Ausgabe des Befehls:

    sudo openssl passwd -1 changeme
    

    Legen Sie ein Stammkennwort mit Guestfish fest:

    sudo  guestfish --rw -a <image-name>
    > <fs> run
    > <fs> list-filesystems
    > <fs> mount /dev/sda1 /
    > <fs> vi /etc/shadow
    > <fs> exit
    

    Ändern Sie das zweite Feld des Stammbenutzers von „!!“ in das verschlüsselte Kennwort.

  3. Erstellen Sie einen virtuellen Computer in KVM über das qcow2-Image. Legen Sie den Datenträgertyp auf qcow2 und als Gerätemodell der virtuellen Netzwerkschnittstelle virtio fest. Starten Sie anschließend den virtuellen Computer, und melden Sie sich als Stammbenutzer an.

  4. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  6. Stellen Sie sicher, dass der Netzwerkdienst beim Booten startet, indem Sie den folgenden Befehl ausführen:

    sudo systemctl enable network
    
  7. Registrieren Sie mit dem folgenden Befehl das Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  8. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Konfiguration /etc/default/grub in einem Text-Editor, und bearbeiten Sie den GRUB_CMDLINE_LINUX-Parameter. Beispiel:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Mit diesem Befehl wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dieser kann Azure bei der Behebung von Fehlern unterstützen. Außerdem werden mit dem Befehl die neuen RHEL 7-Benennungskonventionen für Netzwerkkarten deaktiviert. Neben den oben erwähnten Punkten ist es ratsam, die folgenden Parameter zu entfernen:

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Beachten Sie, dass die Menge an verfügbarem Arbeitsspeicher auf dem virtuellen Computer mit diesem Parameter um mindestens 128 MB reduziert wird. Dies kann bei kleineren virtuellen Computern problematisch sein.

  9. Nachdem Sie die Bearbeitung von /etc/default/grubabgeschlossen haben, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Fügen Sie „initramfs“ Hyper-V-Module hinzu:

    Bearbeiten Sie /etc/dracut.conf , und fügen Sie Inhalt hinzu:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Erstellen Sie „initramfs“ neu:

    sudo dracut -f -v
    
  11. Deinstallieren Sie die Cloud-Initialisierung:

    sudo yum remove cloud-init
    
  12. Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Starten hochfährt:

    sudo systemctl enable sshd
    

    Ändern Sie die Datei „/etc/ssh/sshd_config“, sodass sie die folgenden Zeilen enthält:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. Das WALinuxAgent-Paket WALinuxAgent-<version> wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  14. Installieren Sie den Azure Linux-Agent, indem Sie den folgenden Befehl ausführen:

    sudo yum install WALinuxAgent
    

    Aktivieren Sie den Waagent-Dienst:

    sudo systemctl enable waagent.service
    
  15. Installieren von cloud-init Führen Sie Schritt 12, „Installieren von cloud-init zum Behandeln der Bereitstellung“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.

  16. Auslagerungskonfiguration

    Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich. Führen Sie Schritt 13, „Auslagerungskonfiguration“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.

  17. Heben Sie das Abonnement (falls erforderlich) auf, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager unregister
    
  18. Aufheben der Bereitstellung

    Führen Sie Schritt 15, „Aufheben der Bereitstellung“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.

  19. Fahren Sie den virtuellen Computer in KVM herunter.

  20. Konvertieren Sie das qcow2-Image in das VHD-Format.

    Hinweis

    Es gibt einen bekannten Fehler in der qemu-img-Version> 2.2.1 und in höheren Versionen, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Sie sollten entweder qemu-img 2.2.0 oder niedriger verwenden oder auf 2.6 oder höher aktualisieren. Referenz: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertieren Sie das Bild zuerst in das raw-Format:

    sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
    

    Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-7.4.raw $rounded_size
    

    Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Mit QEMU, Version 2.6+ , müssen Sie außerdem die Option force_size einschließen:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

VMware

In diesem Abschnitt erfahren Sie, wie Sie eine RHEL 6- oder RHEL 7-Distribution über VMware vorbereiten.

Voraussetzungen

In diesem Abschnitt wird davon ausgegangen, dass Sie bereits einen virtuellen Computer von RHEL in VMware installiert haben. Weitere Informationen zum Installieren eines Betriebssystems in VMware finden Sie im VMware-Installationshandbuch für Gastbetriebssysteme.

  • Beim Installieren des Linux-Betriebssystems wird empfohlen, anstelle von LVM – bei vielen Installationen oftmals voreingestellt – die Standardpartitionen zu verwenden. Bei diesem Verfahren werden LVM-Namenskonflikte mit geklonten virtuellen Computern vermieden. Dies gilt besonders, falls Sie einen Betriebssystem-Datenträger zur Problembehandlung mit einem anderen virtuellen Computer verbinden müssen. LVM oder RAID können bei Bedarf auf Datenträgern verwendet werden.
  • Konfigurieren Sie auf dem Betriebssystemdatenträger keine Swap-Partition. Sie können den Linux-Agent zur Erstellung einer Auslagerungsdatei auf dem temporären Ressourcendatenträger konfigurieren. Weitere Informationen hierzu finden Sie in den folgenden Schritten.
  • Wählen Sie beim Erstellen der virtuellen Festplatte Virtuellen Datenträger als einzelne Datei speichernaus.

RHEL 6 mit VMware

Wichtig

Am 30. November 2020 ist die Wartungsphase für Red Hat Enterprise Linux 6 beendet. Danach folgt eine Phase des erweiterten Lebenszyklus. Da die Phasen der vollständigen Unterstützung und Wartung für Red Hat Enterprise Linux 6 enden, wird dringend empfohlen, ein Upgrade auf Red Hat Enterprise Linux 7, 8 oder 9 durchzuführen. Wenn Kunden weiterhin Red Hat Enterprise Linux 6 verwenden müssen, empfiehlt es sich, das Add-On zur erweiterten Lebenszyklusunterstützung (Extended Life Cycle Support, ELS) für Red Hat Enterprise Linux hinzuzufügen.

  1. In RHEL 6 kann NetworkManager zu Einschränkungen beim Azure Linux-Agent führen. Deinstallieren Sie dieses Paket, indem Sie den folgenden Befehl ausführen:

    sudo rpm -e --nodeps NetworkManager
    
  2. Erstellen Sie eine Datei mit der Benennung network im Verzeichnis "/etc/sysconfig/", die den folgenden Text enthält:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  3. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  4. Verschieben (oder entfernen) Sie die udev-Regeln, um eine Generierung statischer Regeln für die Ethernet-Schnittstelle zu vermeiden. Diese Regeln können beim Klonen eines virtuellen Computers unter Azure oder Hyper-V zu Problemen führen:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    

Hinweis

** Bei Verwendung von beschleunigtem Netzwerkbetrieb (Accelerated Networking, AN) muss die synthetische Schnittstelle, die erstellt wird, so konfiguriert werden, dass sie nicht mithilfe einer udev-Regel verwaltet wird. Dadurch wird verhindert, dass NetworkManager ihm dieselbe IP-Adresse wie der primären Schnittstelle zuweist.

Anwendung:

sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
# Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
# This interface is transparently bonded to the synthetic interface,
# so NetworkManager should just ignore any SRIOV interfaces.
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION=="add", ENV{NM_UNMANAGED}="1"
EOF
  1. Stellen Sie sicher, dass der Netzwerkdienst beim Booten startet, indem Sie den folgenden Befehl ausführen:

    sudo chkconfig network on
    
  2. Registrieren Sie mit dem folgenden Befehl das Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Das WALinuxAgent-Paket WALinuxAgent-<version> wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie hierzu /etc/default/grub in einem Text-Editor, und bearbeiten Sie den GRUB_CMDLINE_LINUX-Parameter. Beispiel:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
    

    Dadurch wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dieser kann Azure bei der Behebung von Fehlern unterstützen. Neben den oben erwähnten Punkten ist es ratsam, die folgenden Parameter zu entfernen:

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Beachten Sie, dass die Menge an verfügbarem Arbeitsspeicher auf dem virtuellen Computer mit diesem Parameter um mindestens 128 MB reduziert wird. Dies kann bei kleineren virtuellen Computern problematisch sein.

  5. Fügen Sie „initramfs“ Hyper-V-Module hinzu:

    Bearbeiten Sie /etc/dracut.conf, und fügen Sie den folgenden Inhalt hinzu:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Erstellen Sie „initramfs“ neu:

    sudo dracut -f -v
    
  6. Stellen Sie sicher, dass der SSH-Server installiert und so konfiguriert ist, dass er beim Booten hochfährt. Ergänzen Sie /etc/ssh/sshd_config um die folgende Zeile:

    ClientAliveInterval 180
    
  7. Installieren Sie den Azure Linux-Agent, indem Sie den folgenden Befehl ausführen:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  8. Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich.

    Der Azure Linux-Agent kann den Auslagerungsbereich automatisch mit dem lokalen Ressourcendatenträger konfigurieren, der nach der Bereitstellung des virtuellen Computers in Azure mit dem virtuellen Computer verknüpft ist. Beachten Sie, dass der lokale Ressourcendatenträger ein temporärer Datenträger ist und geleert werden kann, wenn die Bereitstellung des virtuellen Computers aufgehoben wird. Passen Sie nach dem Installieren des Azure Linux-Agents im vorherigen Schritt die folgenden Parameter in /etc/waagent.conf entsprechend an:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set this to whatever you need it to be.
    
  9. Heben Sie das Abonnement (falls erforderlich) auf, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager unregister
    
  10. Führen Sie die folgenden Befehle aus, um den virtuellen Computer zurückzusetzen und ihn für die Bereitstellung in Azure vorzubereiten:

    Hinweis

    Wenn Sie eine bestimmte VM migrieren und kein generalisiertes Image erstellen möchten, überspringen Sie den Schritt zum Aufheben der Bereitstellung.

    sudo rm -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  11. Fahren Sie den virtuellen Computer herunter, und konvertieren Sie die VMDK-Datei in eine VHD-Datei.

    Hinweis

    Es gibt einen bekannten Fehler in der qemu-img-Version> 2.2.1 und in höheren Versionen, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Sie sollten entweder qemu-img 2.2.0 oder niedriger verwenden oder auf 2.6 oder höher aktualisieren. Referenz: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertieren Sie das Bild zuerst in das raw-Format:

    sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
    

    Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-6.9.raw $rounded_size
    

    Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
    

    Mit QEMU, Version 2.6+ , müssen Sie außerdem die Option force_size einschließen:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
    

RHEL 7 mit VMware

  1. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network, und fügen Sie ihr den folgenden Text hinzu:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  2. Erstellen oder bearbeiten Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0, und fügen Sie ihr den folgenden Text hinzu:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    
  3. Stellen Sie sicher, dass der Netzwerkdienst beim Booten startet, indem Sie den folgenden Befehl ausführen:

    sudo systemctl enable network
    
  4. Registrieren Sie mit dem folgenden Befehl das Red Hat-Abonnement, um die Installation von Paketen aus dem RHEL-Repository zu ermöglichen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Modifizieren Sie die Boot-Zeile des Kernels in Ihrer Grub-Konfiguration, um zusätzliche Kernel-Parameter für Azure einzubinden. Öffnen Sie für diese Änderung /etc/default/grub in einem Text-Editor, und bearbeiten Sie den GRUB_CMDLINE_LINUX-Parameter. Beispiel:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Durch diese Konfiguration wird zudem sichergestellt, dass alle Konsolennachrichten zum ersten seriellen Port gesendet werden. Dieser kann Azure bei der Behebung von Fehlern unterstützen. Außerdem werden die neuen RHEL 7-Benennungskonventionen für Netzwerkkarten deaktiviert. Neben den oben erwähnten Punkten ist es ratsam, die folgenden Parameter zu entfernen:

    rhgb quiet crashkernel=auto
    

    Weder grafische Startvorgänge noch Startvorgänge im stillen Modus sind in einer Cloudumgebung nützlich, in der alle Protokolle an den seriellen Port gesendet werden sollen. Sie können die Option crashkernel bei Bedarf konfiguriert lassen. Beachten Sie, dass die Menge an verfügbarem Arbeitsspeicher auf dem virtuellen Computer mit diesem Parameter um mindestens 128 MB reduziert wird. Dies kann bei kleineren virtuellen Computern problematisch sein.

  6. Nachdem Sie die Bearbeitung von /etc/default/grubabgeschlossen haben, führen Sie den folgenden Befehl zum erneuten Erstellen der GRUB-Konfiguration aus:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. Fügen Sie „initramfs“ Hyper-V-Module hinzu.

    Bearbeiten Sie /etc/dracut.confund fügen Sie Inhalt hinzu:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Erstellen Sie „initramfs“ neu:

    sudo dracut -f -v
    
  8. Stellen Sie sicher, dass der SSH-Server installiert und konfiguriert ist, damit er beim Booten hochfährt. Dies ist normalerweise die Standardeinstellung. Ergänzen Sie /etc/ssh/sshd_config um die folgende Zeile:

    ClientAliveInterval 180
    
  9. Das WALinuxAgent-Paket WALinuxAgent-<version> wurde in das Red Hat Extras-Repository übertragen. Aktivieren Sie das Extras-Repository, indem Sie den folgenden Befehl ausführen:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  10. Installieren Sie den Azure Linux-Agent, indem Sie den folgenden Befehl ausführen:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent.service
    
  11. Installieren von cloud-init

    Führen Sie Schritt 12, „Installieren von cloud-init zum Behandeln der Bereitstellung“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.

  12. Auslagerungskonfiguration

    Erstellen Sie auf dem Betriebssystemdatenträger keinen Auslagerungsbereich. Führen Sie Schritt 13, „Auslagerungskonfiguration“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.

  13. Wenn Sie die Registrierung des Abonnements aufheben möchten, führen Sie den folgenden Befehl aus:

    sudo subscription-manager unregister
    
  14. Aufheben der Bereitstellung

    Führen Sie Schritt 15, „Aufheben der Bereitstellung“ im Abschnitt zum Vorbereiten einer RHEL 7-VM mit dem Hyper-V-Manager aus.

  15. Fahren Sie die VM herunter, und konvertieren Sie die VMDK-Datei in das VHD-Format.

    Hinweis

    Es gibt einen bekannten Fehler in der qemu-img-Version> 2.2.1 und in höheren Versionen, der zu einer nicht ordnungsgemäßen Formatierung der virtuellen Festplatte führt. Dieses Problem wurde in QEMU 2.6 behoben. Sie sollten entweder qemu-img 2.2.0 oder niedriger verwenden oder auf 2.6 oder höher aktualisieren. Referenz: https://bugs.launchpad.net/qemu/+bug/1490611.

    Konvertieren Sie das Bild zuerst in das raw-Format:

    sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
    

    Stellen Sie sicher, dass das RAW-Image auf 1 MB ausgerichtet ist. Runden Sie andernfalls die Größe auf 1 MB auf:

    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1)*$MB))
    sudo qemu-img resize rhel-7.4.raw $rounded_size
    

    Konvertieren Sie den RAW-Datenträger in das VHD-Format mit festgelegter Größe:

    sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Mit QEMU, Version 2.6+ , müssen Sie außerdem die Option force_size einschließen:

    sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

Kickstart-Datei

In diesem Abschnitt erfahren Sie, wie Sie mit einer Kickstart-Datei eine RHEL 7-Distribution aus einem ISO-Image vorbereiten.

RHEL 7 mit einer Kickstart-Datei

  1. Erstellen Sie eine Kickstartdatei mit dem folgenden Inhalt, und speichern Sie die Datei. Weitere Informationen zur Kickstart-Installation finden Sie im Kickstart-Installationshandbuch.

    # Kickstart for provisioning a RHEL 7 Azure VM
    
    # System authorization information
      auth --enableshadow --passalgo=sha512
    
    # Use graphical install
    text
    
    # Don't run the Setup Agent on first boot
    firstboot --disable
    
    # Keyboard layouts
    keyboard --vckeymap=us --xlayouts='us'
    
    # System language
    lang en_US.UTF-8
    
    # Network information
    network  --bootproto=dhcp
    
    # Root password
    rootpw --plaintext "to_be_disabled"
    
    # System services
    services --enabled="sshd,waagent,NetworkManager"
    
    # System timezone
    timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org
    
    # Partition clearing information
    clearpart --all --initlabel
    
    # Clear the MBR
    zerombr
    
    # Disk partitioning information
    part /boot --fstype="xfs" --size=500
    part / --fstyp="xfs" --size=1 --grow --asprimary
    
    # System bootloader configuration
    bootloader --location=mbr
    
    # Firewall configuration
    firewall --disabled
    
    # Enable SELinux
    selinux --enforcing
    
    # Don't configure X
    skipx
    
    # Power down the machine after install
    poweroff
    
    %packages
    @base
    @console-internet
    chrony
    sudo
    parted
    -dracut-config-rescue
    
    %end
    
    %post --log=/var/log/anaconda/post-install.log
    
    #!/bin/bash
    
    # Register Red Hat Subscription
    subscription-manager register --username=XXX --password=XXX --auto-attach --force
    
    # Install latest repo update
    yum update -y
    
    # Enable extras repo
    subscription-manager repos --enable=rhel-7-server-extras-rpms
    
    # Install WALinuxAgent
    yum install -y WALinuxAgent
    
    # Unregister Red Hat subscription
    subscription-manager unregister
    
    # Enable waaagent at boot-up
    systemctl enable waagent
    
    # Install cloud-init
    yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    # Configure waagent for cloud-init
    sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
    sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    
    echo "Adding mounts and disk_setup to init stage"
    sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    # Disable the root account
    usermod root -p '!!'
    
    # Configure swap using cloud-init
    echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
    #cloud-config
    # Generated by Azure cloud image build
    disk_setup:
    ephemeral0:
        table_type: mbr
        layout: [66, [33, 82]]
        overwrite: True
    fs_setup:
    - device: ephemeral0.1
        filesystem: ext4
    - device: ephemeral0.2
        filesystem: swap
    mounts:
    - ["ephemeral0.1", "/mnt"]
    - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"]
    EOF
    
    # Set the cmdline
    sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub
    
    # Enable SSH keepalive
    sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config
    
    # Build the grub cfg
    grub2-mkconfig -o /boot/grub2/grub.cfg
    
    # Configure network
    cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    EOF
    
    # Deprovision and prepare for Azure if you are creating a generalized image
    sudo cloud-init clean --logs --seed
    sudo rm -rf /var/lib/cloud/
    sudo rm -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    
    sudo waagent -force -deprovision+user
    rm -f ~/.bash_history
    export HISTSIZE=0
    
    %end
    
  2. Legen Sie die Kickstart-Datei an einem Speicherort ab, an dem das Installationssystem darauf zugreifen kann.

  3. Erstellen Sie in Hyper-V Manager einen neuen virtuellen Computer. Wählen Sie auf der Seite Virtuelle Festplatte verbinden die Option Virtuelle Festplatte später zuordnen, und schließen Sie den Assistenten für neue virtuelle Computer ab.

  4. Öffnen Sie die VM-Einstellungen:

    1. Ordnen Sie dem virtuellen Computer eine neue virtuelle Festplatte zu. Wählen Sie VHD-Format und Feste Größe aus.

    2. Ordnen Sie die ISO-Installationsdatei dem DVD-Laufwerk zu.

    3. Legen Sie fest, dass BIOS von der CD starten soll.

  5. Starten Sie den virtuellen Computer. Wenn die Installationsanweisungen angezeigt werden, drücken Sie die TAB-TASTE , um die Startoptionen zu konfigurieren.

  6. Geben Sie am Ende der Startoptionen inst.ks=<the location of the kickstart file> ein und drücken Sie die EINGABETASTE.

  7. Warten Sie, bis die Installation abgeschlossen ist. Wenn sie abgeschlossen ist, wird der virtuelle Computer automatisch heruntergefahren. Ihre Linux-VHD kann nun in Azure hochgeladen werden.

Bekannte Probleme

Der Hyper-V-Treiber konnte dem anfänglichen RAM-Datenträger nicht hinzugefügt werden, wenn ein anderer Hypervisor als ein Hyper-V-Hypervisor verwendet wurde.

In einigen Fällen enthalten Linux-Installationsprogramme unter Umständen keine Treiber für Hyper-V auf dem anfänglichen RAM-Datenträger („initrd“ oder „initramfs“), sofern von Linux nicht die Ausführung in einer Hyper-V-Umgebung erkannt wird.

Wenn ein anderes Virtualisierungssystem (z. B. VirtualBox, Xen usw.) zur Vorbereitung des Linux-Image verwendet wird, müssen Sie initrd unter Umständen neu erstellen, um sicherzustellen, dass mindestens die Kernelmodule hv_vmbus und hv_storvsc auf dem anfänglichen RAM-Datenträger verfügbar sind. Dies ist zumindest auf Systemen, die auf der Red Hat-Upstream-Verteilung basieren, ein bekanntes Problem.

Um dieses Problem zu beheben, müssen Sie „initramfs“ Hyper-V-Module hinzufügen und das Archiv neu erstellen:

Bearbeiten Sie /etc/dracut.conf, und fügen Sie den folgenden Inhalt hinzu:

add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "

Erstellen Sie „initramfs“ neu:

sudo dracut -f -v

Weitere Informationen finden Sie unter Neuerstellung von „initramfs“.

Nächste Schritte