Delen via


Een op Red Hat gebaseerde virtuele machine voor Azure voorbereiden

Van toepassing op: ✔️ Flexibele schaalsets ✔️ voor Linux-VM's ✔️ Uniform-schaalsets

In dit artikel leert u hoe u een virtuele Machine (RHEL) van Red Hat Enterprise Linux (VM) voorbereidt voor gebruik in Azure. De versies van RHEL die in dit artikel worden behandeld, zijn 7.x, 8.X., 9.x. De hypervisors voor voorbereiding die in dit artikel worden behandeld, zijn Hyper-V, op kernel gebaseerde VM (KVM), VMware en Kickstart.

Zie de Red Hat Cloud Access-website en RHEL uitvoeren in Azure voor meer informatie over geschiktheidsvereisten voor deelname aan het Red Hat Cloud Access-programma. Zie Azure Image Builder voor manieren om het bouwen van RHEL-installatiekopieën te automatiseren.

Notitie

Houd rekening met versies die aan hun einde van de levensduur (EOL) staan en die niet meer worden ondersteund door Red Hat. Geüploade afbeeldingen die zich op of buiten EOL bevinden, worden op redelijke basis ondersteund. Zie de Red Hat Product Life Cycles voor meer informatie.

Vereisten

In deze sectie wordt ervan uitgegaan dat u al een ISO-bestand hebt verkregen van de Website van Red Hat en de RHEL-installatiekopie hebt geïnstalleerd op een virtuele harde schijf (VHD). Zie De Hyper-V-rol installeren en een virtuele machine configureren voor meer informatie over het gebruik van Hyper-V-beheer om een installatiekopieën van een besturingssysteem te installeren.

RHEL-installatieopmerkingen

  • Azure biedt geen ondersteuning voor de VHDX-indeling. ondersteuning voor Azure alleen vaste VHD. U kunt Hyper-V-beheer gebruiken om de schijf te converteren naar VHD-indeling of u kunt de convert-vhd cmdlet gebruiken. Als u VirtualBox gebruikt, selecteert u Vaste grootte in plaats van de standaardoptie dynamisch toegewezen wanneer u de schijf maakt.
  • ondersteuning voor Azure s Gen1 -VM's (BIOS boot) en Gen2 (UEFI boot).
  • De maximale grootte die is toegestaan voor de VHD is 1023 GB.
  • De vfat-kernelmodule moet zijn ingeschakeld in de kernel.
  • Logical Volume Manager (LVM) wordt ondersteund en kan worden gebruikt op de besturingssysteemschijf of gegevensschijven in virtuele Azure-machines. Over het algemeen raden we u aan standaardpartities op de besturingssysteemschijf te gebruiken in plaats van LVM. Deze procedure voorkomt dat de LVM-naam conflicteert met gekloonde VM's, met name als u ooit een besturingssysteemschijf moet koppelen aan een andere identieke VM voor probleemoplossing. Zie de LVM - en RAID-documentatie voor meer informatie.
  • Kernelondersteuning voor het koppelen van UDF-bestandssystemen (Universal Disk Format) is vereist. Bij het opstarten in Azure geeft de door UDF geformatteerde media die aan de gast zijn gekoppeld de inrichtingsconfiguratie door aan de Virtuele Linux-machine. De Azure Linux-agent moet het UDF-bestandssysteem kunnen koppelen om de configuratie ervan te lezen en de VIRTUELE machine in te richten. Zonder deze stap mislukt het inrichten.
  • Configureer geen wisselpartitie op de schijf van het besturingssysteem. Lees de volgende stappen voor meer informatie.
  • Alle VHD's in Azure moeten een virtuele grootte hebben die is afgestemd op 1 MB. Wanneer u converteert van een onbewerkte schijf naar VHD, moet u ervoor zorgen dat de grootte van de onbewerkte schijf vóór de conversie een veelvoud van 1 MB is. Lees de volgende stappen voor meer informatie. Zie ook opmerkingen bij de installatie van Linux.

Notitie

Cloud-init >= 21.2 verwijdert de UDF-vereiste. Als de UDF-module echter niet is ingeschakeld, wordt de CD-ROM niet bevestigd tijdens het inrichten, waardoor aangepaste gegevens niet kunnen worden toegepast. Een tijdelijke oplossing is het toepassen van aangepaste gegevens met behulp van gebruikersgegevens. In tegenstelling tot aangepaste gegevens worden gebruikersgegevens niet versleuteld. Zie Indelingen voor gebruikersgegevens voor meer informatie.

  1. Selecteer de VIRTUELE machine in Hyper-V-beheer.

  2. Selecteer Verbinding maken om een consolevenster voor de virtuele machine te openen.

  3. Maak of bewerk het /etc/sysconfig/network bestand en voeg de volgende tekst toe:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Maak of bewerk het /etc/sysconfig/network-scripts/ifcfg-eth0 bestand en voeg de volgende tekst toe:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    PERSISTENT_DHCLIENT=yes
    NM_CONTROLLED=yes
    

    Notitie

    Wanneer u versneld netwerken gebruikt, moet de synthetische interface die wordt gemaakt, worden geconfigureerd om onbeheerd te zijn met behulp van een udev-regel. Met deze actie voorkomt u dat NetworkManager hetzelfde IP-adres als de primaire interface wordt toegewezen.

    Ga als volgende te werk om deze toe te passen:

    sudo tee <<EOF /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules > /dev/null
    # 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!="remove", ENV{NM_UNMANAGED}="1"
    EOF
    
  5. Zorg ervoor dat de netwerkservice begint bij het opstarten:

    sudo systemctl enable network
    
  6. Registreer uw Red Hat-abonnement om de installatie van pakketten vanuit de RHEL-opslagplaats in te schakelen:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Wijzig de kernelstartlijn in uw grub-configuratie om meer kernelparameters voor Azure op te nemen. Als u deze wijziging wilt uitvoeren, opent /etc/default/grub u deze in een teksteditor en bewerkt u de GRUB_CMDLINE_LINUX parameter. Bijvoorbeeld:

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

    Notitie

    Als ENABLE_BLSCFG=false aanwezig is in plaats van ENABLE_BLSCFG=true, /etc/default/grub hulpprogramma's zoals grubedit of gubby, die afhankelijk zijn van de Boot Loader Specification (BLS) voor het beheren van opstartvermeldingen en configuraties, werken mogelijk niet correct in RHEL 8 en 9. Als ENABLE_BLSCFG deze niet aanwezig is, is falsehet standaardgedrag.

    Deze wijziging zorgt er ook voor dat alle consoleberichten naar de eerste seriële poort worden verzonden en interactie mogelijk maakt met de seriële console, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen. Met deze configuratie worden ook de nieuwe naamconventies voor netwerkinterfacekaarten (NIC's) uitgeschakeld.

    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin u wilt dat alle logboeken naar de seriële poort worden verzonden. U kunt de crashkernel geconfigureerde optie desgewenst laten staan. Deze parameter vermindert de hoeveelheid beschikbaar geheugen in de VIRTUELE machine met 128 MB of meer, wat een probleem kan zijn voor kleinere VM-grootten.

  8. Nadat u klaar bent met bewerken /etc/default/grub, voert u de volgende opdracht uit om de grub-configuratie opnieuw te bouwen:

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

    Notitie

    Als u een UEFI-VM uploadt, is grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfgde opdracht om grub bij te werken.

  9. Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten. Dit is meestal de standaardinstelling. Wijzig /etc/ssh/sshd_config dit om de volgende regel op te nemen:

    ClientAliveInterval 180
    
  10. Het WALinuxAgent-pakket, WALinuxAgent-<version>is naar de Red Hat-opslagplaats voor extra's gepusht. Schakel de opslagplaats extra's in:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Installeer de Azure Linux-agent cloud-initen andere benodigde hulpprogramma's:

    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. Configureren cloud-init voor het afhandelen van de inrichting:

    1. Configureren waagent voor 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
      

      Notitie

      Als u een specifieke VM migreert en geen gegeneraliseerde installatiekopieën wilt maken, stelt u deze in Provisioning.Agent=disabled voor de /etc/waagent.conf configuratie.

    2. Koppels configureren:

      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
      
    3. Configureer de Azure-gegevensbron:

      sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
      sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
      datasource_list: [ Azure ]
      datasource:
          Azure:
              apply_network_config: False
      EOF
      
    4. Als dit is geconfigureerd, verwijdert u het bestaande wisselbestand:

      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
      
    5. Logboekregistratie configureren cloud-init :

      sudo echo "Add console log file"
      sudo tee <<EOF /etc/cloud/cloud.cfg.d/05_logging.cfg > /dev/null
      
      # 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. Configuratie wisselen:

    • Maak geen wisselruimte op de besturingssysteemschijf.

      Voorheen werd de Azure Linux-agent gebruikt om wisselruimte automatisch te configureren met behulp van de lokale resourceschijf die aan de VIRTUELE machine is gekoppeld nadat de VIRTUELE machine is ingericht in Azure. Deze actie wordt nu verwerkt door cloud-init. U moet de Linux-agent niet gebruiken om de resourceschijf te formatteren om het wisselbestand te maken. Wijzig de volgende parameters op /etc/waagent.conf de juiste manier:

      ResourceDisk.Format=n
      ResourceDisk.EnableSwap=n
      
    • Als u de wissel wilt koppelen, opmaken en maken, kunt u het volgende doen:

      • Geef deze code door als een cloud-init configuratie telkens wanneer u een virtuele machine maakt via aangepaste gegevens. We raden deze methode aan.

      • Gebruik een cloud-init instructie die is gebakken in de installatiekopieën die deze stap uitvoeren telkens wanneer de virtuele machine wordt gemaakt.

        sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
        sudo tee /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. Configureer cloud-init telemetrie om u te helpen bij het oplossen van problemen met de inrichting:

    sudo tee >> /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg << EOF
    # This config enables cloud-init to report provisioning telemetry to aid with troubleshooting
    Reporting:
      logging:
        type: log
      telemetry:
        type: hyperv
    EOF
    
  15. Als u de registratie van het abonnement ongedaan wilt maken, voert u de volgende opdracht uit:

    
    sudo subscription-manager unregister
    
  16. Maak de inrichting van de VIRTUELE machine ongedaan en bereid deze voor op inrichting in Azure:

    Let op

    Als u een specifieke VM migreert en geen gegeneraliseerde installatiekopieën wilt maken, slaat u de inrichtingsstap over. Als u de opdracht waagent -force -deprovision+user uitvoert, wordt de bronmachine onbruikbaar. Deze stap is alleen bedoeld om een gegeneraliseerde installatiekopieën te maken.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean --logs --seed
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  17. Selecteer Actie>afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.