إعداد جهاز ظاهري يستند إلى Red Hat لـ Azure
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات المقياس المرنة ✔️ مجموعات المقياس الموحدة
في هذه المقالة، ستتعلم كيفية إعداد جهاز ظاهري Red Hat Enterprise Linux (RHEL) للاستخدام في Azure. إصدارات RHEL التي تغطيها هذه المقالة هي 6.X و7.X و8.X. برامج مراقبة الأجهزة الافتراضية للتحضير التي تغطيها هذه المقالة هي Hyper-V وVM المستندة إلى kernel (KVM) وVMware.
لمزيد من المعلومات حول متطلبات الأهلية للمشاركة في برنامج Red Hat للوصول إلى السحابة، راجع موقع Red Hat Cloud Access على الويب وتشغيل RHEL على Azure. للحصول على طرق لأتمتة إنشاء صور RHEL، راجع Azure Image Builder.
إشعار
كن على دراية بالإصدارات التي في نهاية عمرها (EOL) ولم تعد مدعومة من قبل Red Hat. يتم دعم الصور التي تم تحميلها في EOL أو خارجها على أساس معقول من الجهد التجاري. لمزيد من المعلومات، راجع دورات حياة منتج Red Hat.
Hyper-V Manager
يوضح لك هذا القسم كيفية إعداد RHEL 6 أو RHEL 7 أو RHEL 8 VM باستخدام Hyper-V Manager.
المتطلبات الأساسية
يفترض هذا القسم أنك حصلت بالفعل على ملف ISO من موقع Red Hat على الويب وقمت بتثبيت صورة RHEL على قرص ثابت ظاهري (VHD). لمزيد من المعلومات حول كيفية استخدام Hyper-V Manager لتثبيت صورة نظام التشغيل، راجع تثبيت دور Hyper-V وتكوين جهاز ظاهري.
ملاحظات تثبيت RHEL
- لا يدعم Azure تنسيق VHDX. يدعم Azure VHD الثابت فقط. يمكنك استخدام Hyper-V Manager لتحويل القرص إلى تنسيق VHD، أو يمكنك استخدام
convert-vhd
cmdlet. إذا كنت تستخدم VirtualBox، فحدد الحجم الثابت بدلاً من الخيار الافتراضي المخصص ديناميكيًا عند إنشاء القرص. - يدعم Azure الأجهزة الظاهرية Gen1 (تمهيد BIOS) وGen2 (تمهيد UEFI).
- الحد الأقصى للحجم المسموح به لـ VHD هو 1023 GB.
- يجب تمكين الوحدة النمطية vfat kernel في النواة.
- يتم دعم إدارة وحدة التخزين المنطقية (LVM) ويمكن استخدامها على قرص نظام التشغيل أو أقراص البيانات في أجهزة Azure الظاهرية. بشكل عام، نوصي باستخدام الأقسام القياسية على قرص نظام التشغيل بدلا من LVM. تتجنب هذه الممارسة تعارض اسم LVM مع الأجهزة الظاهرية المستنسخة، خاصة إذا كنت بحاجة إلى إرفاق قرص نظام تشغيل بجهاز ظاهري آخر متطابق لاستكشاف الأخطاء وإصلاحها. لمزيد من المعلومات، راجع وثائق LVM و RAID.
- مطلوب دعم Kernel لتثبيت أنظمة ملفات تنسيق القرص العالمي (UDF). في التمهيد الأول على Azure، تمرر الوسائط المنسقة بواسطة UDF المرفقة بالضيف تكوين التوفير إلى Linux VM. يجب أن يكون عامل Azure Linux قادرًا على إدخال نظام ملفات UDF لقراءة تكوينه وتوفير الجهاز الظاهري. بدون هذه الخطوة، يفشل التوفير.
- لا تقم بتكوين قسم تبديل على قرص نظام التشغيل. لمزيد من المعلومات، اقرأ الخطوات التالية.
- يجب أن يكون لجميع أقراص VHD على Azure حجم ظاهري محاذاته إلى 1 ميغابايت. عند التحويل من قرص خام إلى VHD، يجب التأكد من أن حجم القرص الخام هو مضاعف 1 ميغابايت قبل التحويل. لمزيد من المعلومات، اقرأ الخطوات التالية. راجع أيضا ملاحظات تثبيت Linux.
إشعار
Cloud-init >= 21.2 يزيل متطلبات UDF. ومع ذلك، بدون تمكين الوحدة النمطية UDF، لن يتم تحميل CD-ROM أثناء التوفير، مما يمنع تطبيق البيانات المخصصة. الحل البديل هو تطبيق البيانات المخصصة باستخدام بيانات المستخدم. على عكس البيانات المخصصة، لا يتم تشفير بيانات المستخدم. لمزيد من المعلومات، راجع تنسيقات بيانات المستخدم.
RHEL 6 تستخدم إدارة Hyper-V
هام
في 30 نوفمبر 2020، وصلت RHEL 6 إلى نهاية مرحلة الصيانة. تليها مرحلة الصيانة مرحلة العمر الممتد. مع انتقال RHEL 6 من مراحل Full/Maintenance، نوصي بشدة بالترقية إلى RHEL 7 أو 8 أو 9. إذا كان يجب أن تبقى على RHEL 6، نوصي بإضافة الوظيفة الإضافية دعم دورة الحياة الموسعة RHEL.
في Hyper-V Manager، حدد الجهاز الظاهري.
حدد Connect لفتح نافذة وحدة تحكم للجهاز الظاهري.
في RHEL 6،
NetworkManager
يمكن أن تتداخل مع عامل Azure Linux. إلغاء تثبيت هذه الحزمة:sudo rpm -e --nodeps NetworkManager
أنشئ الملف
/etc/sysconfig/network
أو حرره، ثم أضف النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ الملف
/etc/sysconfig/network-scripts/ifcfg-eth0
أو حرره، ثم أضف النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
انقل (أو أزل) قواعد udev لتجنب إنشاء قواعد ثابتة لواجهة Ethernet. تتسبب هذه القواعد في حدوث مشاكل عند استنساخ جهاز ظاهري في Azure أو Hyper-V:
تحذير
تتطلب العديد من أحجام الأجهزة الظاهرية "v5" والأحدث الشبكات المتسارعة. إذا لم يتم تمكينه، فسيعين NetworkManager نفس عنوان IP لجميع واجهات الوظائف الظاهرية. لمنع تكرار عناوين IP، تأكد من تضمين قاعدة udev هذه عند الترحيل إلى حجم أحدث.
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:
sudo chkconfig network on
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
تم دفع حزمة WALinuxAgent،
WALinuxAgent-<version>
، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. لإجراء هذا التعديل، افتح
/boot/grub/menu.lst
في محرر نص. تأكد من أن النواة الافتراضية تتضمن المعلمات التالية:console=ttyS0 earlyprintk=ttyS0
يضمن هذا الإجراء أيضا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في تصحيح المشكلات.
نوصي أيضا بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر. قد يكون هذا التكوين مشكلة لأحجام الأجهزة الظاهرية الأصغر.تأكد من تثبيت خادم shell الآمن (SSH) وتكوينه للبدء في وقت التمهيد، وهو عادةً ما يكون الإعداد الافتراضي. عدِّل
/etc/ssh/sshd_config
لتضمين السطر التالي:ClientAliveInterval 180
تثبيت عامل Azure Linux:
sudo yum install WALinuxAgent sudo chkconfig waagent on
يؤدي تثبيت حزمة WALinuxAgent إلى
NetworkManager
إزالة الحزمتين وNetworkManager-gnome
إذا لم تتم إزالتها بالفعل في الخطوة 3.لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
يمكن لعامل Azure Linux تكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. قرص المورد المحلي هو قرص مؤقت وقد يتم إفراغه إذا تم إلغاء توفير الجهاز الظاهري. بعد تثبيت عامل Azure Linux في الخطوة السابقة، قم بتعديل المعلمات
/etc/waagent.conf
التالية بشكل مناسب:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
إلغاء تسجيل الاشتراك (إذا لزم الأمر):
sudo subscription-manager unregister
إلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure:
إشعار
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير.
sudo waagent -force -deprovision sudo export HISTSIZE=0
حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.
RHEL 7 تستخدم إدارة Hyper-V
في Hyper-V Manager، حدد الجهاز الظاهري.
حدد Connect لفتح نافذة وحدة تحكم للجهاز الظاهري.
أنشئ الملف
/etc/sysconfig/network
أو حرره، ثم أضف النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ الملف
/etc/sysconfig/network-scripts/ifcfg-eth0
أو حرره، ثم أضف النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:
sudo systemctl enable network
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. لإجراء هذا التعديل، افتح
/etc/default/grub
في محرر نص وقم بتحرير المعلمةGRUB_CMDLINE_LINUX
. على سبيل المثال:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" ENABLE_BLSCFG=true
إشعار
إذا كان ENABLE_BLSCFG=false موجودا في
/etc/default/grub
بدلا منENABLE_BLSCFG=true
، فقد لا تعمل أدوات مثل grubedit أو gubby، والتي تعتمد على Boot Loader Specification (BLS) لإدارة إدخالات التمهيد والتكوينات، بشكل صحيح في RHEL 8 و9. إذاENABLE_BLSCFG
لم يكن موجودا، فإن السلوك الافتراضي هوfalse
.يضمن هذا التعديل أيضا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول وتمكين التفاعل مع وحدة التحكم التسلسلية، والتي يمكن أن تساعد دعم Azure في تصحيح المشكلات. يؤدي هذا التكوين أيضا إلى إيقاف تشغيل اصطلاحات تسمية RHEL 7 الجديدة لبطاقات واجهة الشبكة (NICs).
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.بعد الانتهاء من التحرير
/etc/default/grub
، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
إشعار
إذا كنت تقوم بتحميل جهاز ظاهري ممكن ل UEFI، فإن الأمر لتحديث grub هو
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
.تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد، والذي عادةً ما يكون بالإعداد الافتراضي. عدِّل
/etc/ssh/sshd_config
لتضمين السطر التالي:ClientAliveInterval 180
تم دفع حزمة WALinuxAgent،
WALinuxAgent-<version>
، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
تثبيت عامل Azure Linux والأدوات
cloud-init
المساعدة الضرورية الأخرى:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
تكوين
cloud-init
للتعامل مع التزويد:تكوين
waagent
لcloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/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
إشعار
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فقم بتعيين
Provisioning.Agent=disabled
على/etc/waagent.conf
التكوين.تكوين وحدات:
sudo 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
تكوين مصدر بيانات Azure:
sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS" sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF
إذا تم تكوينه، فقم بإزالة ملف التبديل الموجود:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
تكوين
cloud-init
التسجيل:sudo echo "Add console log file" sudo cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # 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
تكوين المبادلة:
لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
في السابق، تم استخدام عامل Azure Linux لتكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. تتم معالجة هذا الإجراء الآن بواسطة
cloud-init
. يجب عدم استخدام عامل Linux لتنسيق قرص المورد لإنشاء ملف التبديل. تعديل المعلمات التالية بشكل/etc/waagent.conf
مناسب:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
إذا كنت تريد تحميل التبديل وتنسيقه وإنشائه، فيمكنك إما:
مرر هذه التعليمة البرمجية كتكوين
cloud-init
في كل مرة تقوم فيها بإنشاء جهاز ظاهري من خلال بيانات مخصصة. نوصي بهذا الأسلوب.استخدم توجيها مخبوزا
cloud-init
في الصورة التي تقوم بهذه الخطوة في كل مرة يتم فيها إنشاء الجهاز الظاهري.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #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/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
إذا كنت تريد إلغاء تسجيل الاشتراك، فشغِّل الأمر التالي:
sudo subscription-manager unregister
إلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure:
تنبيه
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير. يؤدي تشغيل الأمر
waagent -force -deprovision+user
إلى جعل الجهاز المصدر غير قابل للاستخدام. تهدف هذه الخطوة فقط إلى إنشاء صورة معممة.sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.
RHEL 8+ باستخدام Hyper-V Manager
في Hyper-V Manager، حدد الجهاز الظاهري.
حدد Connect لفتح نافذة وحدة تحكم للجهاز الظاهري.
تأكد من أن خدمة Network Manager تبدأ في وقت التمهيد:
sudo systemctl enable NetworkManager.service
تكوين واجهة الشبكة لبدء التشغيل تلقائيا واستخدام بروتوكول تكوين المضيف الديناميكي:
sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
قم بتعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure وتمكين وحدة التحكم التسلسلية.
إزالة معلمات GRUB الحالية:
sudo grub2-editenv - unset kernelopts
قم بالتحرير
/etc/default/grub
في محرر نص، وأضف المعلمات التالية:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
يضمن هذا التعديل أيضا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول وتمكين التفاعل مع وحدة التحكم التسلسلية، والتي يمكن أن تساعد دعم Azure في تصحيح المشكلات. يقوم هذا التكوين أيضًا بإيقاف تشغيل اصطلاحات التسمية الجديدة لـ NIC.
نوصي أيضا بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.بعد الانتهاء من التحرير
/etc/default/grub
، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
بالنسبة إلى جهاز ظاهري ممكن ل UEFI، قم بتشغيل الأمر التالي:
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد، والذي عادةً ما يكون بالإعداد الافتراضي. عدِّل
/etc/ssh/sshd_config
لتضمين السطر التالي:ClientAliveInterval 180
تثبيت عامل Azure Linux والأدوات
cloud-init
المساعدة الضرورية الأخرى:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
تكوين
cloud-init
للتعامل مع التزويد:تكوين
waagent
لcloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/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
إشعار
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فقم بتعيين
Provisioning.Agent=disabled
على/etc/waagent.conf
التكوين.تكوين وحدات:
sudo 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
تكوين مصدر بيانات Azure:
sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS" sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF
إذا تم تكوينه، فقم بإزالة ملف التبديل الموجود:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by defaul swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
تكوين
cloud-init
التسجيل:sudo echo "Add console log file" sudo cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # 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
تكوين المبادلة:
لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
في السابق، تم استخدام عامل Azure Linux لتكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. تتم معالجة هذا الإجراء الآن بواسطة
cloud-init
. يجب عدم استخدام عامل Linux لتنسيق قرص المورد لإنشاء ملف التبديل. تعديل المعلمات التالية بشكل/etc/waagent.conf
مناسب:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
مرر هذه التعليمة البرمجية كتكوين
cloud-init
في كل مرة تقوم فيها بإنشاء جهاز ظاهري من خلال بيانات مخصصة. نوصي بهذا الأسلوب.استخدم توجيها مخبوزا
cloud-init
في الصورة التي تقوم بهذه الخطوة في كل مرة يتم فيها إنشاء الجهاز الظاهري.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #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/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF
إذا كنت تريد إلغاء تسجيل الاشتراك، فشغِّل الأمر التالي:
sudo subscription-manager unregister
قم بتشغيل الأوامر التالية لإلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure:
sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo sudo rm -f /var/log/waagent.log sudo export HISTSIZE=0
تنبيه
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير. يؤدي تشغيل الأمر
waagent -force -deprovision+user
إلى جعل الجهاز المصدر غير قابل للاستخدام. تهدف هذه الخطوة فقط إلى إنشاء صورة معممة.حدد Action>Shut down في Hyper-V Manager. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.
KVM
يوضح لك هذا القسم كيفية استخدام KVM لإعداد توزيع RHEL 6 أو RHEL 7 لتحميلها إلى Azure.
RHEL 6 تستخدم KVM
هام
في 30 نوفمبر 2020، وصلت RHEL 6 إلى نهاية مرحلة الصيانة. تليها مرحلة الصيانة مرحلة العمر الممتد. مع انتقال RHEL 6 من مراحل Full/Maintenance، نوصي بشدة بالترقية إلى RHEL 7 أو 8 أو 9. إذا كان يجب أن تبقى على RHEL 6، نوصي بإضافة الوظيفة الإضافية دعم دورة الحياة الموسعة RHEL.
قم بتنزيل صورة KVM لـ RHEL 6 من موقع Red Hat على الويب.
عيّن كلمة مرور جذر.
أنشئ كلمة مرور مشفرة، وانسخ إخراج الأمر:
sudo openssl passwd -1 changeme
عيّن كلمة مرور جذر مع guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
تغيير الحقل الثاني من المستخدم الجذر من
!!
إلى كلمة المرور المشفرة.إنشاء جهاز ظاهري في KVM من صورة qcow2. قم بتعيين نوع القرص إلى qcow2، وقم بتعيين طراز جهاز واجهة الشبكة الظاهرية إلى virtio. ثم ابدأ تشغيل الجهاز الظاهري وسجل الدخول كجذر.
أنشئ الملف
/etc/sysconfig/network
أو حرره، ثم أضف النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ الملف
/etc/sysconfig/network-scripts/ifcfg-eth0
أو حرره، ثم أضف النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
انقل (أو أزل) قواعد udev لتجنب إنشاء قواعد ثابتة لواجهة Ethernet. تتسبب هذه القواعد في حدوث مشاكل عند استنساخ جهاز ظاهري في Azure أو Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:
sudo chkconfig network on
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. للقيام بهذا التكوين، افتح
/boot/grub/menu.lst
في محرر نص. تأكد من أن النواة الافتراضية تتضمن المعلمات التالية:console=ttyS0 earlyprintk=ttyS0
تضمن هذه الخطوة أيضا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في تصحيح المشكلات.
نوصي أيضا بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.إضافة وحدات Hyper-V إلى initramfs:
حرر
/etc/dracut.conf
، وأضف المحتوى التالي:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
إعادة بناء initramfs:
sudo dracut -f -v
إلغاء التثبيت
cloud-init
:sudo yum remove cloud-init
تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد:
sudo chkconfig sshd on
قم بتعديل
/etc/ssh/sshd_config
لتضمين الأسطر التالية:PasswordAuthentication yes ClientAliveInterval 180
تم دفع حزمة WALinuxAgent،
WALinuxAgent-<version>
، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
تثبيت عامل Azure Linux:
sudo yum install WALinuxAgent sudo chkconfig waagent on
يمكن لعامل Azure Linux تكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. قرص المورد المحلي هو قرص مؤقت، وقد يتم إفراغه إذا تم إلغاء توفير الجهاز الظاهري. بعد تثبيت عامل Azure Linux في الخطوة السابقة، قم بتعديل المعلمات
/etc/waagent.conf
التالية بشكل مناسب:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
إلغاء تسجيل الاشتراك (إذا لزم الأمر):
sudo subscription-manager unregister
قم بتشغيل الأوامر التالية لإلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure.
إشعار
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
إيقاف تشغيل الجهاز الظاهري في KVM.
قم بتحويل صورة qcow2 إلى تنسيق VHD.
إشعار
هناك خطأ معروف في إصدارات >qemu-img =2.2.1 ينتج عنه VHD منسق بشكل غير صحيح. تم إصلاح المشكلة في QEMU 2.6. نوصي باستخدام qemu-img 2.2.0 أو أقل، أو التحديث إلى 2.6 أو أعلى. لمزيد من المعلومات، راجع موقع الويب هذا.
قم أولاً بتحويل الصورة إلى تنسيق أولي:
sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
تأكد من محاذاة حجم الصورة الأولية مع 1 ميغابايت. وإلا، فقم بتقريب الحجم لمحاذاة 1 ميغابايت:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
تحويل القرص الخام إلى قرص ثابت الحجم VHD:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
أو، مع qemu الإصدار 2.6+، قم بتضمين
force_size
الخيار:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 تستخدم KVM
قم بتنزيل صورة KVM لـ RHEL 7 من موقع Red Hat على الويب. يستخدم هذا الإجراء RHEL 7 كمثال.
عيّن كلمة مرور جذر.
أنشئ كلمة مرور مشفرة، وانسخ إخراج الأمر:
sudo openssl passwd -1 changeme
عيّن كلمة مرور جذر مع guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
تغيير الحقل الثاني من المستخدم الجذر من
!!
إلى كلمة المرور المشفرة.إنشاء جهاز ظاهري في KVM من صورة qcow2. قم بتعيين نوع القرص إلى qcow2، وقم بتعيين طراز جهاز واجهة الشبكة الظاهرية إلى virtio. ثم ابدأ تشغيل الجهاز الظاهري وسجل الدخول كجذر.
أنشئ الملف
/etc/sysconfig/network
أو حرره، ثم أضف النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ الملف
/etc/sysconfig/network-scripts/ifcfg-eth0
أو حرره، ثم أضف النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:
sudo systemctl enable network
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. للقيام بهذا التكوين، افتح
/etc/default/grub
في محرر نص وقم بتحرير المعلمةGRUB_CMDLINE_LINUX
. على سبيل المثال:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
يضمن هذا الأمر أيضًا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في مشكلات تصحيح الأخطاء. يقوم الأمر أيضًا بإيقاف تشغيل اصطلاحات تسمية RHEL 7 الجديدة لبطاقات NIC. نوصي أيضا بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.بعد الانتهاء من التحرير
/etc/default/grub
، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
أضف وحدات Hyper-V إلى initramfs.
قم بتعديل
/etc/dracut.conf
وأضف المحتوى:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
إعادة بناء initramfs:
sudo dracut -f -v
إلغاء التثبيت
cloud-init
:sudo yum remove cloud-init
تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد:
sudo systemctl enable sshd
قم بتعديل
/etc/ssh/sshd_config
لتضمين الأسطر التالية:PasswordAuthentication yes ClientAliveInterval 180
تم دفع حزمة WALinuxAgent،
WALinuxAgent-<version>
، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
تثبيت عامل Azure Linux:
sudo yum install WALinuxAgent
waagent
تمكين الخدمة:sudo systemctl enable waagent.service
تثبيت
cloud-init
.اتبع الخطوات الواردة في "Prepare a RHEL 7 VM from Hyper-V Manager"، الخطوة 12، "Install
cloud-init
to handle the provisioning. "تكوين المبادلة:
- لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
- اتبع الخطوات الواردة في "Prepare a RHEL 7 VM from Hyper-V Manager"، الخطوة 13، "Swap configuration".
إلغاء تسجيل الاشتراك (إذا لزم الأمر):
sudo subscription-manager unregister
إلغاء التوفير باتباع الخطوات الواردة في "إعداد RHEL 7 VM من Hyper-V Manager"، الخطوة 15، "Deprovision".
إيقاف تشغيل الجهاز الظاهري في KVM.
قم بتحويل صورة qcow2 إلى تنسيق VHD.
إشعار
هناك خطأ معروف في إصدارات >qemu-img =1.1.1 ينتج عنه VHD منسق بشكل غير صحيح. تم تصحيح المشكلة في QEMU 1.6. نوصي باستخدام qemu-img 1.1.0 أو أقل، أو التحديث إلى 1.6 أو أعلى. لمزيد من المعلومات، راجع موقع الويب هذا.
قم أولاً بتحويل الصورة إلى تنسيق أولي:
sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
تأكد من محاذاة حجم الصورة الأولية مع 1 ميغابايت. وإلا، فقم بتقريب الحجم لمحاذاة 1 ميغابايت:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
تحويل القرص الخام إلى قرص ثابت الحجم VHD:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
أو، مع qemu الإصدار 1.6+، قم بتضمين
force_size
الخيار:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
VMware
يوضح لك هذا القسم كيفية إعداد توزيع RHEL 6 أو RHEL 7 من VMware.
المتطلبات الأساسية
يفترض هذا القسم أنك قمت بالفعل بتثبيت RHEL VM في VMware. للحصول على معلومات حول كيفية تثبيت نظام تشغيل في VMware، راجع دليل تثبيت نظام تشغيل VMware Guest.
- عند تثبيت نظام التشغيل Linux، نوصيك باستخدام الأقسام القياسية بدلاً من LVM، والتي غالبًا ما تكون الخيار الافتراضي للعديد من عمليات التثبيت. يؤدي استخدام الأقسام إلى تجنب تعارض اسم LVM مع جهاز ظاهري مستنسخ، خاصة إذا كان قرص نظام التشغيل بحاجة إلى إرفاقه بجهاز ظاهري آخر لاستكشاف الأخطاء وإصلاحها. يمكن استخدام LVM أو RAID على أقراص البيانات إذا كنت تريد ذلك.
- لا تقم بتكوين قسم تبديل على قرص نظام التشغيل. يمكنك تكوين عامل Linux لإنشاء ملف مبادلة على قرص المورد المؤقت. لمزيد من المعلومات، اقرأ الخطوات التالية.
- عند إنشاء VHD، حدد تخزين القرص الظاهري كملف واحد.
RHEL 6 تستخدم VMware
هام
في 30 نوفمبر 2020، وصلت RHEL 6 إلى نهاية مرحلة الصيانة. تليها مرحلة الصيانة مرحلة العمر الممتد. مع انتقال RHEL 6 من مراحل الملء/الصيانة، نوصي بشدة بالترقية إلى RHEL 7 أو 8 أو 9. إذا كان يجب أن تبقى على RHEL 6، نوصي بإضافة الوظيفة الإضافية دعم دورة الحياة الموسعة RHEL.
في RHEL 6،
NetworkManager
يمكن أن تتداخل مع عامل Azure Linux. إلغاء تثبيت هذه الحزمة:sudo rpm -e --nodeps NetworkManager
أنشئ ملف باسم الشبكة في الدليل
/etc/sysconfig/
الذي يحتوي على النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ الملف
/etc/sysconfig/network-scripts/ifcfg-eth0
أو حرره، ثم أضف النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
انقل (أو أزل) قواعد udev لتجنب إنشاء قواعد ثابتة لواجهة Ethernet. تتسبب هذه القواعد في حدوث مشاكل عند استنساخ جهاز ظاهري في Azure أو Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:
sudo chkconfig network on
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
تم دفع حزمة WALinuxAgent،
WALinuxAgent-<version>
، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. للقيام بهذه الخطوة، افتح
/etc/default/grub
في محرر نص وقم بتحرير المعلمةGRUB_CMDLINE_LINUX
. على سبيل المثال:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
تضمن هذه الخطوة أيضا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في تصحيح المشكلات. نوصي أيضا بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.إضافة وحدات Hyper-V إلى initramfs:
حرر
/etc/dracut.conf
، وأضف المحتوى التالي:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
إعادة بناء initramfs:
sudo dracut -f -v
تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد، والذي عادةً ما يكون بالإعداد الافتراضي. عدِّل
/etc/ssh/sshd_config
لتضمين السطر التالي:ClientAliveInterval 180
تثبيت عامل Azure Linux:
sudo yum install WALinuxAgent sudo chkconfig waagent on
لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
يمكن لعامل Azure Linux تكوين مساحة التبديل تلقائيا باستخدام قرص المورد المحلي المرفق بالجهاز الظاهري بعد توفير الجهاز الظاهري على Azure. قرص المورد المحلي هو قرص مؤقت، وقد يتم إفراغه إذا تم إلغاء توفير الجهاز الظاهري. بعد تثبيت عامل Azure Linux في الخطوة السابقة، قم بتعديل المعلمات
/etc/waagent.conf
التالية بشكل مناسب:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
إلغاء تسجيل الاشتراك (إذا لزم الأمر):
sudo subscription-manager unregister
قم بتشغيل الأوامر التالية لإلغاء توفير الجهاز الظاهري وإعداده للتزويد على Azure:
إشعار
إذا كنت تقوم بترحيل جهاز ظاهري معين ولا تريد إنشاء صورة معممة، فتخط خطوة إلغاء التوفير.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
إيقاف تشغيل الجهاز الظاهري، وتحويل ملف VMDK إلى ملف .vhd.
إشعار
هناك خطأ معروف في إصدارات >qemu-img =2.2.1 ينتج عنه VHD منسق بشكل غير صحيح. تم إصلاح المشكلة في QEMU 2.6. نوصي باستخدام qemu-img 2.2.0 أو أقل، أو التحديث إلى 2.6 أو أعلى. لمزيد من المعلومات، راجع موقع الويب هذا.
قم أولاً بتحويل الصورة إلى تنسيق أولي:
sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
تأكد من محاذاة حجم الصورة الأولية مع 1 ميغابايت. وإلا، فقم بتقريب الحجم لمحاذاة 1 ميغابايت:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
تحويل القرص الخام إلى قرص ثابت الحجم VHD:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
أو، مع qemu الإصدار 2.6+، قم بتضمين
force_size
الخيار:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 تستخدم VMware
أنشئ الملف
/etc/sysconfig/network
أو حرره، ثم أضف النص التالي:NETWORKING=yes HOSTNAME=localhost.localdomain
أنشئ الملف
/etc/sysconfig/network-scripts/ifcfg-eth0
أو حرره، ثم أضف النص التالي:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
إشعار
عند استخدام الشبكات المسرعة، يجب تكوين الواجهة الاصطناعية التي تم إنشاؤها لتكون غير مدارة باستخدام قاعدة udev. يمنع
NetworkManager
هذا الإجراء من تعيين نفس IP إليه مثل الواجهة الأساسية.لتطبيقه:
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
تأكد من أن خدمة الشبكة تبدأ في وقت التمهيد:
sudo systemctl enable network
تسجيل اشتراك Red Hat لتمكين تثبيت الحزم من مستودع RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
تعديل خط تمهيد kernel في تكوين grub الخاص بك لتضمين المزيد من معلمات kernel ل Azure. لإجراء هذا التعديل، افتح
/etc/default/grub
في محرر نص وقم بتحرير المعلمةGRUB_CMDLINE_LINUX
. على سبيل المثال:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
يضمن هذا التكوين أيضًا إرسال جميع رسائل وحدة التحكم إلى المنفذ التسلسلي الأول، والذي يمكن أن يساعد دعم Azure في مشكلات تصحيح الأخطاء. ويقوم أيضًا بإيقاف تشغيل اصطلاحات تسمية RHEL 7 الجديدة لبطاقات NIC. بالإضافة إلى ذلك، نوصي بإزالة المعلمات التالية:
rhgb quiet crashkernel=auto
الأحذية الرسومية والهادئة ليست مفيدة في بيئة سحابية حيث تريد إرسال جميع السجلات إلى المنفذ التسلسلي. يمكنك ترك
crashkernel
الخيار مكونا إذا كنت تريد ذلك. تقلل هذه المعلمة مقدار الذاكرة المتوفرة في الجهاز الظاهري بمقدار 128 ميغابايت أو أكثر، مما قد يكون مشكلة لأحجام الأجهزة الظاهرية الأصغر.بعد الانتهاء من التحرير
/etc/default/grub
، قم بتشغيل الأمر التالي لإعادة إنشاء تكوين grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
إضافة وحدات Hyper-V إلى initramfs:
حرر
/etc/dracut.conf
، وأضف المحتوى:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
إعادة بناء initramfs:
sudo dracut -f -v
تأكد من تثبيت خادم SSH وتكوينه للبدء في وقت التمهيد. عادةً ما يكون هذا الإعداد هو الإعداد الافتراضي. عدِّل
/etc/ssh/sshd_config
لتضمين السطر التالي:ClientAliveInterval 180
تم دفع حزمة WALinuxAgent،
WALinuxAgent-<version>
، إلى مستودع إضافات Red Hat. تمكين مستودع الإضافات:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
تثبيت عامل Azure Linux:
sudo yum install WALinuxAgent sudo systemctl enable waagent.service
تثبيت
cloud-init
:اتبع الخطوات الواردة في "Prepare a RHEL 7 VM from Hyper-V Manager"، الخطوة 12، "Install
cloud-init
to handle the provisioning. "تكوين المبادلة:
- لا تقم بإنشاء مساحة تبديل على قرص نظام التشغيل.
- اتبع الخطوات الواردة في "Prepare a RHEL 7 VM from Hyper-V Manager"، الخطوة 13، "Swap configuration".
إذا كنت تريد إلغاء تسجيل الاشتراك، فشغِّل الأمر التالي:
sudo subscription-manager unregister
إلغاء التوفير باتباع الخطوات الواردة في "إعداد RHEL 7 VM من Hyper-V Manager"، الخطوة 15، "Deprovision".
إيقاف تشغيل الجهاز الظاهري وتحويل ملف VMDK إلى تنسيق VHD.
إشعار
هناك خطأ معروف في إصدارات >qemu-img =2.2.1 ينتج عنه VHD منسق بشكل غير صحيح. تم إصلاح المشكلة في QEMU 2.6. نوصي باستخدام qemu-img 2.2.0 أو أقل، أو التحديث إلى 2.6 أو أعلى. لمزيد من المعلومات، راجع موقع الويب هذا.
قم أولاً بتحويل الصورة إلى تنسيق أولي:
sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
تأكد من محاذاة حجم الصورة الأولية مع 1 ميغابايت. وإلا، فقم بتقريب الحجم لمحاذاة 1 ميغابايت:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
تحويل القرص الخام إلى قرص ثابت الحجم VHD:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
أو، مع qemu الإصدار 2.6+، قم بتضمين
force_size
الخيار:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
ملف بدء التشغيل
يوضح لك هذا القسم كيفية إعداد توزيعة RHEL 7 من ISO باستخدام ملف بدء التشغيل.
RHEL 7 من ملف بدء التشغيل
إنشاء ملف بدء التشغيل الذي يتضمن المحتوى التالي وحفظ الملف. للحصول على معلومات حول تثبيت بدء التشغيل، راجع دليل تثبيت بدء التشغيل.
# Kickstart for provisioning a RHEL 7 Azure VM # System authorization information auth --enableshadow --passalgo=sha512 # Use graphical install text # Don't run the Setup Agent on first boot firstboot --disable # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp # Root password rootpw --plaintext "to_be_disabled" # System services services --enabled="sshd,waagent,NetworkManager" # System timezone timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org # Partition clearing information clearpart --all --initlabel # Clear the MBR zerombr # Disk partitioning information part /boot --fstype="xfs" --size=500 part / --fstyp="xfs" --size=1 --grow --asprimary # System bootloader configuration bootloader --location=mbr # Firewall configuration firewall --disabled # Enable SELinux selinux --enforcing # Don't configure X skipx # Power down the machine after install poweroff %packages @base @console-internet chrony sudo parted -dracut-config-rescue %end %post --log=/var/log/anaconda/post-install.log #!/bin/bash # Register Red Hat Subscription subscription-manager register --username=XXX --password=XXX --auto-attach --force # Install latest repo update yum update -y # Enable extras repo subscription-manager repos --enable=rhel-7-server-extras-rpms # Install WALinuxAgent yum install -y WALinuxAgent # Unregister Red Hat subscription subscription-manager unregister # Enable waaagent at boot-up systemctl enable waagent # Install cloud-init yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons # Configure waagent for cloud-init sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg # Disable the root account usermod root -p '!!' # Configure swap using cloud-init echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #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.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF # Set the cmdline sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub # Enable SSH keepalive sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config # Build the grub cfg grub2-mkconfig -o /boot/grub2/grub.cfg # Configure network cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes EOF sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF # Deprovision and prepare for Azure if you are creating a generalized image sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user rm -f ~/.bash_history export HISTSIZE=0 %end
ضع ملف بدء التشغيل، حيث يمكن لنظام التثبيت الوصول إليه.
في Hyper-V Manager، قم بإنشاء جهاز ظاهري جديد. في صفحة الاتصال بالقرص الثابت الظاهري، حدد إرفاق قرص ثابت ظاهري لاحقا، وأكمل معالج الجهاز الظاهري الجديد.
افتح إعدادات الجهاز الظاهري:
إرفاق VHD جديد بالجهاز الظاهري. تأكد من تحديد تنسيق VHD والحجم الثابت.
أرفق معيار ISO للتثبيت بمحرك أقراص DVD.
عيّن BIOS للتمهيد من القرص المضغوط.
تشغيل الجهاز الظاهري. عند ظهور دليل التثبيت، حدد المفتاح Tab لتكوين خيارات التمهيد.
أدخل
inst.ks=<the location of the kickstart file>
في نهاية خيارات التمهيد، وحدد مفتاح الإدخال Enter .انتظر حتى ينتهي التثبيت. عند الانتهاء، يتم إيقاف تشغيل الجهاز الظاهري تلقائيا. أصبح قرص Linux VHD جاهزاً الآن للتحميل إلى Azure.
المشكلات المعروفة
المشكلة التالية معروفة.
تعذر تضمين برنامج تشغيل Hyper-V في قرص ذاكرة الوصول العشوائي الأولي عند استخدام برنامج تشغيل hypervisor غير Hyper-V
في بعض الحالات، قد لا تتضمن مثبتات Linux برامج تشغيل Hyper-V في قرص ذاكرة الوصول العشوائي الأولي (initrd أو initramfs) ما لم يكتشف Linux أنه يعمل في بيئة Hyper-V.
عند استخدام نظام ظاهرية مختلف (على سبيل المثال، VirtualBox أو Xen) لإعداد صورة Linux، قد تحتاج إلى إعادة إنشاء initrd للتأكد من توفر الوحدات النمطية وkernel hv_storvsc
على الأقل hv_vmbus
على قرص ذاكرة الوصول العشوائي الأولي. هذه المشكلة معروفة، على الأقل على الأنظمة التي تستند إلى توزيع Red Hat المصدر.
لحل هذه المشكلة، قم بإضافة وحدات Hyper-V إلى initramfs وإعادة إنشائها:
حرر /etc/dracut.conf
، وأضف المحتوى التالي:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
إعادة بناء initramfs:
sudo dracut -f -v
لمزيد من المعلومات، راجع إعادة إنشاء initramfs.
المحتوى ذو الصلة
- أنت الآن جاهز لاستخدام RHEL VHD لإنشاء أجهزة ظاهرية جديدة في Azure. إذا كانت هذه هي المرة الأولى التي تقوم فيها بتحميل ملف .vhd إلى Azure، فراجع إنشاء جهاز ظاهري يعمل بنظام التشغيل Linux من قرص مخصص.
- لمزيد من المعلومات حول برامج مراقبة الأجهزة الافتراضية المعتمدة لتشغيل RHEL، راجع موقع Red Hat على الويب.
- لمعرفة المزيد حول استخدام صور RHEL BYOS الجاهزة للإنتاج، انتقل إلى صفحة الوثائق لإحضار اشتراكك الخاص.