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
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
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
Zaregistrujte si systém SUSE Linux Enterprise, aby mohl stahovat aktualizace a instalovat balíčky.
Aktualizujte systém nejnovějšími opravami:
sudo zypper update
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
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
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
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
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.Ujistěte se, že soubor /etc/fstab odkazuje na disk pomocí jeho UUID (
by-uuid
).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*
Doporučujeme upravit soubor /etc/sysconfig/network/dhcp a změnit
DHCLIENT_SET_HOSTNAME
parametr na následující:DHCLIENT_SET_HOSTNAME="no"
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'!
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
Vyčištění fáze cloud-init:
sudo cloud-init clean --seed --logs
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ší
V prostředním podokně Správce technologie Hyper-V vyberte virtuální počítač.
Výběrem možnosti Připojit otevřete okno virtuálního počítače.
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]
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
Nainstalujte agenta Azure Linux:
sudo zypper install WALinuxAgent
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
Doporučujeme upravit soubor /etc/sysconfig/network/dhcp a změnit
DHCLIENT_SET_HOSTNAME
parametr na následující nastavení:DHCLIENT_SET_HOSTNAME="no"
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'!
Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění.
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.
Ujistěte se, že agent Azure Linux běží při spuštění:
sudo systemctl enable waagent.service
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
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.