إعداد جهاز ظاهري Ubuntu لـ Azure

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

ينشر Ubuntu الآن Azure VHDs الرسمية للتنزيل على https://cloud-images.ubuntu.com/. إذا كنت بحاجة إلى إنشاء صورة Ubuntu متخصصة خاصة بك ل Azure، بدلا من استخدام الإجراء اليدوي أدناه، فمن المستحسن البدء بهذه الأقراص VHDs العاملة المعروفة والتخصيص حسب الحاجة. يمكن دائما العثور على أحدث إصدارات الصور في المواقع التالية:

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

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

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

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

خطوات يدوية

إشعار

قبل محاولة إنشاء صورة Ubuntu المخصصة الخاصة بك لـ Azure، يرجى التفكير في استخدام الصور التي تم إنشاؤها مسبقا واختبارها من https://cloud-images.ubuntu.com/ بدلًا من ذلك.

  1. في الجزء الأوسط من Hyper-V Manager، حدد الجهاز الظاهري.

  2. انقر فوق اتصال لفتح نافذة الجهاز الظاهري.

  3. استبدل المستودعات الحالية في الصورة لاستخدام مستودع Azure الخاص ب Ubuntu.

    قبل التحرير /etc/apt/sources.list، يوصى بإجراء نسخة احتياطية:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
sudo apt-get update
  1. تستخدم صور Ubuntu Azure الآن Azure-tailored kernel. قم بتحديث نظام التشغيل إلى أحدث إصدار من kernel المخصص لـ Azure وقم بتثبيت أدوات Azure Linux (بما في ذلك تبعيات Hyper-V) عن طريق تشغيل الأوامر التالية:
sudo apt update
sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure
sudo apt full-upgrade
sudo reboot
  1. عدِّل سطر تمهيد kernel في تكوين grub لديك لتضمين معلمات kernel إضافية لـ Azure. للقيام بذلك، افتح /etc/default/grub في محرر نصوص، ابحث عن المتغير المسمى GRUB_CMDLINE_LINUX_DEFAULT (أو أضفه إذا لزم الأمر) وقم بتحريره لتضمين المعلمات التالية:
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"

احفظ هذا الملف واغلقه، ثم قم بالتشغيل sudo update-grub. سيضمن ذلك إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure التقني في مشكلات تصحيح الأخطاء.

  1. تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد. عادةً ما يكون هذا الإعداد هو الإعداد الافتراضي.

  2. قم بتثبيت cloud-init (عامل التزويد) وعامل Azure Linux (معالج ملحقات الضيف). يستخدم Cloud-init netplan لتكوين تكوين شبكة النظام (أثناء التزويد وكل تمهيد لاحق) gdisk ولتقسيم أقراص الموارد.

sudo apt update
sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent

إشعار

قد تقوم الحزمة walinuxagent بإزالة الحزمNetworkManager و NetworkManager-gnome، إذا تم تثبيتهم.

  1. إزالة التكوينات الافتراضية لـ cloud-init والبيانات الاصطناعية المتبقية netplan التي قد تتعارض مع تزويد cloud-init على Azure:
sudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg
sudo rm -f /etc/cloud/ds-identify.cfg
sudo rm -f /etc/netplan/*.yaml
  1. تكوين cloud-init لتزويد النظام باستخدام مصدر بيانات Azure:
cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg
datasource_list: [ Azure ]
EOF

cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg
system_info:
   package_mirrors:
     - arches: [i386, amd64]
       failsafe:
         primary: http://archive.ubuntu.com/ubuntu
         security: http://security.ubuntu.com/ubuntu
       search:
         primary:
           - http://azure.archive.ubuntu.com/ubuntu/
         security: []
     - arches: [armhf, armel, default]
       failsafe:
         primary: http://ports.ubuntu.com/ubuntu-ports
         security: http://ports.ubuntu.com/ubuntu-ports
EOF

cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg
reporting:
  logging:
    type: log
  telemetry:
    type: hyperv
EOF
  1. قم بتكوين وكيل Azure Linux للاعتماد على السحابة في تنفيذ التزويد. ألق نظرة على مشروع WALinuxAgent لمزيد من المعلومات حول هذه الخيارات.
sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
cat <<EOF | sudo tee -a /etc/waagent.conf
# For Azure Linux agent version >= 2.2.45, this is the option to configure,
# enable, or disable the provisioning behavior of the Linux agent.
# Accepted values are auto (default), waagent, cloud-init, or disabled.
# A value of auto means that the agent will rely on cloud-init to handle
# provisioning if it is installed and enabled, which in this case it will.
Provisioning.Agent=auto
EOF
  1. تنظيف Clous-init و Azure Linux وكيل وقت التشغيل القطع الأثرية والسجلات:
sudo cloud-init clean --logs --seed
sudo rm -rf /var/lib/cloud/
sudo systemctl stop walinuxagent.service
sudo rm -rf /var/lib/waagent/
sudo rm -f /var/log/waagent.log
  1. شغِّل الأوامر التالية لإلغاء تزويد الجهاز الظاهري وإعداده للتزويد على Azure:

إشعار

يعمم الأمر sudo waagent -force -deprovision+user الصورة من خلال محاولة تنظيف النظام وجعله مناسبا لإعادة التزويد. يحذف الخيار +user آخر حساب مستخدم تم تزويده والبيانات المرتبطة به.

التحذير

لا يضمن إلغاء التوفير باستخدام الأمر أعلاه مسح الصورة من جميع المعلومات الحساسة وهو مناسب لإعادة التوزيع.

sudo waagent -force -deprovision+user
sudo rm -f ~/.bash_history
  1. انقر فوق إجراء -> إيقاف التشغيل في Hyper-V Manager.

  2. يقبل Azure فقط VHDs ذات الحجم الثابت. إذا لم يكن قرص نظام التشغيل الخاص بالجهاز الظاهري VHD ثابتا الحجم، فاستخدم Convert-VHD PowerShell cmdlet وحدد -VHDType Fixed الخيار. يرجى إلقاء نظرة على المستندات Convert-VHD هنا: Convert-VHD.

  3. لإحضار جهاز ظاهري من الجيل 2 على Azure، اتبع الخطوات التالية:

  4. تغيير الدليل إلى دليل التمهيد EFI:

cd /boot/efi/EFI
  1. نسخ دليل ubuntu إلى دليل جديد يسمى التمهيد:
sudo cp -r ubuntu/ boot
  1. تغيير الدليل إلى دليل التمهيد الذي تم إنشاؤه حديثًا:
cd boot
  1. إعادة تسمية الملف shimx64.efi:
sudo mv shimx64.efi bootx64.efi
  1. إعادة تسمية الملف grub.cfg إلى bootx64.cfg:
sudo mv grub.cfg bootx64.cfg

الخطوات التالية

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