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 RhEL-machine (Red Hat Enterprise Linux) voorbereidt voor gebruik in Azure. De versies van RHEL die in dit artikel worden behandeld, zijn 6.X, 7.X en 8.X. De hypervisors voor voorbereiding die in dit artikel worden behandeld, zijn Hyper-V, op kernel gebaseerde virtuele machine (KVM) en VMware. Zie de Website van Red Hat Cloud Access en RHEL uitvoeren in Azure voor meer informatie over geschiktheidsvereisten voor deelname aan het Cloud Access-programma van Red Hat. Zie Azure Image Builder voor manieren om het bouwen van RHEL-installatiekopieën te automatiseren.

Notitie

Houd rekening met versies die end-of-life (EOL) zijn en niet langer worden ondersteund door Redhat. Geüploade afbeeldingen die zich op of buiten EOL bevinden, worden op redelijke basis van zakelijke inspanningen ondersteund. Koppeling naar de productlevenscyclus van Redhat

Hyper-V-beheer

In deze sectie wordt beschreven hoe u een virtuele RHEL 6-, RHEL 7- of RHEL 8-machine voorbereidt met Hyper-V-beheer.

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 cmdlet convert-vhd 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 (BIOS boot) & Gen2 (UEFI boot) Virtuele machines.

  • 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 echter aan standaardpartities op de besturingssysteemschijf te gebruiken in plaats van LVM. Deze procedure voorkomt conflicten met de LVM-naam met gekloonde virtuele machines, met name als u ooit een besturingssysteemschijf moet koppelen aan een andere identieke virtuele machine voor probleemoplossing. Zie de LVM - en RAID-documentatie .

  • Kernelondersteuning voor het koppelen van UDF-bestandssystemen (Universal Disk Format) is vereist. Bij het opstarten in Azure geeft de door UDF opgemaakte 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 dat dit het inrichten mislukt.

  • Configureer geen wisselpartitie op de schijf van het besturingssysteem. Meer informatie hierover vindt u in de volgende stappen.

  • 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. Meer informatie vindt u in de onderstaande stappen. Zie ook Opmerkingen bij de Installatie van Linux voor meer informatie.

Notitie

Cloud-init >= 21.2 verwijdert de udf-vereiste. Zonder dat de udf-module is ingeschakeld, wordt de cdrom niet bevestigd tijdens het inrichten, waardoor aangepaste gegevens niet kunnen worden toegepast. Een tijdelijke oplossing hiervoor is het toepassen van aangepaste gegevens met behulp van gebruikersgegevens. In tegenstelling tot aangepaste gegevens worden gebruikersgegevens echter niet versleuteld. https://cloudinit.readthedocs.io/en/latest/topics/format.html

RHEL 6 met Hyper-V-beheer

Belangrijk

Vanaf 30 november 2020 bereikt Red Hat Enterprise Linux 6 het einde van de onderhoudsfase. De onderhoudsfase wordt gevolgd door de verlengde levensduurfase. Omdat Red Hat Enterprise Linux 6 overstapt van de fase Volledig/Onderhoud, raden we u ten zeerste aan een upgrade uit te voeren naar Red Hat Enterprise Linux 7, 8 of 9. Als klanten Red Hat Enterprise Linux 6 moeten blijven gebruiken, raden we u aan de ELS-invoegtoepassing (Extended Life Cycle Support) voor Red Hat Enterprise Linux toe te voegen.

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

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

  3. In RHEL 6 kan NetworkManager de Azure Linux-agent verstoren. Verwijder dit pakket door de volgende opdracht uit te voeren:

    sudo rpm -e --nodeps NetworkManager
    
  4. Maak of bewerk het /etc/sysconfig/network bestand en voeg de volgende tekst toe:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. 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
    
  6. Verplaats (of verwijder) de udev-regels om te voorkomen dat statische regels voor de Ethernet-interface worden gegenereerd. Deze regels veroorzaken problemen wanneer u een virtuele machine kloont in Microsoft Azure of Hyper-V:

    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
    

Notitie

** Wanneer u versneld netwerken (AN) gebruikt, moet ik de synthetische interface die wordt gemaakt, worden geconfigureerd om onbeheerd te zijn met behulp van een udev-regel. Hierdoor voorkomt u dat NetworkManager hetzelfde IP-adres toewijst als de primaire interface.

Ga als volgende te werk om deze toe te passen:

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. Zorg ervoor dat de netwerkservice bij het opstarten wordt gestart door de volgende opdracht uit te voeren:

    sudo chkconfig network on
    
  2. Registreer uw Red Hat-abonnement om de installatie van pakketten vanuit de RHEL-opslagplaats in te schakelen door de volgende opdracht uit te voeren:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Het WALinuxAgent-pakket, WALinuxAgent-<version>is naar de Red Hat-opslagplaats voor extra's gepusht. Schakel de opslagplaats extra's in door de volgende opdracht uit te voeren:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Wijzig de kernelstartregel in uw grub-configuratie om extra kernelparameters voor Azure op te nemen. Als u deze wijziging wilt uitvoeren, opent /boot/grub/menu.lst u een teksteditor en zorgt u ervoor dat de standaardkernel de volgende parameters bevat:

    console=ttyS0 earlyprintk=ttyS0
    

    Dit zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen.

    Daarnaast raden we u aan de volgende parameters te verwijderen:

    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. U kunt desgewenst de crashkernel geconfigureerde optie laten staan. Houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de virtuele machine met 128 MB of meer vermindert. Deze configuratie kan problematisch zijn voor kleinere grootten van virtuele machines.

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

    ClientAliveInterval 180
    
  6. Installeer de Azure Linux-agent door de volgende opdracht uit te voeren:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    

    Als u het WALinuxAgent-pakket installeert, worden de NetworkManager- en NetworkManager-kabouterpakketten verwijderd als ze nog niet zijn verwijderd in stap 3.

  7. Maak geen wisselruimte op de besturingssysteemschijf.

    De Azure Linux-agent kan automatisch wisselruimte configureren met behulp van de lokale resourceschijf die is gekoppeld aan de virtuele machine nadat de virtuele machine is ingericht in Azure. Houd er rekening mee dat de lokale resourceschijf een tijdelijke schijf is en dat deze mogelijk wordt geleegd als de virtuele machine is gedeprovisioneerd. Nadat u de Azure Linux-agent in de vorige stap hebt geïnstalleerd, wijzigt u de volgende parameters in /etc/waagent.conf op de juiste manier:

    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. Maak de registratie van het abonnement ongedaan (indien nodig) door de volgende opdracht uit te voeren:

    sudo subscription-manager unregister
    
  9. Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden op inrichting in Azure:

Notitie

Als u een specifieke virtuele machine migreert en geen gegeneraliseerde installatiekopieën wilt maken, slaat u de inrichtingsstap over.

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
  1. Klik op Actie>afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.

RHEL 7 met Hyper-V-beheer

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

  2. Klik op 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
    
  5. Zorg ervoor dat de netwerkservice bij het opstarten wordt gestart door de volgende opdracht uit te voeren:

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

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Wijzig de kernelstartregel in uw grub-configuratie om extra 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 /etc/default/grub plaats van 'ENABLE_BLSCFG=true'-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. Houd er rekening mee dat als ENABLE_BLSCFG niet aanwezig is, het standaardgedrag 'false' is.

    Dit zorgt er ook voor dat alle consoleberichten naar de eerste seriële poort worden verzonden en interactie mogelijk maken met de seriële console, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen. Met deze configuratie worden ook de nieuwe RHEL 7-naamconventies voor NIC's uitgeschakeld.

    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. U kunt desgewenst de crashkernel geconfigureerde optie laten staan. Houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de virtuele machine met 128 MB of meer vermindert, wat mogelijk problematisch is voor kleinere grootten van virtuele machines.

  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 VM met UEFI 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 door de volgende opdracht uit te voeren:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Installeer de Azure Linux-agent, cloud-init en andere benodigde hulpprogramma's door de volgende opdracht uit te voeren:

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

    1. Waagent configureren 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 virtuele machine migreert en geen gegeneraliseerde installatiekopieën wilt maken, stelt u deze in Provisioning.Agent=disabled op de /etc/waagent.conf configuratie.

    1. 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
    
    1. Azure-gegevensbron configureren:
    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. Als dit is geconfigureerd, verwijdert u een bestaand 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
    
    1. Cloud-init-logboekregistratie configureren:
    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. 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 is gekoppeld aan de virtuele machine nadat de virtuele machine is ingericht in Azure. Dit wordt nu echter 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 koppelen, opmaken en wisselen wilt maken, kunt u het volgende doen:

    • Geef deze door als een cloud-init-configuratie telkens wanneer u een virtuele machine maakt via customdata. Dit is de aanbevolen methode.

    • Gebruik een cloud-init-instructie die is gebakken in de installatiekopieën die dit doen 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 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. Als u de registratie van het abonnement ongedaan wilt maken, voert u de volgende opdracht uit:

    sudo subscription-manager unregister
    
  15. Inrichting ongedaan maken

    Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden op inrichting in Azure:

    Let op

    Als u een specifieke virtuele machine 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 gemaakt. Deze stap is alleen bedoeld om een gegeneraliseerde installatiekopieën te maken.

    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. Klik op Actie>afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.

RHEL 8+ met Hyper-V-beheer

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

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

  3. Zorg ervoor dat de Network Manager-service wordt gestart bij het opstarten door de volgende opdracht uit te voeren:

    sudo systemctl enable NetworkManager.service
    
  4. Configureer de netwerkinterface om automatisch te starten bij het opstarten en DHCP te gebruiken:

    sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
    
  5. Registreer uw Red Hat-abonnement om de installatie van pakketten vanuit de RHEL-opslagplaats in te schakelen door de volgende opdracht uit te voeren:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  6. Wijzig de kernel-opstartlijn in uw grub-configuratie om extra kernelparameters voor Azure op te nemen en de seriële console in te schakelen.

    1. Huidige GRUB-parameters verwijderen:
    sudo grub2-editenv - unset kernelopts
    
    1. Bewerk /etc/default/grub in een teksteditor en voeg de volgende parameters toe:
    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"
    

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

    1. Daarnaast raden we u aan de volgende parameters te verwijderen:
    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. U kunt desgewenst de crashkernel geconfigureerde optie laten staan. Houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de virtuele machine met 128 MB of meer vermindert, wat mogelijk problematisch is voor kleinere grootten van virtuele machines.

  7. 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
    

    Voer voor een UEFI-VM de volgende opdracht uit:

    sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    
  8. 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
    
  9. Installeer de Azure Linux-agent, cloud-init en andere benodigde hulpprogramma's door de volgende opdracht uit te voeren:

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

    1. Waagent configureren voor 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
    

    Notitie

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

    1. 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
    
    1. Azure-gegevensbron configureren:
    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. Als dit is geconfigureerd, verwijdert u een bestaand wisselbestand:
    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. Cloud-init-logboekregistratie configureren:
    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. Wisselconfiguratie 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 is gekoppeld aan de virtuele machine nadat de virtuele machine is ingericht in Azure. Dit wordt nu echter 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
    
    • Geef deze door als een cloud-init-configuratie telkens wanneer u een virtuele machine maakt via customdata. Dit is de aanbevolen methode.

    • Gebruik een cloud-init-instructie die is gebakken in de installatiekopieën die dit doen 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 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. Als u de registratie van het abonnement ongedaan wilt maken, voert u de volgende opdracht uit:

    sudo subscription-manager unregister
    
  13. Inrichting ongedaan maken

    Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden op inrichting in Azure:

    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
    

    Let op

    Als u een specifieke virtuele machine 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 gemaakt. Deze stap is alleen bedoeld om een gegeneraliseerde installatiekopieën te maken.

  14. Klik op Actie>afsluiten in Hyper-V-beheer. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.

KVM

In deze sectie wordt beschreven hoe u KVM gebruikt om een RHEL 6 - of RHEL 7-distributie voor te bereiden om te uploaden naar Azure.

RHEL 6 met KVM

Belangrijk

Vanaf 30 november 2020 bereikt Red Hat Enterprise Linux 6 het einde van de onderhoudsfase. De onderhoudsfase wordt gevolgd door de verlengde levensduurfase. Omdat Red Hat Enterprise Linux 6 overstapt van de fase Volledig/Onderhoud, raden we u ten zeerste aan een upgrade uit te voeren naar Red Hat Enterprise Linux 7, 8 of 9. Als klanten Red Hat Enterprise Linux 6 moeten blijven gebruiken, raden we u aan de ELS-invoegtoepassing (Extended Life Cycle Support) voor Red Hat Enterprise Linux toe te voegen.

  1. Download de KVM-afbeelding van RHEL 6 van de Red Hat-website.

  2. Stel een hoofdwachtwoord in.

    Genereer een versleuteld wachtwoord en kopieer de uitvoer van de opdracht:

    sudo openssl passwd -1 changeme
    

    Stel een hoofdwachtwoord in met gastvis:

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

    Wijzig het tweede veld van de hoofdgebruiker van '!!' in het versleutelde wachtwoord.

  3. Maak een virtuele machine in KVM op basis van de qcow2-installatiekopieën. Stel het schijftype in op qcow2 en stel het apparaatmodel van de virtuele netwerkinterface in op virtio. Start vervolgens de virtuele machine en meld u aan als root.

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

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. 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
    
  6. Verplaats (of verwijder) de udev-regels om te voorkomen dat statische regels voor de Ethernet-interface worden gegenereerd. Deze regels veroorzaken problemen wanneer u een virtuele machine kloont in Azure of Hyper-V:

    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
    

Notitie

** Wanneer u versneld netwerken (AN) gebruikt, moet ik de synthetische interface die wordt gemaakt, worden geconfigureerd om onbeheerd te zijn met behulp van een udev-regel. Hierdoor voorkomt u dat NetworkManager hetzelfde IP-adres toewijst als de primaire interface.

Ga als volgende te werk om deze toe te passen:

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. Zorg ervoor dat de netwerkservice bij het opstarten wordt gestart door de volgende opdracht uit te voeren:

    sudo chkconfig network on
    
  2. Registreer uw Red Hat-abonnement om de installatie van pakketten vanuit de RHEL-opslagplaats in te schakelen door de volgende opdracht uit te voeren:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Wijzig de kernelstartregel in uw grub-configuratie om extra kernelparameters voor Azure op te nemen. Als u deze configuratie wilt uitvoeren, opent /boot/grub/menu.lst u deze in een teksteditor en zorgt u ervoor dat de standaardkernel de volgende parameters bevat:

    console=ttyS0 earlyprintk=ttyS0
    

    Dit zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen.

    Daarnaast raden we u aan de volgende parameters te verwijderen:

    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. U kunt desgewenst de crashkernel geconfigureerde optie laten staan. Houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de virtuele machine met 128 MB of meer vermindert, wat mogelijk problematisch is voor kleinere grootten van virtuele machines.

  4. Hyper-V-modules toevoegen aan initramfs:

    Bewerk /etc/dracut.confen voeg de volgende inhoud toe:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Bouw initramfs opnieuw:

    sudo dracut -f -v
    
  5. Cloud-init verwijderen:

    sudo yum remove cloud-init
    
  6. Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten:

    sudo chkconfig sshd on
    

    Wijzig /etc/ssh/sshd_config om de volgende regels op te nemen:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  7. Het WALinuxAgent-pakket, WALinuxAgent-<version>is naar de Red Hat-opslagplaats voor extra's gepusht. Schakel de opslagplaats extra's in door de volgende opdracht uit te voeren:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  8. Installeer de Azure Linux-agent door de volgende opdracht uit te voeren:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  9. De Azure Linux-agent kan automatisch wisselruimte configureren met behulp van de lokale resourceschijf die is gekoppeld aan de virtuele machine nadat de virtuele machine is ingericht in Azure. De lokale resourceschijf is een tijdelijke schijf en kan worden geleegd als de inrichting van de virtuele machine ongedaan wordt gemaakt. Nadat u de Azure Linux-agent in de vorige stap hebt geïnstalleerd, wijzigt u de volgende parameters in /etc/waagent.conf op de juiste manier:

    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. Maak de registratie van het abonnement ongedaan (indien nodig) door de volgende opdracht uit te voeren:

    sudo subscription-manager unregister
    
  11. Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden op inrichting in Azure:

    Notitie

    Als u een specifieke virtuele machine migreert en geen gegeneraliseerde installatiekopieën wilt maken, slaat u de inrichtingsstap over

    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. Sluit de virtuele machine in KVM af.

  13. Converteer de qcow2-installatiekopieën naar de VHD-indeling.

    Notitie

    Er is een bekende fout in qemu-img-versies >=2.2.1 die resulteert in een onjuist opgemaakte VHD. Het probleem is opgelost in QEMU 2.6. Het wordt aanbevolen om qemu-img 2.2.0 of lager te gebruiken of bij te werken naar 2.6 of hoger. Naslaginformatie: https://bugs.launchpad.net/qemu/+bug/1490611.

    Converteer eerst de afbeelding naar onbewerkte indeling:

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

    Zorg ervoor dat de grootte van de onbewerkte afbeelding is uitgelijnd met 1 MB. Als u dat niet doet, rondt u de grootte af om uit te lijnen met 1 MB:

    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
    

    Converteer de onbewerkte schijf naar een VHD met vaste grootte:

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

    Of met qemu versie 2.6+ kunt u de force_size optie opnemen:

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

RHEL 7 met KVM

  1. Download de KVM-afbeelding van RHEL 7 op de Website van Red Hat. In deze procedure wordt RHEL 7 gebruikt als voorbeeld.

  2. Stel een hoofdwachtwoord in.

    Genereer een versleuteld wachtwoord en kopieer de uitvoer van de opdracht:

    sudo openssl passwd -1 changeme
    

    Stel een hoofdwachtwoord in met gastvis:

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

    Wijzig het tweede veld van de hoofdgebruiker van '!!' in het versleutelde wachtwoord.

  3. Maak een virtuele machine in KVM op basis van de qcow2-installatiekopieën. Stel het schijftype in op qcow2 en stel het apparaatmodel van de virtuele netwerkinterface in op virtio. Start vervolgens de virtuele machine en meld u aan als root.

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

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. 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
    
  6. Zorg ervoor dat de netwerkservice bij het opstarten wordt gestart door de volgende opdracht uit te voeren:

    sudo systemctl enable network
    
  7. Registreer uw Red Hat-abonnement om de installatie van pakketten vanuit de RHEL-opslagplaats in te schakelen door de volgende opdracht uit te voeren:

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

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

    Deze opdracht zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen. Met de opdracht worden ook de nieuwe RHEL 7-naamconventies voor NIC's uitgeschakeld. Daarnaast raden we u aan de volgende parameters te verwijderen:

    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. U kunt desgewenst de crashkernel geconfigureerde optie laten staan. Houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de virtuele machine met 128 MB of meer vermindert, wat mogelijk problematisch is voor kleinere grootten van virtuele machines.

  9. 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
    
  10. Hyper-V-modules toevoegen aan initramfs.

    Inhoud bewerken /etc/dracut.conf en toevoegen:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Bouw initramfs opnieuw:

    sudo dracut -f -v
    
  11. Cloud-init verwijderen:

    sudo yum remove cloud-init
    
  12. Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten:

    sudo systemctl enable sshd
    

    Wijzig /etc/ssh/sshd_config om de volgende regels op te nemen:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. Het WALinuxAgent-pakket, WALinuxAgent-<version>is naar de Red Hat-opslagplaats voor extra's gepusht. Schakel de opslagplaats extra's in door de volgende opdracht uit te voeren:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  14. Installeer de Azure Linux-agent door de volgende opdracht uit te voeren:

    sudo yum install WALinuxAgent
    

    Schakel de waagent-service in:

    sudo systemctl enable waagent.service
    
  15. Installeer cloud-init. Volg de stappen in 'Een virtuele RHEL 7-machine voorbereiden vanuit Hyper-V-beheer', stap 12, 'Cloud-init installeren om de inrichting af te handelen'.

  16. Configuratie wisselen

    Maak geen wisselruimte op de besturingssysteemschijf. Volg de stappen in 'Een virtuele RHEL 7-machine voorbereiden vanuit Hyper-V-beheer', stap 13, 'Configuratie wisselen'

  17. Maak de registratie van het abonnement ongedaan (indien nodig) door de volgende opdracht uit te voeren:

    sudo subscription-manager unregister
    
  18. Inrichting ongedaan maken

    Volg de stappen in 'Een virtuele RHEL 7-machine voorbereiden vanuit Hyper-V-beheer', stap 15, 'Deprovision'

  19. Sluit de virtuele machine in KVM af.

  20. Converteer de qcow2-installatiekopieën naar de VHD-indeling.

    Notitie

    Er is een bekende fout in qemu-img-versies >=2.2.1 die resulteert in een onjuist opgemaakte VHD. Het probleem is opgelost in QEMU 2.6. Het wordt aanbevolen om qemu-img 2.2.0 of lager te gebruiken of bij te werken naar 2.6 of hoger. Naslaginformatie: https://bugs.launchpad.net/qemu/+bug/1490611.

    Converteer eerst de afbeelding naar onbewerkte indeling:

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

    Zorg ervoor dat de grootte van de onbewerkte afbeelding is uitgelijnd met 1 MB. Als u dat niet doet, rondt u de grootte af om uit te lijnen met 1 MB:

    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
    

    Converteer de onbewerkte schijf naar een VHD met vaste grootte:

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

    Of met qemu versie 2.6+ kunt u de force_size optie opnemen:

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

VMware

In deze sectie wordt beschreven hoe u een RHEL 6 - of RHEL 7-distributie van VMware voorbereidt.

Vereisten

In deze sectie wordt ervan uitgegaan dat u al een virtuele RHEL-machine in VMware hebt geïnstalleerd. Zie de installatiehandleiding voor VMware-gastbesturingssystemen voor meer informatie over het installeren van een besturingssysteem in VMware.

  • Wanneer u het Linux-besturingssysteem installeert, wordt u aangeraden standaardpartities te gebruiken in plaats van LVM. Dit is vaak de standaardinstelling voor veel installaties. Dit voorkomt conflicten met de LVM-naam met gekloonde virtuele machine, met name als een besturingssysteemschijf ooit moet worden gekoppeld aan een andere virtuele machine voor probleemoplossing. LVM of RAID kan indien gewenst worden gebruikt op gegevensschijven.
  • Configureer geen wisselpartitie op de schijf van het besturingssysteem. U kunt de Linux-agent configureren om een wisselbestand te maken op de tijdelijke resourceschijf. U vindt hier meer informatie over in de volgende stappen.
  • Wanneer u de virtuele harde schijf maakt, selecteert u Virtuele schijf opslaan als één bestand.

RHEL 6 met VMware

Belangrijk

Vanaf 30 november 2020 bereikt Red Hat Enterprise Linux 6 het einde van de onderhoudsfase. De onderhoudsfase wordt gevolgd door de verlengde levensduurfase. Omdat Red Hat Enterprise Linux 6 overstapt van de volledige/onderhoudsfasen, wordt het sterk aanbevolen om een upgrade uit te voeren naar Red Hat Enterprise Linux 7 of 8 of 9. Als klanten Red Hat Enterprise Linux 6 moeten blijven gebruiken, is het raadzaam om de invoegtoepassing Red Hat Enterprise Linux Extended Life Cycle Support (ELS) toe te voegen.

  1. In RHEL 6 kan NetworkManager de Azure Linux-agent verstoren. Verwijder dit pakket door de volgende opdracht uit te voeren:

    sudo rpm -e --nodeps NetworkManager
    
  2. Maak een bestand met de naam netwerk in de map /etc/sysconfig/ die de volgende tekst bevat:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  3. 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
    
  4. Verplaats (of verwijder) de udev-regels om te voorkomen dat statische regels voor de Ethernet-interface worden gegenereerd. Deze regels veroorzaken problemen wanneer u een virtuele machine kloont in Azure of Hyper-V:

    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
    

Notitie

** Wanneer u versneld netwerken (AN) gebruikt, moet ik de synthetische interface die wordt gemaakt, worden geconfigureerd om onbeheerd te zijn met behulp van een udev-regel. Hierdoor voorkomt u dat NetworkManager hetzelfde IP-adres toewijst als de primaire interface.

Ga als volgende te werk om deze toe te passen:

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. Zorg ervoor dat de netwerkservice bij het opstarten wordt gestart door de volgende opdracht uit te voeren:

    sudo chkconfig network on
    
  2. Registreer uw Red Hat-abonnement om de installatie van pakketten vanuit de RHEL-opslagplaats in te schakelen door de volgende opdracht uit te voeren:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  3. Het WALinuxAgent-pakket, WALinuxAgent-<version>is naar de Red Hat-opslagplaats voor extra's gepusht. Schakel de opslagplaats extra's in door de volgende opdracht uit te voeren:

    sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
    
  4. Wijzig de kernelstartregel in uw grub-configuratie om extra kernelparameters voor Azure op te nemen. U doet dit door in een teksteditor te openen /etc/default/grub en de GRUB_CMDLINE_LINUX parameter te bewerken. Voorbeeld:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
    

    Dit zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen. Daarnaast raden we u aan de volgende parameters te verwijderen:

    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. U kunt desgewenst de crashkernel geconfigureerde optie laten staan. Houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de virtuele machine met 128 MB of meer vermindert, wat mogelijk problematisch is voor kleinere grootten van virtuele machines.

  5. Hyper-V-modules toevoegen aan initramfs:

    Bewerk /etc/dracut.confen voeg de volgende inhoud toe:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Bouw initramfs opnieuw:

    sudo dracut -f -v
    
  6. 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
    
  7. Installeer de Azure Linux-agent door de volgende opdracht uit te voeren:

    sudo yum install WALinuxAgent
    sudo chkconfig waagent on
    
  8. Maak geen wisselruimte op de besturingssysteemschijf.

    De Azure Linux-agent kan automatisch wisselruimte configureren met behulp van de lokale resourceschijf die is gekoppeld aan de virtuele machine nadat de virtuele machine is ingericht in Azure. De lokale resourceschijf is een tijdelijke schijf en kan worden geleegd als de inrichting van de virtuele machine ongedaan wordt gemaakt. Nadat u de Azure Linux-agent in de vorige stap hebt geïnstalleerd, wijzigt u de volgende parameters op /etc/waagent.conf de juiste manier:

    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. Maak de registratie van het abonnement ongedaan (indien nodig) door de volgende opdracht uit te voeren:

    sudo subscription-manager unregister
    
  10. Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden op inrichting in Azure:

    Notitie

    Als u een specifieke virtuele machine migreert en geen gegeneraliseerde installatiekopieën wilt maken, slaat u de inrichtingsstap over.

    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. Sluit de virtuele machine af en converteer het VMDK-bestand naar een VHD-bestand.

    Notitie

    Er is een bekende fout in qemu-img-versies >=2.2.1 die resulteert in een onjuist opgemaakte VHD. Het probleem is opgelost in QEMU 2.6. Het wordt aanbevolen om qemu-img 2.2.0 of lager te gebruiken of bij te werken naar 2.6 of hoger. Naslaginformatie: https://bugs.launchpad.net/qemu/+bug/1490611.

    Converteer eerst de afbeelding naar onbewerkte indeling:

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

    Zorg ervoor dat de grootte van de onbewerkte afbeelding is uitgelijnd met 1 MB. Als u dat niet doet, rondt u de grootte af om uit te lijnen met 1 MB:

    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
    

    Converteer de onbewerkte schijf naar een VHD met vaste grootte:

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

    Of met qemu versie 2.6+ kunt u de force_size optie opnemen:

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

RHEL 7 met VMware

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

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  2. 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
    
  3. Zorg ervoor dat de netwerkservice bij het opstarten wordt gestart door de volgende opdracht uit te voeren:

    sudo systemctl enable network
    
  4. Registreer uw Red Hat-abonnement om de installatie van pakketten vanuit de RHEL-opslagplaats in te schakelen door de volgende opdracht uit te voeren:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Wijzig de kernelstartregel in uw grub-configuratie om extra 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. Voorbeeld:

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

    Deze configuratie zorgt er ook voor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen. Ook worden de nieuwe RHEL 7-naamconventies voor NIC's uitgeschakeld. Daarnaast raden we u aan de volgende parameters te verwijderen:

    rhgb quiet crashkernel=auto
    

    Grafische en stille laarzen zijn niet handig in een cloudomgeving waarin alle logboeken naar de seriële poort moeten worden verzonden. U kunt desgewenst de crashkernel geconfigureerde optie laten staan. Houd er rekening mee dat deze parameter de hoeveelheid beschikbaar geheugen in de virtuele machine met 128 MB of meer vermindert, wat mogelijk problematisch is voor kleinere grootten van virtuele machines.

  6. 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
    
  7. Hyper-V-modules toevoegen aan initramfs.

    Bewerken /etc/dracut.conf, inhoud toevoegen:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Bouw initramfs opnieuw:

    sudo dracut -f -v
    
  8. Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten. Deze instelling is meestal de standaardinstelling. Wijzig /etc/ssh/sshd_config dit om de volgende regel op te nemen:

    ClientAliveInterval 180
    
  9. Het WALinuxAgent-pakket, WALinuxAgent-<version>is naar de Red Hat-opslagplaats voor extra's gepusht. Schakel de opslagplaats extra's in door de volgende opdracht uit te voeren:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  10. Installeer de Azure Linux-agent door de volgende opdracht uit te voeren:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent.service
    
  11. Cloud-init installeren

    Volg de stappen in 'Een virtuele RHEL 7-machine voorbereiden vanuit Hyper-V-beheer', stap 12, 'Cloud-init installeren om de inrichting af te handelen'.

  12. Configuratie wisselen

    Maak geen wisselruimte op de besturingssysteemschijf. Volg de stappen in 'Een virtuele RHEL 7-machine voorbereiden vanuit Hyper-V-beheer', stap 13, 'Configuratie wisselen'

  13. Als u de registratie van het abonnement ongedaan wilt maken, voert u de volgende opdracht uit:

    sudo subscription-manager unregister
    
  14. Inrichting ongedaan maken

    Volg de stappen in 'Een virtuele RHEL 7-machine voorbereiden vanuit Hyper-V-beheer', stap 15, 'Deprovision'

  15. Sluit de virtuele machine af en converteer het VMDK-bestand naar de VHD-indeling.

    Notitie

    Er is een bekende fout in qemu-img-versies >=2.2.1 die resulteert in een onjuist opgemaakte VHD. Het probleem is opgelost in QEMU 2.6. Het wordt aanbevolen om qemu-img 2.2.0 of lager te gebruiken of bij te werken naar 2.6 of hoger. Naslaginformatie: https://bugs.launchpad.net/qemu/+bug/1490611.

    Converteer eerst de afbeelding naar onbewerkte indeling:

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

    Zorg ervoor dat de grootte van de onbewerkte afbeelding is uitgelijnd met 1 MB. Als u dat niet doet, rondt u de grootte af om uit te lijnen met 1 MB:

    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
    

    Converteer de onbewerkte schijf naar een VHD met vaste grootte:

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

    Of met qemu versie 2.6+ kunt u de force_size optie opnemen:

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

Kickstart-bestand

In deze sectie wordt beschreven hoe u een RHEL 7-distributie van een ISO voorbereidt met behulp van een kickstartbestand.

RHEL 7 uit een kickstart-bestand

  1. Maak een kickstartbestand met de volgende inhoud en sla het bestand op. Zie de Kickstart-installatiehandleiding voor meer informatie over de installatie van kickstarts.

    # 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. Plaats het kickstartbestand waar het installatiesysteem er toegang toe heeft.

  3. Maak in Hyper-V-beheer een nieuwe virtuele machine. Selecteer op de pagina Verbinding maken Virtuele harde schijf een virtuele harde schijf toevoegen en voltooi de wizard Nieuwe virtuele machine.

  4. Open de instellingen van de virtuele machine:

    1. Koppel een nieuwe virtuele harde schijf aan de virtuele machine. Zorg ervoor dat u VHD-indeling en vaste grootte selecteert.

    2. Bevestig de installatie-ISO aan het dvd-station.

    3. Stel het BIOS in om vanaf cd op te starten.

  5. Start de virtuele machine. Wanneer de installatiehandleiding wordt weergegeven, drukt u op Tab om de opstartopties te configureren.

  6. Voer aan inst.ks=<the location of the kickstart file> het einde van de opstartopties in en druk op Enter.

  7. Wacht tot de installatie is voltooid. Wanneer deze is voltooid, wordt de virtuele machine automatisch afgesloten. Uw Linux-VHD is nu klaar om te worden geüpload naar Azure.

Bekende problemen

Het Hyper-V-stuurprogramma kan niet worden opgenomen in de eerste RAM-schijf wanneer u een niet-Hyper-V-hypervisor gebruikt

In sommige gevallen bevatten Linux-installatieprogramma's mogelijk niet de stuurprogramma's voor Hyper-V in de eerste RAM-schijf (initrd of initramfs) tenzij Linux detecteert dat deze wordt uitgevoerd in een Hyper-V-omgeving.

Wanneer u een ander virtualisatiesysteem (dat wil weten VirtualBox, Xen, enzovoort) gebruikt om uw Linux-installatiekopieën voor te bereiden, moet u mogelijk initrd opnieuw bouwen om ervoor te zorgen dat ten minste de hv_vmbus en hv_storvsc kernelmodules beschikbaar zijn op de eerste RAM-schijf. Dit is een bekend probleem ten minste op systemen die zijn gebaseerd op de upstream Red Hat-distributie.

U kunt dit probleem oplossen door Hyper-V-modules toe te voegen aan initramfs en opnieuw te bouwen:

Bewerk /etc/dracut.confen voeg de volgende inhoud toe:

add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "

Bouw initramfs opnieuw:

sudo dracut -f -v

Zie de informatie over het herbouwen van initramfs voor meer informatie.

Volgende stappen