Azure için Debian VHD hazırlama

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Ön koşullar

Bu bölümde, Debian web sitesinden sanal sabit diske indirilen bir .iso dosyasından zaten bir Debian Linux işletim sistemi yüklediğiniz varsayılır. .vhd dosyaları oluşturmak için birden çok araç vardır; Hyper-V yalnızca bir örnektir. Hyper-V kullanma yönergeleri için bkz . Hyper-V Rolünü Yükleme ve Sanal Makine Yapılandırma.

Yükleme notları

  • Linux'ı Azure için hazırlama hakkında daha fazla ipucu için bkz . Genel Linux Yükleme Notları .
  • Daha yeni VHDX biçimi Azure'da desteklenmez. Hyper-V Yöneticisi'ni veya convert-vhd cmdlet'ini kullanarak diski VHD biçimine dönüştürebilirsiniz.
  • Linux sistemini yüklerken LVM yerine standart bölümler kullanmanız önerilir (çoğu yükleme için genellikle varsayılandır). Bu, özellikle sorun giderme için başka bir VM'ye bir işletim sistemi diski eklenmesi gerekiyorsa, kopyalanan VM'lerle LVM adı çakışmalarını önler. LVM veya RAID tercih edilirse veri disklerinde kullanılabilir.
  • İşletim sistemi diskinde değiştirme bölümü yapılandırmayın. Azure Linux aracısı, geçici kaynak diskinde bir takas dosyası oluşturacak şekilde yapılandırılabilir. Aşağıdaki adımlarda daha fazla bilgi bulabilirsiniz.
  • Azure'da tüm VHD'lerin 1 MB'a hizalanmış bir sanal boyutu olmalıdır. Ham diskten VHD'ye dönüştürürken, dönüştürmeden önce ham disk boyutunun 1 MB'ın katı olduğundan emin olmanız gerekir. Daha fazla bilgi için bkz . Linux Yükleme Notları.

Debian VHD'leri oluşturmak için Azure-Manage kullanma

Instaclustr'daki azure-manage betikleri gibi Azure için Debian VHD'leri oluşturmak için kullanabileceğiniz araçlar vardır. Bu, sıfırdan görüntü oluşturmaya kıyasla önerilen yaklaşımdır. Örneğin, bir Debian 8 VHD oluşturmak için aşağıdaki komutları çalıştırarak yardımcı programı (ve bağımlılıkları) indirin azure-manage ve betiği çalıştırın 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

Azure için Debian görüntüsü hazırlama

FAI bulut görüntü oluşturucusu ile temel Azure Debian Bulut görüntüsü oluşturabilirsiniz.

(Aşağıdaki git clone ve apt yükleme komutları Debian Cloud Images deposundan çekilmiştir) Depoyu kopyalayıp bağımlılıkları yükleyerek başlayın:

$ 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

(İsteğe bağlı) 'a betikler (örneğin kabuk betikleri) ekleyerek derlemeyi ./config_space/scripts/AZUREözelleştirin.

Görüntüyü özelleştirmek için bir betik örneği:

$ 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

Resmi $ROOTCMD özelleştirmek istediğiniz tüm komutların ön ekini eklemenin önemli olduğunu unutmayın. Bu, olarak chroot $targetdiğer ad kullanıldığından.

Azure Debian 10 görüntüsünü oluşturun:

$ make image_buster_azure_amd64

Bu, geçerli dizinde, özellikle image_buster_azure_amd64.raw de görüntü dosyasında birkaç dosya çıkışı oluşturur.

Ham görüntüyü Azure için VHD'ye dönüştürmek için aşağıdakileri yapabilirsiniz:

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"

Bu, bir Azure Disk'e başarıyla kopyalayabilmek için yuvarlatılmış boyuta sahip bir VHD image_buster_azure_amd64.vhd oluşturur.

Şimdi bu görüntü için Azure kaynaklarını oluşturmamız gerekiyor (bu değişken, yukarıdan $rounded_size_adjusted aynı kabuk işleminin içinden olmalıdır).

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)

Dekont

Yerel makinenizden Azure Disk'e bant genişliği azcopy ile karşıya yüklemeyi işlemek için uzun bir süreye neden oluyorsa, işlemi hızlandırmak için bir Azure VM sıçrama kutusu kullanabilirsiniz. Bunu şu şekilde yapabilirsiniz:

  1. Yerel makinenizde VHD'nin tarball'unu oluşturun: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_buster_azure_amd64.vhd.
  2. Azure Linux VM oluşturma (seçtiğiniz dağıtım). Ayıklanan VHD'yi tutacak kadar büyük bir diskle oluşturduğunuzdan emin olun!
  3. Azcopy yardımcı programını Azure Linux VM'sine indirin. Buradan alınabilir.
  4. Tarball'ı VM'ye kopyalayın: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. VM'de VHD'yi ayıklayın: tar -xf ./image_buster_azure_amd64.vhd.tar.gz (dosyanın boyutu göz önüne alındığında bu işlem biraz zaman alır).
  6. Son olarak VM'de VHD'yi ile azcopy Azure Disk'e kopyalayın (yukarıdaki komut).

Sonraki adımlar: Artık Azure'da yeni sanal makineler oluşturmak için Debian Linux sanal sabit diskinizi kullanmaya hazırsınız. .vhd dosyasını Azure'a ilk kez yüklüyorsanız bkz . Özel diskten Linux VM oluşturma.