GNU/Linux >> Belajar Linux >  >> Linux

Membangun image Red Hat Enterprise Linux 7 yang disesuaikan untuk Microsoft Azure

Apakah Anda berencana untuk menjalankan Red Hat Enterprise Linux (RHEL) di Azure, atau sedang mempertimbangkannya, tetapi Anda ingin membuat gambar sendiri? Dalam artikel ini, saya akan fokus membuat image RHEL 7 untuk dijalankan pada instance Azure Mv2 (alias Hyper-V Generation 2). Perbedaan utama dari gambar standar adalah Anda akan menggunakan Unified Extensible Firmware Interface (UEFI), dan oleh karena itu diperlukan opsi tambahan.

Terlepas dari fokus utama pada Mv2, saya juga akan memberi Anda serangkaian perintah awal yang baik sehingga Anda dapat mengotomatiskan proses pembuatan gambar tersebut dan akhirnya mengintegrasikan proses itu ke dalam saluran CI/CD Anda.

Sebagian besar petunjuk ini juga harus berlaku untuk membuat image Red Hat Enterprise Linux 8, tetapi versi itu bukanlah fokus utama saya.

Menyiapkan lingkungan

Sebagai lingkungan build, Red Hat Enterprise Linux 8 memberi kami seperangkat alat yang benar untuk membangun image yang dapat di-boot UEFI. Untuk mereproduksi semuanya di sini, Anda perlu menginstal paket-paket berikut:

  • libvirt-client
  • virt-install
  • libvirt
  • libvirt-daemon-kvm
  • azure-cli (petunjuk di sini)
  • azcopy (petunjuk di sini) di $PATH (mis. /usr/bin/ atau ~/bin/ )

Anda juga memerlukan salinan DVD binari Red Hat Enterprise Linux 7.7, yang dapat Anda unduh di sini jika Anda memiliki langganan Red Hat yang valid. Simpan DVD ini sebagai /var/lib/libvirt/images/rhel-server-7.7-x86_64-dvd.iso .

Catatan: Versi berbasis Red Hat Enterprise Linux 7 atau 8 lainnya harus melakukannya, tetapi panduan ini telah diuji dengan 7.7.

Agar hal di atas berfungsi jika Anda menjalankan VM, Anda harus mengaktifkan KVM di host atau diteruskan ke VM. Jika Anda ingin menjalankan contoh ini pada VM jarak jauh, atau di saluran CI/CD lain, saya telah melakukannya agar dapat mengotomatiskan proses, sehingga Anda dapat menjalankan ini tanpa kepala (tanpa X, UI grafis, dan Perlu penerusan X).

Membuat gambar secara otomatis

Kami memerlukan beberapa paket yang diinstal di gambar kami ditambah beberapa konfigurasi yang disetel, dan disarankan untuk menginstal klien Azure. Saat saya sedang mencari cara terbaik untuk menginstal klien ini secara otomatis, satu-satunya pilihan yang saya temukan adalah mendapatkannya dari repositori ekstra CentOS 7 (hubungi saya dan beri tahu saya jika Anda tahu cara yang lebih baik).

Contoh kickstart.cfg filenya bisa didapat disini. Sesuaikan dengan kebutuhan Anda, tetapi pastikan untuk membiarkan setidaknya konfigurasi jaringan disetel ke DHCP.

Membuat gambar dengan file Kickstart dan perintah sederhana

Untuk membangun citra: 

$ 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

Seperti disebutkan di atas, Anda harus memiliki gambar DVD di tempat yang benar. Contoh saya mengasumsikan bahwa Anda:

  • Dapatkan kickstart.cfg di $PWD your Anda saat ini .
  • Ingin disk 4 GB.
  • Apakah menggunakan libvirt lokal Anda /KVM menginstal.
  • Tidak memiliki persyaratan khusus terkait antarmuka jaringan (saya menggunakan default).

Mengonversi gambar ke format yang tepat

Saya kesulitan mengonversi gambar ke format yang tepat, tetapi dengan rekan kerja yang ramah dan Google, akhirnya saya menemukan format yang diperlukan:VHD selaras dengan 1 MB.

Gambar yang dibuat terakhir harus yang benar:

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

Gunakan sudo untuk mengakses gambar, ubah ke RAW dan masukkan ke $PWD

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

Pastikan kita dapat mengaksesnya - setelah titik ini, "normal" (mis. penggunaan non-root dapat dilanjutkan)

$ sudo chown $(whoami) *.raw

Hitung ukuran gambar.

$ 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))

Ubah ukuran gambar.

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

Konversi gambar dari RAW ke VHD dan paksakan ukuran yang benar

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

Membuat grup

Sekarang Anda memiliki image Red Hat Enterprise Linux 7 kustom Anda sendiri. Anda mungkin bertanya-tanya bagaimana cara mengunggahnya ke Azure dan menggunakannya untuk menjalankan sebuah instance. Baca lebih lanjut. Karena saya harus menguji seluruh proses pembuatan, saya juga melakukannya.

Anda akan selalu membutuhkan grup sumber daya di Azure. Saya telah memilih westus2 sebagai wilayah saya, tetapi yang lain juga harus melakukannya (jika mereka memiliki instance Mv2). Nama untuk grup sumber daya saya hanyalah myresourcegroup . Jika Anda ingin menggunakan nama lain, Anda harus menggantinya di mana pun saya menggunakannya.

Untuk membuat grup Anda, buat grup sumber daya AZ di westus2 dan beri nama “myresourcegroup”.

$ sudo az group create -l westus2 -n myresourcegroup

Mengunggah gambar disk dan menjadikannya sebagai gambar Azure

Untuk mengunggah gambar disk dan membuatnya menjadi gambar Azure, buat disk di Azure dengan nama 'rhel-7', di grup sumber daya yang kami buat sebelumnya 'myresourcegroup'.

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

Pastikan itu adalah Hyper-V Gen 2 dan sistem operasinya berjenis Linux dengan ukuran yang benar.

$ 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

Anda memerlukan SASURI untuk mengunggah.

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

Ini menggunakan azcopy untuk menyalin gambar (azcopy harus ada di $PATH . Anda suatu tempat)

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

Setelah pengunggahan selesai, kami perlu mencabut akses, jika tidak, gambar disk tidak dapat digunakan.

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

Terakhir, tandai sebagai gambar Hyper-V, Gen 2 OS.

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

Menjalankan gambar

Orang akan membayangkan bahwa pada saat ini, semuanya jelas dan menjalankan gambar akan mudah. Jika Anda mengatur semuanya dengan benar, ya, itu benar. Tetapi ketika saya mengerjakan contoh ini, saya benar-benar lupa tentang langkah terakhir di paragraf sebelumnya dan tidak menandai gambar disk sebagai gambar Azure, yang mengakibatkan tidak dapat memberikan kunci SSH atau admin-username .

Bagaimanapun, dengan instruksi di atas, Anda harus siap untuk menjalankan gambar. Perintah berikut mengasumsikan bahwa Anda menjalankan alat ini sebagai pengguna root dan menggunakan kunci SSH pengguna root. Sesuaikan apa yang saya miliki di sini dengan kebutuhan Anda:

$ 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

Jika Anda memerlukan diagnostik boot, Anda harus membuat apa yang disebut akun penyimpanan dengan nama "storageaccount123" menggunakan perintah berikut:

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

az vm create di atas perintah perlu diperluas dengan parameter berikut untuk mencatat pesan dan diagnostik boot ke akun penyimpanan yang baru saja kita buat:

--boot-diagnostics-storage storageaccount123

Catatan: Anda tidak perlu mengaktifkan diagnostik boot, dan jika Anda melakukannya, Anda pasti harus menyesuaikan nama akun penyimpanan.

Masuk ke instance Azure

Dari az vm create perintah, Anda harus mendapatkan output yang berisi alamat IP. Anda sekarang dapat masuk secara otomatis, karena kunci SSH disediakan dengan:

$ ssh cloud-user@<azure-ip>

Menutup

Sebelum menjelajahi kemungkinan membuat image Red Hat Enterprise Linux 7 untuk instans Azure Mv2 secara otomatis, saya tidak memiliki pengalaman sebelumnya dengan Azure, dan oleh karena itu, ini adalah perjalanan yang cukup melelahkan. Saya masih belum menganggap diri saya ahli dalam hal Azure, dan mungkin ada beberapa hal yang hilang. Saya ingin mendengar pendapat Anda untuk menyempurnakan penyiapan ini jika perlu.

Skrip dan perintah yang saya gunakan untuk artikel ini dapat ditemukan di sini. Permintaan tarik diterima, serta klon!

Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis.


Linux
  1. Mengonfigurasi alamat IPv6 di Red Hat Enterprise Linux 7 dan 8

  2. Mengoptimalkan image ISO instalasi Red Hat Enterprise Linux

  3. Bagaimana Mendapatkan Red Hat Enterprise Linux Secara Gratis?

  1. Instal Red Hat Enterprise Linux dalam Mode Grafis

  2. Instal Red Hat Enterprise Linux dalam Mode Teks

  3. Daftarkan Red Hat Enterprise Linux dan lampirkan langganan dengan Ansible

  1. Hal-hal yang perlu dipertimbangkan saat menjalankan Red Hat Enterprise Linux di Azure

  2. Menggunakan Ansible untuk menyebarkan Microsoft SQL Server 2019 di Red Hat Enterprise Linux 8

  3. Bagaimana mempersiapkan ujian sertifikasi administrator sistem Linux