Förbereda en virtuell SLES- eller openSUSE Leap-dator för Azure

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️ gäller för: ✔️ Enhetliga skalningsuppsättningar

I vissa fall kanske du vill använda anpassad SUSE Linux Enterprise Server (SLES) eller openSUSE Leap Linux virtual machines (VM) i Din Azure-miljö och kunna skapa dessa typer av virtuella datorer via automatisering. Den här artikeln visar hur du skapar och laddar upp en anpassad virtuell Azure-hårddisk (VHD) som innehåller ett SUSE Linux-operativsystem.

Förutsättningar

Den här artikeln förutsätter att du redan har installerat ett SLES- eller openSUSE Leap Linux-operativsystem på en virtuell hårddisk. Det finns flera verktyg för att skapa VHD-filer. Du kan till exempel använda en virtualiseringslösning som Hyper-V. Anvisningar finns i Installera Hyper-V och skapa en virtuell dator.

Installationsanteckningar för SLES/openSUSE Leap

  • Fler tips om hur du förbereder Linux-avbildningar för Azure finns i Allmänna linux-installationsanteckningar.
  • Azure stöder inte Windows-hårddiskbildfiler (.vhdx). Endast VHD-filer (.vhd) stöds utanför virtuella datorer. Du kan konvertera disken till VHD-format med hjälp av Hyper-V Manager eller cmdleten Convert-VHD .
  • Azure stöder virtuella datorer med Gen1 (BIOS-start) och Gen2 (UEFI-start).
  • Kernelmodulen för virtuell filallokeringstabell (VFAT) måste vara aktiverad i kerneln.
  • Konfigurera inte en växlingspartition på OS-disken. Du kan konfigurera Linux-agenten för att skapa en växlingsfil på den tillfälliga resursdisken. Steg senare i den här artikeln ger mer information om hur du konfigurerar växlingsutrymme.
  • Alla virtuella hårddiskar i Azure måste ha en virtuell storlek som är justerad till 1 MB. När du konverterar från en rådisk till en virtuell hårddisk kontrollerar du att den råa diskstorleken är en multipel på 1 MB före konverteringen. Mer information finns i Allmänna linux-installationsanteckningar.

Kommentar

Cloud-init version 21.2 eller senare tar bort kravet på användardefinierad funktion (UDF). Men utan att modulen udf är aktiverad monteras inte CD-ROM under etableringen, vilket förhindrar att anpassade data tillämpas. En lösning är att tillämpa användardata. Men till skillnad från anpassade data krypteras inte användardata. Mer information finns i Användardataformat i dokumentationen för cloud-init.

Använda SUSE Studio

SUSE Studio kan enkelt skapa och hantera dina SLES- och openSUSE Leap-avbildningar för Azure och Hyper-V. SUSE Studio är den rekommenderade metoden för att anpassa dina egna SLES- och openSUSE Leap-bilder.

Som ett alternativ till att skapa en egen virtuell hårddisk publicerar SUSE även BYOS-avbildningar (bring your own subscription) för SLES på VM Depot.

Förbereda SLES för Azure

  1. Konfigurera Azure- och Hyper-V-modulerna om det behövs.

    Om programhypervisor-programmet inte är Hyper-V måste andra moduler läggas till i den första RAM-disken (initramfs) för att kunna starta i Azure.

    Redigera filen /etc/dracut.conf och lägg till följande rad i filen:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    dracut Kör kommandot för att återskapa initramfs-filen:

    sudo dracut --verbose --force
    
  2. Konfigurera seriekonsolen.

    Om du vill arbeta med seriekonsolen måste du konfigurera flera variabler i filen /etc/defaults/grub och återskapa GRUB på servern:

    # 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. Registrera ditt SUSE Linux Enterprise-system så att det kan ladda ned uppdateringar och installera paket.

  4. Uppdatera systemet med de senaste korrigeringarna:

    sudo zypper update
    
  5. Installera Azure Linux VM Agent (waagent) och 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. Aktivera waagent och cloud-init för att starta vid start:

    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. Uppdatera cloud-init-konfigurationen:

    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. Om du vill montera, formatera och skapa en växlingspartition är ett alternativ att skicka in en cloud-init-konfiguration varje gång du skapar en virtuell dator.

    Ett annat alternativ är att använda ett cloud-init-direktiv i avbildningen för att konfigurera växlingsutrymme varje gång den virtuella datorn skapas:

    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. Tidigare användes Azure Linux-agenten för att automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisken som är ansluten till den virtuella datorn efter att den virtuella datorn har etablerats i Azure. Eftersom cloud-init nu hanterar det här steget får du inte använda Azure Linux-agenten för att formatera resursdisken eller skapa växlingsfilen. Använd dessa kommandon för att ändra /etc/waagent.conf på rätt sätt:

    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
    

    Kommentar

    Om du använder en tidigare version av cloud-init än 21.2 kontrollerar du att modulen udf är aktiverad. Om du tar bort eller inaktiverar det orsakas ett etablerings- eller startfel. Cloud-init version 21.2 eller senare tar bort UDF-kravet.

  10. Kontrollera att filen /etc/fstab refererar till disken med hjälp av dess UUID (by-uuid).

  11. Ta bort udev-regler och konfigurationsfiler för nätverkskort för att undvika att generera statiska regler för Ethernet-gränssnitten. Dessa regler kan orsaka problem när du klonar en virtuell dator i Microsoft Azure eller 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. Vi rekommenderar att du redigerar filen /etc/sysconfig/network/dhcp och ändrar parametern DHCLIENT_SET_HOSTNAME till följande:

    DHCLIENT_SET_HOSTNAME="no"
    
  13. I filen /etc/sudoers kommenterar du ut eller tar bort följande rader om de finns:

    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. Kontrollera att SSH-servern (Secure Shell) är installerad och konfigurerad för start:

    sudo systemctl enable sshd
    
  15. Rensa moln-init-fasen:

    sudo cloud-init clean --seed --logs
    
  16. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure.

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.

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

Förbered openSUSE 15.2+

  1. I mittenfönstret i Hyper-V Manager väljer du den virtuella datorn.

  2. Välj Anslut för att öppna fönstret för den virtuella datorn.

  3. Kör kommandot zypper lri en terminal . Om det här kommandot returnerar utdata som liknar följande exempel konfigureras lagringsplatserna som förväntat och inga justeringar krävs. (Versionsnummer kan variera.)

    # Alias Name Aktiverat Uppdatera
    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_Uppdateringar openSUSE_15.2_Uppdateringar Ja Ja

    Om kommandot returnerar "Inga definierade lagringsplatser" använder du följande kommandon för att lägga till dessa lagringsplatser:

    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
    

    Du kan sedan kontrollera att lagringsplatserna har lagts till genom att köra kommandot zypper lr igen. Om någon av de relevanta uppdateringslagringsplatserna inte är aktiverad aktiverar du den med hjälp av följande kommando:

    sudo zypper mr -e [NUMBER OF REPOSITORY]
    
  4. Uppdatera kerneln till den senaste tillgängliga versionen:

    sudo zypper up kernel-default
    

    Eller uppdatera operativsystemet med alla de senaste korrigeringarna:

    sudo zypper update
    
  5. Installera Azure Linux-agenten:

    sudo zypper install WALinuxAgent
    
  6. Ändra startraden för kernel i GRUB-konfigurationen så att den innehåller andra kernelparametrar för Azure. Det gör du genom att öppna /boot/grub/menu.lst i en textredigerare och se till att standardkärnan innehåller följande parametrar:

     console=ttyS0 earlyprintk=ttyS0
    

    Det här alternativet säkerställer att alla konsolmeddelanden skickas till den första serieporten, vilket kan hjälpa Azure-supporten med felsökningsproblem. Ta dessutom bort följande parametrar från kernel-startraden om de finns:

     libata.atapi_enabled=0 reserve=0x1f0,0x8
    
  7. Vi rekommenderar att du redigerar filen /etc/sysconfig/network/dhcp och ändrar parametern DHCLIENT_SET_HOSTNAME till följande inställning:

     DHCLIENT_SET_HOSTNAME="no"
    
  8. I filen /etc/sudoers kommenterar du ut eller tar bort följande rader om de finns. Det här är ett viktigt steg.

    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. Kontrollera att SSH-servern är installerad och konfigurerad att starta vid start.

  10. Skapa inte växlingsutrymme på OS-disken.

    Azure Linux-agenten kan automatiskt konfigurera växlingsutrymme med hjälp av den lokala resursdisk som är ansluten till den virtuella datorn efter etableringen i Azure. Den lokala resursdisken är en tillfällig disk och töms när den virtuella datorn avetableras.

    När du har installerat Azure Linux-agenten ändrar du parametrarna i /etc/waagent.conf på följande sätt:

    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. Se till att Azure Linux-agenten körs vid start:

    sudo systemctl enable waagent.service
    
  12. Kör följande kommandon för att avetablera den virtuella datorn och förbereda den för etablering i Azure.

    Om du migrerar en specifik virtuell dator och inte vill skapa en generaliserad avbildning hoppar du över avetableringssteget.

        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. Välj Åtgärden>stängs av i Hyper-V Manager.

Nästa steg

Nu är du redo att använda din virtuella SUSE Linux-hårddisk för att skapa nya virtuella datorer i Azure. Om det är första gången du laddar upp VHD-filen till Azure läser du Skapa en virtuell Linux-dator från en anpassad disk.