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

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

ينشر Ubuntu الآن أقراص Azure الثابتة الظاهرية الرسمية (VHDs) للتنزيل على صفحة ويب Ubuntu Cloud Images. إذا كنت بحاجة إلى إنشاء صورة Ubuntu متخصصة خاصة بك ل Azure بدلا من استخدام الإجراء اليدوي التالي، فابدأ بأقراص VHD العاملة المعروفة هذه وقم بتخصيصها، حسب الحاجة. يمكنك دائما العثور على أحدث إصدارات الصور في المواقع التالية:

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

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

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

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

خطوات يدوية

إشعار

قبل محاولة إنشاء صورة Ubuntu المخصصة الخاصة بك ل Azure، ضع في اعتبارك استخدام الصور التي تم إنشاؤها مسبقا واختبارها من صفحة ويب Ubuntu Cloud Images بدلا من ذلك.

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

  2. حدد Connect لفتح نافذة الجهاز الظاهري.

  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
    
  4. تستخدم صور Ubuntu Azure الآن Azure-tailored 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
    
  5. تعديل خط تمهيد 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"
    
  6. احفظ هذا الملف واغلقه، ثم قم بالتشغيل sudo update-grub. تضمن هذه الخطوة إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد الدعم التقني ل Azure في تصحيح المشكلات.

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

  8. تثبيت 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، إذا تم تثبيتها.

  9. إزالة 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
    
  10. تكوين 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
    
  11. تكوين عامل Azure Linux للاعتماد عليه cloud-init لإجراء التوفير. لمزيد من المعلومات حول هذه الخيارات، انظر إلى مشروع 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
    
  12. تنظيف cloud-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
    
  13. إلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure.

    إشعار

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

    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    

    تحذير

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

  14. حدد Action>Shut down في Hyper-V Manager.

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

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

    1. تغيير الدليل إلى boot EFI الدليل:

      cd /boot/efi/EFI
      
    2. انسخ ubuntu الدليل إلى دليل جديد يسمى boot:

      sudo cp -r ubuntu/ boot
      
    3. قم بتغيير الدليل إلى دليل التمهيد الذي تم إنشاؤه حديثا:

      cd boot
      
    4. إعادة تسمية shimx64.efi الملف:

      sudo mv shimx64.efi bootx64.efi
      
    5. إعادة تسمية grub.cfg الملف إلى bootx64.cfg:

      sudo mv grub.cfg bootx64.cfg
      

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