Sdílet prostřednictvím


Příprava virtuálního počítače SLES nebo openSUSE Leap pro Azure

Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Linuxem platí pro: ✔️ Jednotné škálovací sady

V některých případech můžete ve svém prostředí Azure použít přizpůsobené virtuální počítače SUSE Linux Enterprise Server (SLES) nebo openSUSE Leap Linux a tyto typy virtuálních počítačů vytvářet prostřednictvím automatizace. Tento článek ukazuje, jak vytvořit a nahrát vlastní virtuální pevný disk Azure (VHD), který obsahuje operační systém SUSE Linux.

Požadavky

Tento článek předpokládá, že jste již nainstalovali operační systém SLES nebo openSUSE Leap Linux na virtuální pevný disk. Existuje několik nástrojů pro vytvoření souborů .vhd. Můžete například použít virtualizační řešení, jako je Hyper-V. Pokyny najdete v tématu Instalace technologie Hyper-V a vytvoření virtuálního počítače.

Poznámky k instalaci SLES/openSUSE Leap

  • Další tipy k přípravě imagí Linuxu pro Azure najdete v obecných poznámkách k instalaci Linuxu.
  • Azure nepodporuje soubory pevného disku s Windows (.vhdx). Mimo virtuální počítače se podporují jenom soubory VHD (.vhd). Disk můžete převést na formát VHD pomocí Správce technologie Hyper-V nebo rutiny Convert-VHD .
  • podpora Azure s Gen1 (spouštění systému BIOS) a virtuální počítače Gen2 (spouštění UEFI).
  • Modul jádra virtuální tabulky přidělování souborů (VFAT) musí být v jádru povolený.
  • Nenakonfigurujte prohození oddílu na disku s operačním systémem. Agenta s Linuxem můžete nakonfigurovat tak, aby na dočasném disku prostředku vytvořil prohození souboru. Další informace o konfiguraci prohození prostoru najdete dále v tomto článku.
  • Všechny virtuální pevné disky v Azure musí mít virtuální velikost zarovnanou na 1 MB. Při převodu z nezpracovaného disku na virtuální pevný disk se ujistěte, že před převodem je velikost nezpracovaného disku násobkem 1 MB. Další informace najdete v tématu Obecné poznámky k instalaci linuxu.

Poznámka:

Cloud-init verze 21.2 nebo novější odebere požadavek uživatelem definované funkce (UDF). udf Bez povolení modulu se ale disk CD-ROM během zřizování nepřipevní, což zabrání použití vlastních dat. Alternativním řešením je použít uživatelská data. Na rozdíl od vlastních dat se ale uživatelská data nešifrují. Další informace najdete v tématu Formáty dat uživatele v dokumentaci ke cloud-init.

Použití aplikace SUSE Studio

SUSE Studio umožňuje snadno vytvářet a spravovat image SLES a openSUSE Leap pro Azure a Hyper-V. SUSE Studio je doporučený postup pro přizpůsobení vlastních imagí SLES a openSUSE Leap.

Jako alternativu k vytvoření vlastního virtuálního pevného disku publikuje SUSE také image BYOS (přineste si vlastní předplatné) pro SLES na webu VM Depot.

Příprava SLES pro Azure

  1. V případě potřeby nakonfigurujte moduly Azure a Hyper-V.

    Pokud váš softwarový hypervisor není Hyper-V, je potřeba do počátečního disku RAM (initramfs) přidat další moduly, aby bylo možné úspěšně spustit v Azure.

    Upravte soubor /etc/dracut.conf a přidejte do souboru následující řádek:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    Spuštěním dracut příkazu znovu sestavte soubor initramfs:

    sudo dracut --verbose --force
    
  2. Nastavte sériovou konzolu.

    Chcete-li úspěšně pracovat se sériovou konzolou, musíte v souboru /etc/defaults/grub nastavit několik proměnných a znovu vytvořit GRUB na serveru:

    # 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. Zaregistrujte si systém SUSE Linux Enterprise, aby mohl stahovat aktualizace a instalovat balíčky.

  4. Aktualizujte systém nejnovějšími opravami:

    sudo zypper update
    
  5. Nainstalujte agenta virtuálního počítače Azure s Linuxem (waagent) a 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. Povolení waagent a spuštění cloud-init při spuštění:

    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. Aktualizace konfigurace cloud-init:

    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. Pokud chcete připojit, formátovat a vytvořit prohození oddílu, je jednou z možností předání konfigurace cloud-init při každém vytvoření virtuálního počítače.

    Další možností je použít direktivu cloud-init v imagi ke konfiguraci prohození prostoru při každém vytvoření virtuálního počítače:

    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. Dříve se k automatické konfiguraci prohození prostoru použil agent Azure Linux pomocí místního disku prostředku připojeného k virtuálnímu počítači po zřízení virtuálního počítače v Azure. Vzhledem k tomu, že cloud-init teď tento krok zpracovává, není nutné použít agenta Azure Linux k naformátování disku prostředku nebo vytvoření prohození souboru. Pomocí těchto příkazů odpovídajícím způsobem upravte /etc/waagent.conf :

    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
    

    Poznámka:

    Pokud používáte verzi cloud-init starší než 21.2, ujistěte se, že udf je modul povolený. Odebrání nebo zakázání způsobí selhání zřizování nebo spuštění. Cloud-init verze 21.2 nebo novější odebere požadavek na UDF.

  10. Ujistěte se, že soubor /etc/fstab odkazuje na disk pomocí jeho UUID (by-uuid).

  11. Odeberte udev pravidla a konfigurační soubory síťových adaptérů, abyste se vyhnuli generování statických pravidel pro ethernetová rozhraní. Tato pravidla můžou způsobovat problémy při klonování virtuálního počítače v Microsoft Azure nebo 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. Doporučujeme upravit soubor /etc/sysconfig/network/dhcp a změnit DHCLIENT_SET_HOSTNAME parametr na následující:

    DHCLIENT_SET_HOSTNAME="no"
    
  13. V souboru /etc/sudoers zakomentujte nebo odeberte následující řádky, pokud existují:

    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. Ujistěte se, že je server SSH (Secure Shell) nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění:

    sudo systemctl enable sshd
    
  15. Vyčištění fáze cloud-init:

    sudo cloud-init clean --seed --logs
    
  16. Spuštěním následujících příkazů zrušte zřízení virtuálního počítače a připravte ho na zřízení v Azure.

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení.

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

Příprava openSUSE 15.4 nebo novější

  1. V prostředním podokně Správce technologie Hyper-V vyberte virtuální počítač.

  2. Výběrem možnosti Připojit otevřete okno virtuálního počítače.

  3. V terminálu spusťte příkaz zypper lr. Pokud tento příkaz vrátí výstup podobný následujícímu příkladu, úložiště se nakonfigurují podle očekávání a nejsou potřeba žádné úpravy. (Čísla verzí se mohou lišit.)

    # Alias Název Povoleno Kontrola gpg Aktualizovat
    0 Cloud:Tools_15.4 Cloud:Tools-> Ano (r) Ano Ano
    2 openSUSE_stable_OSS openSUSE_st-> Ano (r) Ano Ano
    3 openSUSE_stable_Updates openSUSE_st-> Ano (r) Ano Ano

    Pokud se v úložištích zobrazí zypper lr zpráva "Nejsou definována žádná úložiště", musí být přidána ručně.

    Níže jsou uvedeny příklady příkazů pro přidání těchto úložišť (verze a odkazy se mohou lišit):

    sudo zypper ar -f https://download.opensuse.org/update/openSUSE-stable openSUSE_stable_Updates
    sudo zypper ar -f https://download.opensuse.org/repositories/Cloud:/Tools/15.4 Cloud:Tools_15.4
    sudo zypper ar -f https://download.opensuse.org/distribution/openSUSE-stable/repo/oss openSUSE_stable_OSS
    

    Potom můžete ověřit, že úložiště byla přidána opětovným spuštěním příkazu zypper lr . Pokud některé z příslušných úložišť aktualizací není povolené, povolte ho pomocí následujícího příkazu:

    sudo zypper mr -e [NUMBER OF REPOSITORY]
    
  4. Aktualizujte jádro na nejnovější dostupnou verzi:

    sudo zypper up kernel-default
    

    Nebo aktualizujte operační systém všemi nejnovějšími opravami:

    sudo zypper update
    
  5. Nainstalujte agenta Azure Linux:

    sudo zypper install WALinuxAgent
    
  6. Upravte spouštěcí řádek jádra v konfiguraci GRUB tak, aby zahrnoval další parametry jádra pro Azure. Uděláte to tak, že v textovém editoru otevřete /boot/grub/menu.lst a zajistíte, aby výchozí jádro obsahovalo následující parametry:

    console=ttyS0 earlyprintk=ttyS0
    

    Tato možnost zajišťuje, aby se všechny zprávy konzoly odesílaly na první sériový port, což může pomoct podpora Azure s laděním problémů. Kromě toho odeberte z spouštěcího řádku jádra následující parametry, pokud existují:

     libata.atapi_enabled=0 reserve=0x1f0,0x8
    
  7. Doporučujeme upravit soubor /etc/sysconfig/network/dhcp a změnit DHCLIENT_SET_HOSTNAME parametr na následující nastavení:

     DHCLIENT_SET_HOSTNAME="no"
    
  8. V souboru /etc/sudoers okomentujte nebo odeberte následující řádky, pokud existují. Toto je důležitý krok.

    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. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění.

  10. Nevytvávejte místo prohození na disku s operačním systémem.

    Agent Azure Linux může automaticky nakonfigurovat prohození místa pomocí disku místního prostředku připojeného k virtuálnímu počítači po zřízení v Azure. Místní disk prostředku je dočasný disk a při zrušení zřízení virtuálního počítače se vyprázdní.

    Po instalaci agenta Azure Linux upravte parametry v souboru /etc/waagent.conf následujícím způsobem:

    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. Ujistěte se, že agent Azure Linux běží při spuštění:

    sudo systemctl enable waagent.service
    
  12. Spuštěním následujících příkazů zrušte zřízení virtuálního počítače a připravte ho na zřízení v Azure.

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení.

    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. Ve Správci technologie Hyper-V vyberte akci>vypnout.

Další kroky

Teď jste připraveni použít virtuální pevný disk SUSE Linux k vytvoření nových virtuálních počítačů v Azure. Pokud soubor .vhd nahráváte do Azure poprvé, přečtěte si téma Vytvoření virtuálního počítače s Linuxem z vlastního disku.