إعداد SLES أو جهاز ظاهري openSUSE Leap لـ Azure

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

في بعض الحالات، قد ترغب في استخدام SUSE Linux Enterprise Server (SLES) المخصصة أو openSUSE Leap Linux virtual machines (VMs) في بيئة Azure الخاصة بك وتكون قادرا على إنشاء هذه الأنواع من الأجهزة الظاهرية من خلال التشغيل التلقائي. توضح هذه المقالة كيفية إنشاء وتحميل قرص ثابت ظاهري مخصص ل Azure (VHD) يحتوي على نظام تشغيل SUSE Linux.

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

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

ملاحظات تثبيت SLES/openSUSE Leap

  • لمزيد من النصائح حول إعداد صور Linux ل Azure، راجع ملاحظات تثبيت Linux العامة.
  • لا يدعم Azure ملفات Windows Hard Disk Image (.vhdx). يتم دعم ملفات VHD (.vhd) فقط خارج الأجهزة الظاهرية. يمكنك تحويل القرص إلى تنسيق VHD باستخدام Hyper-V Manager أو Convert-VHD cmdlet.
  • يدعم Azure الأجهزة الظاهرية Gen1 (تمهيد BIOS) وGen2 (تمهيد UEFI).
  • يجب تمكين الوحدة النمطية kernel لجدول تخصيص الملفات الظاهرية (VFAT) في النواة.
  • لا تقم بتكوين قسم مبادلة على قرص نظام التشغيل. يمكنك تكوين عامل Linux لإنشاء ملف مبادلة على قرص المورد المؤقت. تقدم الخطوات اللاحقة في هذه المقالة المزيد من المعلومات حول تكوين مساحة التبديل.
  • يجب أن يكون لجميع أقراص VHD على Azure حجم ظاهري محاذاته إلى 1 ميغابايت. عند التحويل من قرص خام إلى VHD، تأكد من أن حجم القرص الخام هو مضاعف 1 ميغابايت قبل التحويل. لمزيد من المعلومات، راجع ملاحظات تثبيت Linux العامة.

إشعار

يزيل الإصدار 21.2 من Cloud-init أو أحدث متطلبات الدالة المعرفة من قبل المستخدم (UDF). ولكن بدون تمكين الوحدة النمطية udf ، لن يتم تحميل CD-ROM أثناء التوفير، مما يمنع تطبيق البيانات المخصصة. الحل البديل هو تطبيق بيانات المستخدم. ومع ذلك، على عكس البيانات المخصصة، لا يتم تشفير بيانات المستخدم. لمزيد من المعلومات، راجع تنسيقات بيانات المستخدم في وثائق تهيئة السحابة.

استخدام SUSE Studio

يمكن لـ SUSE Studio إنشاء SLES وإدارتها بسهولة وفتح صور SUSE Leap لـ Azure وHyper-V. SUSE Studio هو النهج الموصى به لتخصيص صور SLES الخاصة بك وopenSUSE Leap.

كبديل لبناء VHD الخاص بك، ينشر SUSE أيضا صور BYOS (إحضار اشتراكك الخاص) ل SLES في VM Depot.

إعداد SLES ل Azure

  1. تكوين الوحدات النمطية Azure وHyper-V إذا لزم الأمر.

    إذا لم يكن برنامج hypervisor Hyper-V، فيجب إضافة وحدات نمطية أخرى إلى قرص ذاكرة الوصول العشوائي الأولي (initramfs) للتمهيد بنجاح في Azure.

    قم بتحرير الملف /etc/dracut.conf وأضف السطر التالي إلى الملف:

    add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
    

    dracut قم بتشغيل الأمر لإعادة إنشاء ملف initramfs:

    sudo dracut --verbose --force
    
  2. إعداد وحدة التحكم التسلسلية.

    للعمل بنجاح مع وحدة التحكم التسلسلية، يجب إعداد عدة متغيرات في ملف /etc/defaults/grub وإعادة إنشاء GRUB على الخادم:

    # Add console=ttyS0 and earlyprintk=ttS0 to the variable.
    # Remove "splash=silent" and "quiet" options.
    GRUB_CMDLINE_LINUX_DEFAULT="audit=1 no-scroll fbcon=scrollback:0 mitigations=auto security=apparmor crashkernel=228M,high crashkernel=72M,low console=ttyS0 earlyprintk=ttyS0"
    
    # Add "console serial" to GRUB_TERMINAL.
    GRUB_TERMINAL="console serial"
    
    # Set the GRUB_SERIAL_COMMAND variable.
    
    GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
    
    /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. قم بتسجيل نظام SUSE Linux Enterprise للسماح له بتنزيل التحديثات وتثبيت الحزم.

  4. تحديث النظام بأحدث التصحيحات:

    sudo zypper update
    
  5. تثبيت عامل Azure Linux VM (waagent) و cloud-init:

    sudo SUSEConnect -p sle-module-public-cloud/15.2/x86_64  (SLES 15 SP2)
    sudo zypper refresh
    sudo zypper install python-azure-agent
    sudo zypper install cloud-init
    
  6. تمكين waagent و cloud-init للبدء في التمهيد:

    sudo systemctl enable  waagent
    sudo systemctl enable cloud-init-local.service
    sudo systemctl enable cloud-init.service
    sudo systemctl enable cloud-config.service
    sudo systemctl enable cloud-final.service
    sudo systemctl daemon-reload
    sudo cloud-init clean
    
  7. تحديث تكوين تهيئة السحابة:

    cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    
    EOF
    
    sudo cat <<EOF | sudo tee  /etc/cloud/cloud.cfg.d/05_logging.cfg
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
    # Make sure mounts and disk_setup are in the init stage:
    echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
  8. إذا كنت ترغب في تحميل قسم تبديل وتنسيقه وإنشائه، فإن أحد الخيارات هو تمرير تكوين تهيئة السحابة في كل مرة تقوم فيها بإنشاء جهاز ظاهري.

    خيار آخر هو استخدام توجيه cloud-init في الصورة لتكوين مساحة التبديل في كل مرة يتم فيها إنشاء الجهاز الظاهري:

    cat  <<EOF | sudo tee -a /etc/systemd/system.conf
    'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"'
    EOF
    
    cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg
    #cloud-config
    # Generated by Azure cloud image build
    disk_setup:
      ephemeral0:
        table_type: mbr
        layout: [66, [33, 82]]
        overwrite: True
    fs_setup:
      - device: ephemeral0.1
        filesystem: ext4
      - device: ephemeral0.2
        filesystem: swap
    mounts:
      - ["ephemeral0.1", "/mnt"]
      - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    
  9. في السابق، تم استخدام عامل Azure Linux لتكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. نظرا لأن cloud-init يعالج الآن هذه الخطوة، يجب عدم استخدام عامل Azure Linux لتنسيق قرص المورد أو إنشاء ملف التبديل. استخدم هذه الأوامر لتعديل /etc/waagent.conf بشكل مناسب:

    sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=auto/g' /etc/waagent.conf
    sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/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
    

    إشعار

    إذا كنت تستخدم إصدار cloud-init أقدم من 21.2، فتأكد من تمكين الوحدة النمطية udf . ستؤدي إزالتها أو تعطيلها إلى فشل التزويد أو التمهيد. يزيل الإصدار 21.2 من Cloud-init أو أحدث متطلبات UDF.

  10. تأكد من أن الملف /etc/fstab يشير إلى القرص باستخدام UUID الخاص به (by-uuid).

  11. قم بإزالة قواعد udev وملفات تكوين محول الشبكة لتجنب إنشاء قواعد ثابتة لواجهات Ethernet. يمكن أن تتسبب هذه القواعد في حدوث مشاكل عند استنساخ جهاز ظاهري في Microsoft Azure أو Hyper-V.

    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    sudo rm -f /etc/udev/rules.d/85-persistent-net-cloud-init.rules
    sudo rm -f /etc/sysconfig/network/ifcfg-eth*
    
  12. نوصي بتحرير ملف /etc/sysconfig/network/dhcp وتغيير المعلمة DHCLIENT_SET_HOSTNAME إلى ما يلي:

    DHCLIENT_SET_HOSTNAME="no"
    
  13. في ملف /etc/sudoers ، قم بالتعليق على الأسطر التالية أو إزالتها إذا كانت موجودة:

    Defaults targetpw   # Ask for the password of the target user i.e. root
    ALL    ALL=(ALL) ALL   # WARNING! Only use this setting together with 'Defaults targetpw'!
    
  14. تأكد من تثبيت خادم Secure Shell (SSH) وتكوينه للبدء في وقت التمهيد:

    sudo systemctl enable sshd
    
  15. تنظيف مرحلة cloud-init:

    sudo cloud-init clean --seed --logs
    
  16. قم بتشغيل الأوامر التالية لإلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure.

    إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير.

    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision+user
    sudo export HISTSIZE=0
    sudo rm -f ~/.bash_history
    

إعداد openSUSE 15.4+

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

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

  3. في المحطة الطرفية، قم بتشغيل الأمر zypper lr. إذا أرجع هذا الأمر إخراجا مشابها للمثال التالي، يتم تكوين المستودعات كما هو متوقع ولا يلزم إجراء أي تعديلات. (قد تختلف أرقام الإصدارات.)

    # الاسم المستعار الاسم مُمَكّن التحقق من GPG تحديث
    1 Cloud:Tools_15.4 Cloud:Tools-> ‏‏نعم‬ (r) نعم ‏‏نعم‬
    2 openSUSE_stable_OSS openSUSE_st-> ‏‏نعم‬ (r) نعم ‏‏نعم‬
    3 openSUSE_stable_التحديثات openSUSE_st-> ‏‏نعم‬ (r) نعم ‏‏نعم‬

    إذا ظهرت الرسالة "لا توجد مستودعات معرفة" من المستودعات zypper lr يجب إضافتها يدويا.

    فيما يلي أمثلة على أوامر إضافة هذه المستودعات (قد تختلف الإصدارات والارتباطات):

    sudo zypper ar -f https://download.opensuse.org/update/openSUSE-stable openSUSE_stable_Updates
    sudo zypper ar -f https://download.opensuse.org/repositories/Cloud:/Tools/15.4 Cloud:Tools_15.4
    sudo zypper ar -f https://download.opensuse.org/distribution/openSUSE-stable/repo/oss openSUSE_stable_OSS
    

    يمكنك بعد ذلك التحقق من إضافة المستودعات عن طريق تشغيل الأمر zypper lr مرة أخرى. إذا لم يتم تمكين أحد مستودعات التحديث ذات الصلة، فقم بتمكينه باستخدام الأمر التالي:

    sudo zypper mr -e [NUMBER OF REPOSITORY]
    
  4. قم بتحديث kernel إلى أحدث إصدار متوفر:

    sudo zypper up kernel-default
    

    أو قم بتحديث نظام التشغيل مع جميع التصحيحات الأخيرة:

    sudo zypper update
    
  5. تثبيت عامل Azure Linux:

    sudo zypper install WALinuxAgent
    
  6. قم بتعديل خط تمهيد kernel في تكوين GRUB الخاص بك لتضمين معلمات kernel الأخرى ل Azure. للقيام بذلك، افتح /boot/grub/menu.lst في محرر نص وتأكد من أن النواة الافتراضية تتضمن المعلمات التالية:

    console=ttyS0 earlyprintk=ttyS0
    

    يضمن هذا الخيار إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في تصحيح المشكلات. بالإضافة إلى ذلك، قم بإزالة المعلمات التالية من سطر تمهيد kernel إذا كانت موجودة:

     libata.atapi_enabled=0 reserve=0x1f0,0x8
    
  7. نوصي بتحرير ملف /etc/sysconfig/network/dhcp وتغيير المعلمة DHCLIENT_SET_HOSTNAME إلى الإعداد التالي:

     DHCLIENT_SET_HOSTNAME="no"
    
  8. في ملف /etc/sudoers ، قم بالتعليق على الأسطر التالية أو إزالتها إذا كانت موجودة. وهذه خطوة هامة.

    Defaults targetpw   # ask for the password of the target user i.e. root
    ALL    ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!
    
  9. تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد.

  10. لا تنشئ مساحة مبادلة على قرص نظام التشغيل.

    يمكن لعامل Azure Linux تكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد التوفير على Azure. قرص المورد المحلي هو قرص مؤقت وسيتم إفراغه عند إلغاء توفير الجهاز الظاهري.

    بعد تثبيت عامل Azure Linux، قم بتعديل المعلمات في /etc/waagent.conf كما يلي:

    ResourceDisk.Format=n
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=n
    ResourceDisk.SwapSizeMB=2048    ## NOTE: set the size to whatever you need it to be.
    
  11. تأكد من تشغيل عامل Azure Linux عند بدء التشغيل:

    sudo systemctl enable waagent.service
    
  12. قم بتشغيل الأوامر التالية لإلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure.

    إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير.

    sudo rm -f ~/.bash_history # Remove current user history
    sudo rm -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history # Remove root user history
    sudo export HISTSIZE=0
    
  13. حدد Action>Shut down في Hyper-V Manager.

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

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