إعداد Debian VHD لـ Azure

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

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

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

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

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

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

يمكنك إنشاء صورة سحابة Azure Debian الأساسية باستخدام منشئ صور السحابة للتثبيت التلقائي الكامل (FAI). لإعداد صورة بدون FAI، راجع مقالة الخطوات العامة.

تم سحب أوامر نسخ git وتثبيت apt التالية من مستودع صور سحابة Debian. ابدأ بنسخ المستودع وتثبيت التبعيات:

$ 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 الظاهري لتسريع العملية. فيما يلي كيفية القيام بهذه العملية:

  1. قم بإنشاء كرة قطرانية من قرص VHD على جهازك المحلي: tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd.
  2. إنشاء Azure Linux VM (توزيع من اختيارك). تأكد من إنشائه باستخدام قرص كبير بما يكفي للاحتفاظ ب VHD المستخرج.
  3. قم بتنزيل azcopy الأداة المساعدة إلى Azure Linux VM. يمكنك استرداده من بدء استخدام AzCopy.
  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 VHD لإنشاء أجهزة ظاهرية جديدة في Azure. إذا كانت هذه هي المرة الأولى التي تقوم فيها بتحميل ملف .vhd إلى Azure، فراجع إنشاء جهاز ظاهري يعمل بنظام التشغيل Linux من قرص مخصص.