Een virtuele SLES- of openSUSE Leap-machine voorbereiden voor Azure

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

In sommige gevallen wilt u misschien aangepaste SUSE Linux Enterprise Server (SLES) of openSUSE Leap Linux virtuele machines (VM's) in uw Azure-omgeving gebruiken en deze typen VM's kunnen bouwen via automatisering. Dit artikel laat zien hoe u een aangepaste virtuele harde schijf (VHD) van Azure maakt en uploadt die een SUSE Linux-besturingssysteem bevat.

Vereisten

In dit artikel wordt ervan uitgegaan dat u al een SLES- of openSUSE Leap Linux-besturingssysteem op een virtuele harde schijf hebt geïnstalleerd. Er bestaan meerdere hulpprogramma's om VHD-bestanden te maken. U kunt bijvoorbeeld een virtualisatieoplossing zoals Hyper-V gebruiken. Zie Hyper-V installeren en een virtuele machine maken voor instructies.

SLES/openSUSE Leap-installatieopmerkingen

  • Zie algemene linux-installatieopmerkingen voor meer tips over het voorbereiden van Linux-installatiekopieën voor Azure.
  • Azure biedt geen ondersteuning voor Windows-hardeschijfinstallatiekopieën (.vhdx)-bestanden. Alleen VHD-bestanden (.vhd) worden ondersteund buiten virtuele machines. U kunt de schijf converteren naar VHD-indeling met Hyper-V-beheer of de Convert-VHD cmdlet.
  • ondersteuning voor Azure s Gen1 (BIOS boot) en Gen2 (UEFI boot) virtuele machines.
  • De VFAT-kernelmodule (Virtual File Allocation Table) moet zijn ingeschakeld in de kernel.
  • Configureer geen wisselpartitie op de besturingssysteemschijf. U kunt de Linux-agent configureren om een wisselbestand te maken op de tijdelijke resourceschijf. Stappen verderop in dit artikel geven meer informatie over het configureren van wisselruimte.
  • 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. Zie Algemene linux-installatieopmerkingen voor meer informatie.

Notitie

Cloud-init versie 21.2 of hoger verwijdert de door de gebruiker gedefinieerde functie (UDF) vereiste. Maar zonder dat de udf module is ingeschakeld, wordt de CD-ROM niet bevestigd tijdens het inrichten, waardoor de aangepaste gegevens niet kunnen worden toegepast. Een tijdelijke oplossing is het toepassen van gebruikersgegevens. In tegenstelling tot aangepaste gegevens worden gebruikersgegevens echter niet versleuteld. Zie de indelingen van gebruikersgegevens in de cloud-init-documentatie voor meer informatie.

SUSE Studio gebruiken

SUSE Studio kan eenvoudig uw SLES maken en beheren en openSUSE Leap-installatiekopieën voor Azure en Hyper-V. SUSE Studio is de aanbevolen methode voor het aanpassen van uw eigen SLES en openSUSE Leap-afbeeldingen.

Als alternatief voor het bouwen van uw eigen VHD publiceert SUSE ook BYOS-installatiekopieën (Bring Your Own Subscription) voor SLES op VM Depot.

SLES voorbereiden voor Azure

  1. Configureer indien nodig de Azure- en Hyper-V-modules.

    Als uw software hypervisor niet Hyper-V is, moeten andere modules worden toegevoegd aan de eerste RAM-schijf (initramfs) om te kunnen opstarten in Azure.

    Bewerk het bestand /etc/dracut.conf en voeg de volgende regel toe aan het bestand:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Voer de dracut opdracht uit om het initramfs-bestand opnieuw te bouwen:

    sudo dracut --verbose --force
    
  2. Stel de seriële console in.

    Als u met de seriële console wilt werken, moet u verschillende variabelen instellen in het /etc/defaults/grub-bestand en GRUB opnieuw maken op de server:

    # Add console=ttyS0 and earlyprintk=ttS0 to the variable.
    # Remove "splash=silent" and "quiet" options.
    GRUB_CMDLINE_LINUX_DEFAULT="audit=1 no-scroll fbcon=scrollback:0 mitigations=auto security=apparmor crashkernel=228M,high crashkernel=72M,low console=ttyS0 earlyprintk=ttyS0"
    
    # Add "console serial" to GRUB_TERMINAL.
    GRUB_TERMINAL="console serial"
    
    # Set the GRUB_SERIAL_COMMAND variable.
    
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    
    /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. Registreer uw SUSE Linux Enterprise-systeem zodat het updates kan downloaden en pakketten kan installeren.

  4. Werk het systeem bij met de nieuwste patches:

    sudo zypper update
    
  5. Installeer de Azure Linux VM Agent (waagent) en cloud-init:

    sudo SUSEConnect -p sle-module-public-cloud/15.2/x86_64  (SLES 15 SP2)
    sudo zypper refresh
    sudo zypper install python-azure-agent
    sudo zypper install cloud-init
    
  6. Inschakelen waagent en cloud-init starten bij opstarten:

    sudo systemctl enable  waagent
    sudo systemctl enable cloud-init-local.service
    sudo systemctl enable cloud-init.service
    sudo systemctl enable cloud-config.service
    sudo systemctl enable cloud-final.service
    sudo systemctl daemon-reload
    sudo cloud-init clean
    
  7. Werk de cloud-init-configuratie bij:

    cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    
    EOF
    
    sudo cat <<EOF | sudo tee  /etc/cloud/cloud.cfg.d/05_logging.cfg
    # 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
    
    # Make sure mounts and disk_setup are in the init stage:
    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
    
  8. Als u een wisselpartitie wilt koppelen, formatteren en maken, kunt u een cloud-init-configuratie doorgeven telkens wanneer u een virtuele machine maakt.

    Een andere optie is het gebruik van een cloud-init-instructie in de installatiekopieën om wisselruimte te configureren telkens wanneer de virtuele machine wordt gemaakt:

    cat  <<EOF | sudo tee -a /etc/systemd/system.conf
    'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"'
    EOF
    
    cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg
    #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.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    
  9. 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. Omdat cloud-init deze stap nu afhandelt, moet u de Azure Linux-agent niet gebruiken om de resourceschijf te formatteren of het wisselbestand te maken. Gebruik deze opdrachten om /etc/waagent.conf op de juiste manier te wijzigen:

    sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=auto/g' /etc/waagent.conf
    sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/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 cloud-init-versie gebruikt die ouder is dan 21.2, controleert u of de udf module is ingeschakeld. Als u het verwijdert of uitschakelt, treedt er een inrichtings- of opstartfout op. Cloud-init versie 21.2 of hoger verwijdert de UDF-vereiste.

  10. Zorg ervoor dat het bestand /etc/fstab verwijst naar de schijf met behulp van de UUID (by-uuid).

  11. Verwijder udev-regels en netwerkadapterconfiguratiebestanden om statische regels voor de Ethernet-interfaces te voorkomen. Deze regels kunnen problemen veroorzaken wanneer u een virtuele machine kloont in Microsoft Azure of Hyper-V.

    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    sudo rm -f /etc/udev/rules.d/85-persistent-net-cloud-init.rules
    sudo rm -f /etc/sysconfig/network/ifcfg-eth*
    
  12. U wordt aangeraden het bestand /etc/sysconfig/network/dhcp te bewerken en de DHCLIENT_SET_HOSTNAME parameter te wijzigen in het volgende:

    DHCLIENT_SET_HOSTNAME="no"
    
  13. Maak in het bestand /etc/sudoers commentaar of verwijder de volgende regels als deze bestaan:

    Defaults targetpw   # Ask for the password of the target user i.e. root
    ALL    ALL=(ALL) ALL   # WARNING! Only use this setting together with 'Defaults targetpw'!
    
  14. Zorg ervoor dat de SSH-server (Secure Shell) is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten:

    sudo systemctl enable sshd
    
  15. Schoon de cloud-init-fase op:

    sudo cloud-init clean --seed --logs
    
  16. Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden voor inrichting in Azure.

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

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

OpenSUSE 15.2+ voorbereiden

  1. Selecteer de virtuele machine in het middelste deelvenster van Hyper-V-beheer.

  2. Selecteer Verbinding maken om het venster voor de virtuele machine te openen.

  3. Voer in een terminal de opdracht zypper lruit. Als deze opdracht uitvoer retourneert die vergelijkbaar is met het volgende voorbeeld, worden de opslagplaatsen geconfigureerd zoals verwacht en zijn er geen aanpassingen nodig. (Versienummers kunnen variëren.)

    # Alias Naam Ingeschakeld Vernieuwen
    1 Cloud:Tools_15.2 Cloud:Tools_15.2 Ja Ja
    2 openSUSE_15.2_OSS openSUSE_15.2_OSS Ja Ja
    3 openSUSE_15.2_Updates openSUSE_15.2_Updates Ja Ja

    Als de opdracht 'Geen opslagplaatsen gedefinieerd' retourneert, gebruikt u de volgende opdrachten om deze opslagplaatsen toe te voegen:

    sudo zypper ar -f http://download.opensuse.org/repositories/Cloud:Tools/openSUSE_15.2 Cloud:Tools_15.2
    sudo zypper ar -f https://download.opensuse.org/distribution/15.2/repo/oss openSUSE_15.2_OSS
    sudo zypper ar -f http://download.opensuse.org/update/15.2 openSUSE_15.2_Updates
    

    Vervolgens kunt u controleren of de opslagplaatsen zijn toegevoegd door de opdracht zypper lr opnieuw uit te voeren. Als een van de relevante updateopslagplaatsen niet is ingeschakeld, schakelt u deze in met behulp van de volgende opdracht:

    sudo zypper mr -e [NUMBER OF REPOSITORY]
    
  4. Werk de kernel bij naar de meest recente beschikbare versie:

    sudo zypper up kernel-default
    

    Of werk het besturingssysteem bij met alle nieuwste patches:

    sudo zypper update
    
  5. Installeer de Azure Linux-agent:

    sudo zypper install WALinuxAgent
    
  6. Wijzig de kernelstartregel in uw GRUB-configuratie om andere kernelparameters voor Azure op te nemen. Hiervoor opent u /boot/grub/menu.lst in een teksteditor en zorgt u ervoor dat de standaardkernel de volgende parameters bevat:

     console=ttyS0 earlyprintk=ttyS0
    

    Deze optie zorgt ervoor dat alle consoleberichten worden verzonden naar de eerste seriële poort, die kan helpen ondersteuning voor Azure met foutopsporingsproblemen. Verwijder bovendien de volgende parameters uit de kernelstartregel als deze bestaan:

     libata.atapi_enabled=0 reserve=0x1f0,0x8
    
  7. U wordt aangeraden het bestand /etc/sysconfig/network/dhcp te bewerken en de DHCLIENT_SET_HOSTNAME parameter te wijzigen in de volgende instelling:

     DHCLIENT_SET_HOSTNAME="no"
    
  8. Voeg in het bestand /etc/sudoers de volgende regels uit of verwijder de volgende regels als deze bestaan. Dit is een belangrijke stap.

    Defaults targetpw   # ask for the password of the target user i.e. root
    ALL    ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!
    
  9. Zorg ervoor dat de SSH-server is geïnstalleerd en geconfigureerd om te starten tijdens het opstarten.

  10. 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 na inrichting in Azure. De lokale resourceschijf is een tijdelijke schijf en wordt geleegd wanneer de vm ongedaan wordt gemaakt.

    Nadat u de Azure Linux-agent hebt geïnstalleerd, wijzigt u de parameters in /etc/waagent.conf als volgt:

    ResourceDisk.Format=n
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=n
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set the size to whatever you need it to be.
    
  11. Zorg ervoor dat de Azure Linux-agent wordt uitgevoerd bij het opstarten:

    sudo systemctl enable waagent.service
    
  12. Voer de volgende opdrachten uit om de inrichting van de virtuele machine ongedaan te maken en deze voor te bereiden voor inrichting in Azure.

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

        sudo rm -f ~/.bash_history # Remove current user history
        sudo rm -rf /var/lib/waagent/
        sudo rm -f /var/log/waagent.log
        sudo waagent -force -deprovision+user
        sudo rm -f ~/.bash_history # Remove root user history
        sudo export HISTSIZE=0
    
  13. Selecteer Actie>afsluiten in Hyper-V-beheer.

Volgende stappen

U bent nu klaar om uw SUSE Linux-VHD te gebruiken om nieuwe virtuele machines te maken in Azure. Als dit de eerste keer is dat u het VHD-bestand uploadt naar Azure, raadpleegt u Een Virtuele Linux-machine maken vanaf een aangepaste schijf.