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.