GNU/Linux >> Znalost Linux >  >> Linux

Vytvoření přizpůsobené image Red Hat Enterprise Linux 7 pro Microsoft Azure

Plánujete provozovat Red Hat Enterprise Linux (RHEL) v Azure, nebo o tom uvažujete, ale chcete si vytvořit vlastní image? V tomto článku se zaměřím na vytvoření bitové kopie RHEL 7 pro spuštění v instancích Azure Mv2 (aka Hyper-V Generation 2). Hlavní rozdíl oproti standardnímu obrázku je v tom, že použijete Unified Extensible Firmware Interface (UEFI), a proto jsou vyžadovány další možnosti.

Kromě hlavního zaměření na Mv2 vám také poskytnu dobrou úvodní sadu příkazů, abyste mohli automatizovat proces vytváření těchto obrazů a případně tento proces integrovat do vašeho kanálu CI/CD.

Většina těchto pokynů by měla být použitelná také pro vytváření obrazů Red Hat Enterprise Linux 8, ale tato verze nebyla mým hlavním cílem.

Nastavení prostředí

Jako prostředí sestavení nám Red Hat Enterprise Linux 8 poskytuje správnou sadu nástrojů pro vytváření spouštěcích obrazů UEFI. Abyste zde mohli vše reprodukovat, budete potřebovat nainstalované následující balíčky:

  • libvirt-client
  • virt-install
  • libvirt
  • libvirt-daemon-kvm
  • azure-cli (návod zde)
  • azcopy (pokyny zde) v $PATH (např. /usr/bin/ nebo ~/bin/ )

Budete také potřebovat kopii disku DVD s binárními soubory Red Hat Enterprise Linux 7.7, které si můžete stáhnout zde, pokud máte platné předplatné Red Hat. Uložte toto DVD jako /var/lib/libvirt/images/rhel-server-7.7-x86_64-dvd.iso .

Poznámka: Jakákoli jiná verze Red Hat Enterprise Linux 7 nebo 8 by to měla dělat, ale tento návod byl testován s 7.7.

Aby výše uvedené fungovalo, pokud používáte virtuální počítač, musíte na hostiteli povolit KVM nebo jej předat virtuálnímu počítači. Pokud chcete spustit tento příklad na vzdáleném virtuálním počítači nebo v jiném kanálu CI/CD, udělal jsem přesně to, abych byl schopen automatizovat proces, takže můžete spustit tento bezhlavý (bez X, grafického uživatelského rozhraní a X je potřeba přesměrování).

Vytváření obrazu automatizovaným způsobem

Potřebujeme několik balíčků nainstalovaných v naší bitové kopii plus sadu konfigurací a doporučujeme mít nainstalovaného klienta Azure. Zatímco jsem hledal nejlepší způsob, jak nainstalovat tohoto klienta automatizovaným způsobem, jedinou možností, kterou jsem našel, bylo získat jej z úložiště CentOS 7 extras (obraťte se na mě a dejte mi vědět, pokud znáte lepší způsob).

Ukázka kickstart.cfg soubor lze získat zde. Přizpůsobte jej svým potřebám, ale ujistěte se, že ponechte alespoň konfiguraci sítě nastavenou na DHCP.

Vytvoření obrazu pomocí souboru Kickstart a jednoduchého příkazu

Postup vytvoření obrázku: 

$ sudo virt-install \
       --name rhel77 \
       --memory 4096 \
       --vcpus 4 \
       --boot uefi \
       --os-variant rhel7.7 \
       -l /var/lib/libvirt/images/rhel-server-7.7-x86_64-dvd.iso \
       --disk size=4 \
       --initrd-inject $(pwd)/kickstart.cfg \
       --extra-args="ks=file:/kickstart.cfg console=tty0 console=ttyS0,115200n8" \
       --graphics=none \
       --network network=default \
       --noreboot

Jak je uvedeno výše, budete muset mít obraz DVD na správném místě. Můj příklad předpokládá, že:

  • Mějte kickstart.cfg ve vašem aktuálním $PWD .
  • Chcete 4GB disk.
  • Používáte místní libvirt /KVM nainstalovat.
  • Nemám žádné zvláštní požadavky na síťové rozhraní (používám výchozí nastavení).

Převedení obrázku do správného formátu

Snažil jsem se převést obrázek do správného formátu, ale s přátelskými kolegy a společností Google jsem nakonec přišel na požadovaný formát:VHD zarovnané na 1 MB.

Poslední vytvořený obrázek by měl být správný:

$ image=$(ls -1tr /var/lib/libvirt/images/rhel*|tail -1)

Použijte sudo pro přístup k obrázku, převeďte jej do RAW a vložte jej do aktuálního $PWD

$ sudo qemu-img convert -f qcow2 -O raw $image rhel-7.7.raw

Ujistěte se, že k němu máme přístup – po tomto okamžiku „normální“ (např. může pokračovat používání bez oprávnění root)

$ sudo chown $(whoami) *.raw

Vypočítejte velikost obrázku.

$ MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.7.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB))

Změňte velikost obrázku.

$ sudo qemu-img resize -f raw rhel-7.7.raw $rounded_size

Převeďte obrázek z RAW do VHD a vynucení správné velikosti

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

Vytvoření skupiny

Nyní máte svůj vlastní přizpůsobený obraz Red Hat Enterprise Linux 7. Pravděpodobně vás zajímá, jak to nahrát do Azure a použít ke spuštění instance. Čtěte dále. Protože jsem musel otestovat celý proces sestavování, udělal jsem to také.

Vždy budete potřebovat skupinu prostředků v Azure. Vybral jsem westus2 jako můj region, ale každý jiný by to měl dělat také (pokud mají instance Mv2). Název mé skupiny prostředků je jednoduše myresourcegroup . Pokud chcete použít jiné jméno, budete ho muset nahradit všude, kde jsem ho použil.

Chcete-li vytvořit svou skupinu, vytvořte skupinu prostředků AZ ve westus2 a pojmenujte ji „myresourcegroup“.

$ sudo az group create -l westus2 -n myresourcegroup

Nahrání bitové kopie disku a vytvoření bitové kopie Azure

Chcete-li nahrát bitovou kopii disku a vytvořit z ní bitovou kopii Azure, vytvořte disk v Azure s názvem ‚rhel-7‘ v naší dříve vytvořené skupině prostředků ‚myresourcegroup‘.

$ sudo az disk delete --name rhel-7 -g myresourcegroup -y

Ujistěte se, že se jedná o Hyper-V Gen 2 a operační systém typu Linux se správnou velikostí.

$ sudo az disk create --hyper-v-generation V2 -g myresourcegroup -n rhel-7 --os-type Linux -l westus2 --for-upload --upload-size-bytes $(wc -c rhel-7.7.vhd|awk '{ print $1 }') --sku standard_lrs

K nahrání potřebujete SASURI.

$ SASURI=$(az disk grant-access -n rhel-7 -g myresourcegroup --access-level Write --duration-in-seconds 86400 --query [accessSas] -o tsv)

Toto používá azcopy zkopírujte obrázek (azcopy musí být ve vaší $PATH někde)

$ sudo azcopy $(pwd)/rhel-7.7.vhd $SASURI --blob-type PageBlob

Po dokončení nahrávání musíme zrušit přístup, jinak nelze obraz disku použít.

$ sudo az disk revoke-access -n rhel-7 -g myresourcegroup

Nakonec jej označte jako Hyper-V, Gen 2 OS image.

$ sudo az image create -g myresourcegroup -n rhel-7 --os-type Linux --hyper-v-generation V2 --source rhel-7

Spuštění obrázku

Člověk by si představoval, že v tomto okamžiku bylo vše jasné a spuštění obrazu by bylo snadné. Pokud máte vše správně na svém místě, ano, je to pravda. Ale když jsem prošel tímto příkladem, úplně jsem zapomněl na poslední krok v předchozím odstavci a neoznačil obraz disku jako obraz Azure, což vedlo k tomu, že jsem nemohl poskytnout klíč SSH nebo admin-username .

Každopádně s výše uvedenými pokyny byste měli být připraveni spustit obrázek. Následující příkaz předpokládá, že tento nástroj spouštíte jako uživatel root a používáte klíč SSH uživatele root. Přizpůsobte to, co zde mám, svým potřebám:

$ sudo az vm create  \
      --resource-group myresourcegroup \
      --location westus2 \
      --name rhel-7 \
      --image rhel-7 \
      --admin-username cloud-user \
      --ssh-key-value @/root/.ssh/id_rsa.pub

Pokud potřebujete diagnostiku spouštění, budete si muset vytvořit takzvaný účet úložiště s názvem „storageaccount123“ pomocí následujícího příkazu:

$ sudo az storage account create -n storageaccount123 -g myresourcegroup -l westus2 --sku Standard_LRS

Výše uvedený az vm create příkaz musí být rozšířen o následující parametr, aby bylo možné protokolovat diagnostiku spouštění a zprávy do účtu úložiště, který jsme právě vytvořili:

--boot-diagnostics-storage storageaccount123

Poznámka: Nemusíte aktivovat diagnostiku spouštění, a pokud ano, určitě budete muset upravit název účtu úložiště.

Přihlášení k instanci Azure

Z az vm create příkazu, měli byste získat výstup obsahující IP adresu. Nyní byste měli být schopni se přihlásit automaticky, protože klíč SSH je poskytován s:

$ ssh cloud-user@<azure-ip>

Uzavření

Než jsem prozkoumal možnosti automatizovaného vytváření image Red Hat Enterprise Linux 7 pro instance Azure Mv2, neměl jsem žádné předchozí zkušenosti s Azure, a proto to byla docela cesta. Stále bych se nepovažoval za odborníka, pokud jde o Azure, a pravděpodobně tam věci chybí. Rád bych slyšel vaše názory na vylepšení tohoto nastavení, pokud to bude nutné.

Skripty a příkazy, které jsem použil pro tento článek, naleznete zde. Žádosti o stažení jsou vítány, stejně jako klony!

Chcete vyzkoušet Red Hat Enterprise Linux? Stáhněte si ji nyní zdarma.


Linux
  1. Optimalizace obrazu ISO instalace Red Hat Enterprise Linux

  2. Jak získat zdarma Red Hat Enterprise Linux?

  3. Co je Red Hat Linux?

  1. Nainstalujte Red Hat Enterprise Linux v grafickém režimu

  2. Nainstalujte Red Hat Enterprise Linux v textovém režimu

  3. Instalace IBM DB2 na Red Hat Enterprise Linux

  1. Zaregistrujte si Red Hat Enterprise Linux a připojte předplatné s Ansible

  2. Konfigurace IPv6 adresy v Red Hat Enterprise Linux 7 a 8

  3. Co je třeba zvážit při spuštění Red Hat Enterprise Linux v Azure