إعداد Debian VHD لـ Azure

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

المتطلبات الأساسية

يفترض هذا القسم أنك قمت بالفعل بتثبيت نظام تشغيل Debian Linux من ملف ‎.iso تم تنزيله من موقع Debian على الويب إلى قرص ثابت افتراضي. توجد أدوات متعددة لإنشاء ملفات ‎.vhd؛ ويعد Hyper-V هو مثال واحد فقط. للحصول على إرشادات حول استخدام Hyper-V، راجع تثبيت دور Hyper-V وتكوين جهاز ظاهري.

ملاحظات التثبيت

  • راجع أيضًا ملاحظات تثبيت Linux العامة للحصول على مزيدٍ من النصائح حول إعداد Linux لـ Azure.
  • لا يتم دعم تنسيق VHDX الأحدث في Azure. يمكنك تحويل القرص إلى تنسيق VHD باستخدام Hyper-V Manager أو cmdlet المسمى convert-vhd.
  • عند تثبيت نظام Linux، يوصى باستخدام الأقسام القياسية بدلاً من LVM (غالبًا ما يكون الإعداد الافتراضي للعديد من عمليات التثبيت). سيؤدي ذلك إلى تجنب تعارض اسم LVM مع الأجهزة الظاهرية المستنسخة، خاصةً إذا كان قرص نظام التشغيل بحاجة إلى إرفاقه بجهاز ظاهري آخر لاستكشاف الأخطاء وإصلاحها. يمكن استخدام LVM أو RAID على أقراص البيانات إذا كنت تفضل ذلك.
  • لا تقم بتكوين قسم التبديل على قرص نظام التشغيل. يمكن تكوين عامل Azure Linux لإنشاء ملف الذاكرة الظاهرية على قرص المورد المؤقت. يمكن العثور على مزيد من المعلومات في الخطوات أدناه.
  • يجب أن يكون لكافة أقراص VHD على Azure حجم ظاهري تمت محاذاته إلى 1 ميغابايت. عند التحويل من قرص بسيط إلى VHD، يجب التأكد من أن حجم القرص البسيط هو مضاعف 1 ميغابايت قبل التحويل. لمعرفة المزيد من المعلومات، راجع ملاحظات تثبيت Linux.

إعداد صورة Debian لـ Azure

يمكنك إنشاء صورة Azure Debian Cloud الأساسية باستخدام منشئ صور سحابة FAI.

(تم سحب أمري «git clone» و«apt install» التاليين من مستودع Debian Cloud Images) ابدأ باستنساخ المستودع وتثبيت التبعيات:

$ 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

(اختياري) قم بتخصيص البنية عن طريق إضافة برامج نصية (مثل برامج shell النصية) إلى ./config_space/scripts/AZURE.

يتضح المثال على البرنامج النصي لتخصيص الصورة فيما يلي:

$ 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

لاحظ أنه من المهم أن تسبق أي أوامر تريد تخصيص الصورة بها $ROOTCMD حيث تتم تسميتها باسم مستعار كـ chroot $target.

إنشاء صورة Azure Debian:

$ make image_[release]_azure_amd64

سيؤدي ذلك إلى إخراج مجموعة من الملفات في الدليل الحالي، وأبرزها ملف الصورة image_[release]_azure_amd64.raw.

لتحويل الصورة الأولية إلى VHD لـ Azure، يمكنك القيام بما يلي:

rawdisk="image_[release]_azure_amd64.raw"
vhddisk="image_[release]_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"

يؤدي ذلك إلى إنشاء قرص VHD image_[release]_azure_amd64.vhd بحجم مستدير لتتمكن من نسخه بنجاح إلى قرص Azure.

إشعار

بدلا من استنساخ مستودع الصلصة وبناء الصور محليا، يمكن إنشاء الصور المستقرة الحالية وتنزيلها من FAI.

بعد إنشاء صورة Debian vhd مستقرة، قبل التحميل تحقق من تثبيت الحزم التالية:

  • apt-get install hyperv-daemons
  • apt-get install waagent # اختياري ولكن يوصى به لإعادة تعيين كلمة المرور واستخدام الملحقات
  • apt-get install cloud-init

ثم قم بإجراء ترقية كاملة:

  • apt-get full-upgrade

الآن يجب إنشاء موارد Azure لهذه الصورة (يستخدم $rounded_size_adjusted هذا المتغير، لذلك يجب أن يكون من داخل نفس عملية shell من الأعلى).

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)

إشعار

إذا تسبب النطاق الترددي من جهازك المحلي إلى قرص Azure في استغراق وقت طويل في معالجة التحميل باستخدام الأمر azcopy، يمكنك استخدام Azure VM Jumpbox لتسريع العملية. إليك كيفية القيام بذلك:

  1. قم بإنشاء كرة قطرانية من قرص VHD على جهازك المحلي: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd.
  2. أنشئ جهاز Azure Linux ظاهريًا (توزيع من اختيارك). تأكد من إنشائه باستخدام قرص كبير بما يكفي للاحتفاظ بقرص VHD المستخرج.
  3. قم بتنزيل الأداة المساعدة azcopy إلى جهاز Azure Linux الظاهري. يمكن استرجاعه من هنا.
  4. انسخ كرة القطران إلى الجهاز الظاهري: scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. على الجهاز الظاهري، قم باستخراج VHD: tar -xf ./image_buster_azure_amd64.vhd.tar.gz (سيستغرق ذلك بعض الوقت نظرًا لحجم الملف).
  6. أخيرًا على الجهاز الظاهري، انسخ قرص VHD إلى قرص Azure باستخدام azcopy (الأمر من الأعلى).

الخطوات التالية: أنت الآن جاهز لاستخدام القرص الثابت الظاهري في Debian Linux لإنشاء أجهزة ظاهرية جديدة في Azure. إذا كانت هذه هي المرة الأولى التي تقوم فيها بتحميل ملف .vhd إلى Azure، فراجع إنشاء جهاز ظاهري يعمل بنظام التشغيل Linux من قرص مخصص.