Menyiapkan VHD Debian untuk Azure

Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel

Prasyarat

Bagian ini menganggap bahwa Anda telah menginstal sistem operasi Linux Debian dari file .iso yang diunduh dari situs web Debian ke hard disk virtual. Ada beberapa alat untuk membuat file .vhd; Hyper-V hanyalah salah satu contohnya. Untuk petunjuk penggunaan Hyper-V, lihatMenginstal Peran Hyper-V dan Mengonfigurasi Komputer Virtual.

Catatan instalasi

  • Lihat juga Catatan Instalasi Linux Umum untuk tips lebih lanjut tentang persiapan Linux untuk Azure.
  • Format VHDX yang lebih baru tidak didukung di Azure. Anda dapat mengonversi disk ke format VHD menggunakan Hyper-V Manager atau cmdlet convert-vhd.
  • Saat menginstal sistem Linux, disarankan agar Anda menggunakan partisi standar, bukan LVM (seringkali default untuk berbagai instalasi). Hal ini akan menghindari konflik nama LVM dengan VM kloning, terutama jika disk OS perlu dipasang ke VM lain untuk pemecahan masalah. LVM atau RAID dapat digunakan pada disk data jika diinginkan.
  • Jangan mengonfigurasi partisi swap pada disk OS. Agen Linux Azure dapat dikonfigurasi untuk membuat file swap pada disk sumber daya sementara. Informasi lebih lanjut dapat ditemukan dalam langkah-langkah di bawah ini.
  • Semua VHD di Azure harus memiliki ukuran virtual yang selaras dengan 1MB. Saat mengonversi dari disk mentah ke VHD, Anda harus memastikan bahwa ukuran disk mentah adalah kelipatan 1MB sebelum konversi. Untuk informasi selengkapnya, lihat Catatan Instalasi Linux.

Menggunakan Azure-Manage untuk membuat VHD Debian

Ada alat yang tersedia untuk menghasilkan VHD Debian untuk Azure, seperti skrip yang dikelola azure dari Instaclustr. Ini adalah pendekatan yang direkomendasikan versus pembuatan gambar dari awal. Misalnya, untuk membuat VHD Debian 8 jalankan perintah berikut untuk mengunduh utilitas azure-manage (dan dependensi) lalu jalankan skrip azure_build_image:

# sudo apt-get update
# sudo apt-get install git qemu-utils mbr kpartx debootstrap

# sudo apt-get install python3-pip python3-dateutil python3-cryptography
# sudo pip3 install azure-storage azure-servicemanagement-legacy azure-common pytest pyyaml
# git clone https://github.com/credativ/azure-manage.git
# cd azure-manage
# sudo pip3 install .

# sudo azure_build_image --option release=jessie --option image_size_gb=30 --option image_prefix=debian-jessie-azure section

Menyiapkan gambar Debian untuk Azure

Anda dapat membuat gambar Azure Debian Cloud dasar dengan penyusun gambar cloud FAI.

(Kloning git berikut dan perintah instalasi apt ditarik dari repo Gambar Cloud Debian) Mulailah dengan mengkloning repo dan menginstal dependensi:

$ git clone https://salsa.debian.org/cloud-team/debian-cloud-images.git
$ sudo apt install --no-install-recommends ca-certificates debsums dosfstools \
    fai-server fai-setup-storage make python3 python3-libcloud python3-marshmallow \
    python3-pytest python3-yaml qemu-utils udev
$ cd ./debian-cloud-images

(Opsional) Sesuaikan build dengan menambahkan skrip (misalnya skrip shell) ke ./config_space/scripts/AZURE.

Contoh skrip untuk mengkustomisasi gambar adalah:

$ mkdir -p ./config_space/scripts/AZURE
$ cat > ./config_space/scripts/AZURE/10-custom <<EOF
#!/bin/bash

\$ROOTCMD bash -c "echo test > /usr/local/share/testing"
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/10-custom

Perhatikan bahwa penting untuk memberi prefiks setiap perintah yang ingin Anda kustomisasi gambarnya dengan $ROOTCMD karena hal ini adalah alias chroot $target.

Menyusun gambar Azure Debian 10:

$ make image_buster_azure_amd64

Ini akan menghasilkan beberapa file pada direktori saat ini, terutama file gambar image_buster_azure_amd64.raw.

Untuk mengonversi gambar mentah ke VHD untuk Azure, Anda dapat melakukan hal berikut:

rawdisk="image_buster_azure_amd64.raw"
vhddisk="image_buster_azure_amd64.vhd"

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

rounded_size=$(((($size+$MB-1)/$MB)*$MB))
rounded_size_adjusted=$(($rounded_size + 512))

echo "Rounded Size Adjusted = $rounded_size_adjusted"

sudo qemu-img resize "$rawdisk" $rounded_size
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc "$rawdisk" "$vhddisk"

Ini membuat VHD image_buster_azure_amd64.vhd dengan ukuran bulat agar dapat sukses menyalinnya ke Azure Disk.

Sekarang kita perlu membuat sumber daya Azure untuk gambar ini (ini menggunakan variabel $rounded_size_adjusted, sehingga harus dari dalam proses shell yang sama dengan yang di atas).

az group create -l $LOCATION -n $RG

az disk create \
    -n $DISK \
    -g $RG \
    -l $LOCATION \
    --for-upload --upload-size-bytes "$rounded_size_adjusted" \
    --sku standard_lrs --hyper-v-generation V1

ACCESS=$(az disk grant-access \
    -n $DISK -g $RG \
    --access-level write \
    --duration-in-seconds 86400 \
    --query accessSas -o tsv)

azcopy copy "$vhddisk" "$ACCESS" --blob-type PageBlob

az disk revoke-access -n $DISK -g $RG
az image create \
    -g $RG \
    -n $IMAGE \
    --os-type linux \
    --source $(az disk show \
        -g $RG \
        -n $DISK \
        --query id -o tsv)
az vm create \
    -g $RG \
    -n $VM \
    --ssh-key-value $SSH_KEY_VALUE \
    --public-ip-address-dns-name $VM \
    --image $(az image show \
        -g $RG \
        -n $IMAGE \
        --query id -o tsv)

Catatan

Jika bandwidth dari komputer lokal Anda ke Azure Disk memakan waktu yang lama untuk memproses unggahan dengan azcopy, Anda dapat menggunakan jumpbox VM Azure untuk mempercepat proses. Berikut adalah cara melakukan hal ini:

  1. Buat tarball VHD di komputer lokal Anda: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_buster_azure_amd64.vhd.
  2. Membuat VM Linux Azure (distro pilihan Anda). Pastikan Anda membuatnya dengan disk yang cukup besar untuk menahan VHD yang diekstrak!
  3. Unduh utilitas azcopy ke VM Linux Azure. ini dapat diambil di sini.
  4. Salin tarball ke VM: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. Di VM, ekstrak VHD: tar -xf ./image_buster_azure_amd64.vhd.tar.gz (ini akan memakan sedikit waktu mengingat ukuran file).
  6. Terakhir di VM, salin VHD ke Azure Disk dengan azcopy (perintah dari atas).

Langkah berikutnya:Anda sekarang siap menggunakan hard disk virtual Debian Linux Anda untuk membuat mesin virtual baru di Azure. Jika ini pertama kalinya Anda mengunggah file .vhd ke Azure, lihat Buat komputer virtual Linux dari disk kustom.