Подготовка виртуальной машины на основе Red Hat для Azure Stack HubPrepare a Red Hat-based virtual machine for Azure Stack Hub

В этой статье описано, как подготовить виртуальную машину Red Hat Enterprise Linux (RHEL) для использования в Azure Stack Hub.This article describes how to prepare a Red Hat Enterprise Linux (RHEL) virtual machine (VM) for use in Azure Stack Hub. В статье рассматривается RHEL версии 7.1 и более поздних версий.The versions of RHEL that are covered in this article are 7.1 or later. Низкоуровневые оболочки для подготовки, о которых идет речь в этой статье, — это Hyper-V, Kernel-based Virtual Machine (KVM) и VMware.The hypervisors for preparation that are covered in this article are Hyper-V, kernel-based virtual machine (KVM), and VMware.

Сведения о поддержке Red Hat Enterprise Linux приведены в статье Red Hat и Azure Stack: Red Hat и Azure Stack.For Red Hat Enterprise Linux support information, see Red Hat and Azure Stack: Frequently Asked Questions.

Подготовка виртуальной машины под управлением Red Hat в диспетчере Hyper-VPrepare a Red Hat-based VM from Hyper-V Manager

В этом разделе предполагается, что вы уже получили ISO-файл с веб-сайта Red Hat и установили образ RHEL на виртуальный жесткий диск.This section assumes that you already have an ISO file from the Red Hat website and have installed the RHEL image to a virtual hard disk (VHD). Дополнительные сведения об использовании диспетчера Hyper-V для установки образа операционной системы см. в статье Установка роли Hyper-v и Настройка виртуальной машины.For more information about how to use Hyper-V Manager to install an operating system image, see Install the Hyper-V role and configure a VM.

Замечания по установке RHELRHEL installation notes

  • Формат VHDX не поддерживается в Azure Stack Hub.Azure Stack Hub does not support the VHDX format. В Azure поддерживается только формат фиксированного виртуального жесткого диска.Azure supports only fixed VHD. Вы можете преобразовать диск в формат VHD с помощью диспетчера Hyper-V или командлета convert-vhd.You can use Hyper-V Manager to convert the disk to VHD format, or you can use the convert-vhd cmdlet. Если вы используете VirtualBox, при создании диска выберите фиксированный размер вместо динамически выделяемого (по умолчанию).If you use VirtualBox, select Fixed size as opposed to the default dynamically allocated option when you create the disk.
  • В Azure Stack Hub поддерживаются только виртуальные машины поколения 1.Azure Stack Hub supports only generation 1 VMs. Виртуальную машину первого поколения можно преобразовать из формата VHDX в формат VHD, а также переключить с динамически расширяемого диска на диск фиксированного размера.You can convert a generation 1 VM from VHDX to the VHD file format, and from dynamically expanding to a fixed-size disk. Вы не можете изменить поколение виртуальной машины.You cannot change a VM's generation. Дополнительные сведения см. в статье о том, какое поколение (1 или 2) выбрать для виртуальной машины в Hyper-V.For more information, see Should I create a generation 1 or 2 VM in Hyper-V?.
  • Максимально допустимый размер виртуального жесткого диска составляет 1023 ГБ.The maximum size allowed for the VHD is 1,023 GB.
  • При установке операционной системы Linux рекомендуется использовать стандартные разделы, а не диспетчер логических томов (LVM), который часто используется по умолчанию при установке.When you install the Linux operating system, we recommend that you use standard partitions rather than Logical Volume Manager (LVM), which is often the default for many installations. Это позволит избежать конфликта имен LVM при клонировании виртуальных машин, особенно если нужно подключить диск с OC к другой идентичной виртуальной машине в целях устранения неполадок.This practice avoids LVM name conflicts with cloned VMs, particularly if you ever need to attach an operating system disk to another identical VM for troubleshooting.
  • Требуется поддержка ядра для подключения файловых систем UDF.Kernel support for mounting Universal Disk Format (UDF) file systems is required. При первой загрузке UDF-носитель, подключенный к гостевой машине, передает конфигурацию подготовки на виртуальную машину Linux.At first boot, the UDF-formatted media attached to the guest passes the provisioning configuration to the Linux VM. Агент Azure Linux должен подключить файловую систему UDF для считывания конфигурации и подготовки виртуальной машины.The Azure Linux Agent must mount the UDF file system to read its configuration and provision the VM.
  • Не настраивайте раздел swap на диске операционной системы.Do not configure a swap partition on the operating system disk. Вы можете настроить агент Linux для создания файла подкачки на временном диске ресурсов.The Linux Agent can be configured to create a swap file on the temporary resource disk. Дополнительные сведения описаны ниже.More information about can be found in the following steps.
  • Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ.All VHDs on Azure must have a virtual size aligned to 1 MB. Перед конвертацией диска RAW в формат VHD убедитесь, что размер диска RAW в несколько раз превышает 1 МБ.When converting from a raw disk to VHD, you must ensure that the raw disk size is a multiple of 1 MB before conversion. Дополнительные сведения приведены ниже.More details can be found in the following steps.
  • Azure Stack Hub поддерживает cloud-init.Azure Stack Hub supports cloud-init. Пакет cloud-init — широко используемое средство, используемое для настройки виртуальной машины Linux при ее первой загрузке.Cloud-init is a widely used approach to customize a Linux VM as it boots for the first time. Вы можете использовать cloud-init для установки пакетов, записи файлов или настройки пользователей и параметров безопасности.You can use cloud-init to install packages and write files, or to configure users and security. Так как cloud-init вызывается при начальной загрузке, к вашей конфигурации не нужно применять какие-либо дополнительные действия или агентов.Because cloud-init is called during the initial boot process, there are no additional steps or required agents to apply your configuration. См. инструкции по подготовке существующего образа виртуальной машины Azure Linux к использованию с cloud-init.For instructions on adding cloud-init to your image, see Prepare an existing Linux Azure VM image for use with cloud-init.

Подготовка виртуальной машины RHEL 7 с помощью диспетчера Hyper-VPrepare an RHEL 7 VM from Hyper-V Manager

  1. В диспетчере Hyper-V выберите виртуальную машину.In Hyper-V Manager, select the VM.

  2. Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.Select Connect to open a console window for the VM.

  3. Создайте или измените файл /etc/sysconfig/network, добавив следующий текст:Create or edit the /etc/sysconfig/network file, and add the following text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Создайте или измените файл /etc/sysconfig/network-scripts/ifcfg-eth0, добавив следующий текст в соответствии с потребностями:Create or edit the /etc/sysconfig/network-scripts/ifcfg-eth0 file, and add the following text as needed:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Убедитесь, что сетевая служба запускается во время загрузки, выполнив следующую команду:Ensure that the network service starts at boot time by running the following command:

    sudo systemctl enable network
    
  6. Зарегистрируйте подписку Red Hat, чтобы активировать установку пакетов из репозитория RHEL, запустив следующую команду:Register your Red Hat subscription to enable the installation of packages from the RHEL repository by running the following command:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Измените строку загрузки ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure.Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. Для этого откройте файл /etc/default/grub в текстовом редакторе и измените параметр GRUB_CMDLINE_LINUX.To make this modification, open /etc/default/grub in a text editor, and modify the GRUB_CMDLINE_LINUX parameter. Пример:For example:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Это изменение гарантирует отправку всех сообщений консоли на первый последовательный порт, что может помочь службе поддержки Azure при отладке.This modification ensures all console messages are sent to the first serial port, which can assist Azure support with debugging issues. Также будут отключены новые соглашения об именовании RHEL 7 для сетевых карт.This configuration also turns off the new RHEL 7 naming conventions for NICs.

    Графическая и "тихая" загрузка бесполезны в облачной среде, в которой нам нужно, чтобы все журналы отправлялись на последовательный порт.Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. При желании можно оставить параметр crashkernel.You can leave the crashkernel option configured if desired. Этот параметр сокращает объем доступной памяти на виртуальной машине на 128 MБ и более. Это может оказаться проблемой для виртуальных машин небольшого размера.This parameter reduces the amount of available memory in the VM by 128 MB or more, which might be problematic on smaller VM sizes. Мы рекомендуем удалить следующие параметры:We recommend that you remove the following parameters:

    rhgb quiet crashkernel=auto
    
  8. После внесения изменений в файл /etc/default/grub выполните следующую команду, чтобы повторно создать конфигурацию grub:After you're done editing /etc/default/grub, run the following command to rebuild the grub configuration:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  9. Необязательно: завершение и удаление cloud-init :Optional: stop and Uninstall cloud-init:

    systemctl stop cloud-init
    yum remove cloud-init
    
  10. Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки (что обычно задано по умолчанию).Ensure that the SSH server is installed and configured to start at boot time, which is usually the default. Измените файл /etc/ssh/sshd_config , добавив в него следующую строку:Modify /etc/ssh/sshd_config to include the following line:

    ClientAliveInterval 180
    
  11. При создании пользовательского виртуального жесткого диска для концентратора Azure Stack Обратите внимание, что версии WALinuxAgent между 2.2.20 и 2.2.35 (обе монопольные) не работают в средах центра Azure Stack до выпуска 1910.When creating a custom vhd for Azure Stack Hub, note that WALinuxAgent versions between 2.2.20 and 2.2.35 (both exclusive) do not work on Azure Stack Hub environments before the 1910 release. Для подготовки образа можно использовать версии 2.2.20 и 2.2.35.You can use versions 2.2.20/2.2.35 to prepare your image. Чтобы для подготовки пользовательского образа использовать версии новее 2.2.35, обновите Azure Stack Hub до выпуска 1903 или более позднего выпуска либо установите исправление 1901 или 1902.To use versions later than 2.2.35 to prepare your custom image, update your Azure Stack Hub to the 1903 release or later, or apply the 1901/1902 hotfix.

    До выпуска 1910: чтобы скачать совместимые WALinuxAgent, выполните следующие действия:Before 1910 release: follow these instructions to download a compatible WALinuxAgent:

    1. Загрузите средства установки:Download the setup tools:

      wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz --no-check-certificate
      tar xzf setuptools-7.0.tar.gz
      cd setuptools-7.0
      
    2. Скачайте и распакуйте версию 2.2.20 агента из GitHub:Download and unzip the 2.2.20 version of the agent from GitHub:

      wget https://github.com/Azure/WALinuxAgent/archive/v2.2.20.zip
      unzip v2.2.20.zip
      cd WALinuxAgent-2.2.20
      
    3. Установка Setup.py:Install setup.py:

      sudo python setup.py install
      
    4. Перезапустить waagent:Restart waagent:

      sudo systemctl restart waagent
      
    5. Проверьте, совпадает ли версия агента со скачанной версией.Test if the agent version matches the one you downloaded. В этом примере это должно быть 2.2.20:For this example, it should be 2.2.20:

      waagent -version
      

    После выпуска 1910 выполните следующие инструкции, чтобы скачать совместимый WALinuxAgent:After the 1910 release, follow these instructions to download a compatible WALinuxAgent:

    1. Пакет WALinuxAgent WALinuxAgent-<version> был отправлен в репозиторий дополнительных компонентов Red Hat.The WALinuxAgent package, WALinuxAgent-<version>, has been pushed to the Red Hat extras repository. Включите репозиторий дополнений, выполнив следующую команду:Enable the extras repository by running the following command:

      subscription-manager repos --enable=rhel-7-server-extras-rpms
      
    2. Установите агент Linux для Azure, выполнив следующую команду:Install the Azure Linux Agent by running the following command:

      sudo yum install WALinuxAgent
      sudo systemctl enable waagent.service
      
  12. Не создавайте пространство подкачки на диске ОС.Do not create swap space on the operating system disk.

    Агент Linux для Azure может автоматически настраивать размер области подкачки с использованием локального диска с ресурсами, подключенного к виртуальной машине после подготовки в Azure.The Azure Linux Agent can automatically configure swap space by using the local resource disk that's attached to the VM after the VM is provisioned on Azure. Локальный диск ресурсов является временным и может быть очищен при отмене подготовки виртуальной машины.The local resource disk is a temporary disk, and it might be emptied when the VM is de-provisioned. После установки агента Linux для Azure (см. предыдущий шаг) измените соответствующим образом следующие параметры в файле /etc/waagent.conf:After you install the Azure Linux Agent in the previous step, modify the following parameters in /etc/waagent.conf appropriately:

    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.
    
  13. Если вы хотите отменить регистрацию подписки, выполните следующую команду:If you want to un-register the subscription, run the following command:

    sudo subscription-manager unregister
    
  14. Если вы используете систему, развернутую с помощью центра сертификации предприятия, виртуальная машина RHEL не будет доверять корневому сертификату Azure Stack Hub.If you're using a system that was deployed using an Enterprise Certificate Authority, the RHEL VM won't trust the Azure Stack Hub root certificate. Этот сертификат необходимо поместить в хранилище доверенных корневых сертификатов.You must place that certificate into the trusted root store. Дополнительные сведения см. в разделе о добавлении доверенных корневых сертификатов на сервер.For more information, see Adding trusted root certificates to the server.

  15. Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее к работе в Azure:Run the following commands to de-provision the VM and prepare it for provisioning on Azure:

    sudo waagent -force -deprovision
    export HISTSIZE=0
    logout
    
  16. В диспетчере Hyper-V выберите Действие, затем Завершение работы.Select Action, then Shut Down in Hyper-V Manager.

  17. Преобразуйте виртуальный жесткий диск в VHD фиксированного размера с помощью функции изменения диска в диспетчере Hyper-V или Convert-VHD команды PowerShell.Convert the VHD to a fixed size VHD using either the Hyper-V Manager Edit disk feature, or the Convert-VHD PowerShell command. Виртуальный жесткий диск Linux готов к передаче в Azure.Your Linux VHD is now ready to be uploaded to Azure.

Подготовка виртуальной машины под управлением Red Hat в KVMPrepare a Red Hat-based virtual machine from KVM

  1. Скачайте образ KVM RHEL 7 с веб-сайта Red Hat.Download the KVM image of RHEL 7 from the Red Hat website. В примере используется RHEL 7.This procedure uses RHEL 7 as the example.

  2. Задайте пароль пользователя root.Set a root password.

    Создайте зашифрованный пароль и скопируйте результат выполнения команды:Generate an encrypted password, and copy the output of the command:

    openssl passwd -1 changeme
    

    Установите корневой пароль с помощью Guestfish:Set a root password with guestfish:

    guestfish --rw -a <image-name>
    > <fs> run
    > <fs> list-filesystems
    > <fs> mount /dev/sda1 /
    > <fs> vi /etc/shadow
    > <fs> exit
    

    Во втором поле привилегированного пользователя замените "!!"Change the second field of root user from "!!" зашифрованным паролем.to the encrypted password.

  3. Создайте виртуальную машину в KVM из образа qcow2 .Create a VM in KVM from the qcow2 image. Укажите тип диска qcow2 и задайте для модели устройства интерфейса виртуальной сети значение virtio.Set the disk type to qcow2, and set the virtual network interface device model to virtio. Затем запустите виртуальную машину и войдите в систему как привилегированный пользователь.Then, start the VM, and sign in as root.

  4. Создайте или измените файл /etc/sysconfig/network, добавив следующий текст:Create or edit the /etc/sysconfig/network file, and add the following text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Создайте или измените /etc/sysconfig/network-scripts/ifcfg-eth0 файл, а затем добавьте следующий текст:Create or edit the /etc/sysconfig/network-scripts/ifcfg-eth0 file, and then add the following text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  6. Убедитесь, что сетевая служба запускается во время загрузки, выполнив следующую команду:Ensure that the network service starts at boot time by running the following command:

    sudo systemctl enable network
    
  7. Зарегистрируйте подписку Red Hat, чтобы активировать установку пакетов из репозитория RHEL, запустив следующую команду:Register your Red Hat subscription to enable installation of packages from the RHEL repository by running the following command:

    subscription-manager register --auto-attach --username=XXX --password=XXX
    
  8. Измените строку загрузки ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure.Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. Для этого откройте файл /etc/default/grub в текстовом редакторе и измените параметр GRUB_CMDLINE_LINUX.To do this configuration, open /etc/default/grub in a text editor, and modify the GRUB_CMDLINE_LINUX parameter. Пример:For example:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Эта команда также гарантирует отправку всех сообщений консоли на первый последовательный порт, что может помочь технической поддержке Azure в плане отладки.This command also ensures that all console messages are sent to the first serial port, which can assist Azure support with debugging issues. Также будут отключены новые соглашения об именовании RHEL 7 для сетевых карт.The command also turns off the new RHEL 7 naming conventions for NICs.

    Графическая и "тихая" загрузка бесполезны в облачной среде, где все журналы отправляются на последовательный порт.Graphical and quiet boot are not useful in a cloud environment where all the logs are sent to the serial port. При желании можно оставить параметр crashkernel.You can leave the crashkernel option configured if desired. Этот параметр сокращает объем доступной памяти на виртуальной машине на 128 MБ и более. Это может оказаться проблемой для виртуальных машин небольшого размера.This parameter reduces the amount of available memory in the VM by 128 MB or more, which might be problematic on smaller VM sizes. Мы рекомендуем удалить следующие параметры:We recommend you remove the following parameters:

    rhgb quiet crashkernel=auto
    
  9. После внесения изменений в файл /etc/default/grub выполните следующую команду, чтобы повторно создать конфигурацию grub:After you're done editing /etc/default/grub, run the following command to rebuild the grub configuration:

    grub2-mkconfig -o /boot/grub2/grub.cfg
    
  10. Добавьте модули Hyper-V в initramfs.Add Hyper-V modules into initramfs.

    Измените файл /etc/dracut.conf , добавив в него следующее содержимое:Edit /etc/dracut.conf and add content:

    add_drivers+="hv_vmbus hv_netvsc hv_storvsc"
    

    Повторно создайте initramfs:Rebuild initramfs:

    dracut -f -v
    
  11. Необязательно после выпуска 1910: завершение и удаление cloud-init :Optional after 1910 release: stop and uninstall cloud-init:

    systemctl stop cloud-init
    yum remove cloud-init
    
  12. Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки:Ensure that the SSH server is installed and configured to start at boot time:

    systemctl enable sshd
    

    Измените файл /etc/ssh/sshd_config, включив в него следующие строки:Modify /etc/ssh/sshd_config to include the following lines:

    PasswordAuthentication yes
    ClientAliveInterval 180
    
  13. При создании пользовательского виртуального жесткого диска для концентратора Azure Stack Обратите внимание, что версии WALinuxAgent между 2.2.20 и 2.2.35 (обе монопольные) не работают в средах центра Azure Stack до выпуска 1910.When creating a custom VHD for Azure Stack Hub, note that WALinuxAgent versions between 2.2.20 and 2.2.35 (both exclusive) do not work on Azure Stack Hub environments before the 1910 release. Для подготовки образа можно использовать версии 2.2.20 и 2.2.35.You can use versions 2.2.20/2.2.35 to prepare your image. Чтобы использовать версии позже 2.2.35 для подготовки пользовательского образа, обновите центр Azure Stack до версии 1903 или более поздней или примените исправление 1901/1902.To use versions later than 2.2.35 to prepare your custom image, update your Azure Stack Hub to 1903 release or later, or apply the 1901/1902 hotfix.

    Перед выпуском 1910 выполните следующие действия, чтобы скачать совместимый WALinuxAgent:Before the 1910 release: follow these instructions to download a compatible WALinuxAgent:

    1. Загрузите средства установки:Download the setup tools:

      wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz --no-check-certificate
      tar xzf setuptools-7.0.tar.gz
      cd setuptools-7.0
      
    2. Скачайте и распакуйте версию 2.2.20 агента из GitHub:Download and unzip the 2.2.20 version of the agent from GitHub:

      wget https://github.com/Azure/WALinuxAgent/archive/v2.2.20.zip
      unzip v2.2.20.zip
      cd WALinuxAgent-2.2.20
      
    3. Установка Setup.py:Install setup.py:

      sudo python setup.py install
      
    4. Перезапустите waagent.Restart waagent.

      sudo systemctl restart waagent
      
    5. Проверьте, совпадает ли версия агента со скачанной версией.Test if the agent version matches the one you downloaded. В этом примере это должно быть 2.2.20:For this example, it should be 2.2.20:

      waagent -version
      

    После выпуска 1910 выполните следующие действия, чтобы скачать совместимый WALinuxAgent:After the 1910 release: follow these instructions to download a compatible WALinuxAgent:

    1. Пакет WALinuxAgent WALinuxAgent-<version> был отправлен в репозиторий дополнительных компонентов Red Hat.The WALinuxAgent package, WALinuxAgent-<version>, has been pushed to the Red Hat extras repository. Включите репозиторий дополнений, выполнив следующую команду:Enable the extras repository by running the following command:

      subscription-manager repos --enable=rhel-7-server-extras-rpms
      
    2. Установите агент Linux для Azure, выполнив следующие команды:Install the Azure Linux Agent by running the following commands:

      sudo yum install WALinuxAgent
      sudo systemctl enable waagent.service
      
  14. Не создавайте пространство подкачки на диске ОС.Do not create swap space on the operating system disk.

    Агент Linux для Azure может автоматически настраивать размер области подкачки с использованием локального диска с ресурсами, подключенного к виртуальной машине после подготовки в Azure.The Azure Linux Agent can automatically configure swap space by using the local resource disk that's attached to the VM after the VM is provisioned on Azure. Локальный диск ресурсов является временным и может быть очищен при отмене подготовки виртуальной машины.The local resource disk is a temporary disk, and it might be emptied when the VM is de-provisioned. После установки агента Linux для Azure (см. предыдущий шаг) измените соответствующим образом следующие параметры в файле /etc/waagent.conf:After you install the Azure Linux Agent in the previous step, modify the following parameters in /etc/waagent.conf appropriately:

    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.
    
  15. Отмените регистрацию подписки (при необходимости), выполнив следующую команду:Un-register the subscription (if necessary) by running the following command:

    subscription-manager unregister
    
  16. Если вы используете систему, развернутую с помощью центра сертификации предприятия, виртуальная машина RHEL не будет доверять корневому сертификату Azure Stack Hub.If you're using a system that was deployed using an Enterprise Certificate Authority, the RHEL VM won't trust the Azure Stack Hub root certificate. Этот сертификат необходимо поместить в хранилище доверенных корневых сертификатов.You must place that certificate into the trusted root store. Дополнительные сведения см. в разделе о добавлении доверенных корневых сертификатов на сервер.For more information, see Adding trusted root certificates to the server.

  17. Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее к работе в Azure:Run the following commands to de-provision the VM and prepare it for provisioning on Azure:

    sudo waagent -force -deprovision
    export HISTSIZE=0
    logout
    
  18. Завершите работу виртуальной машины в KVM.Shut down the VM in KVM.

  19. Конвертируйте образ qcow2 в формат VHD.Convert the qcow2 image to the VHD format.

    Примечание

    Обнаружена известная ошибка в версиях qemu-img >= 2.2.1, которая приводит к неправильному форматированию виртуального жесткого диска.There is a known bug in qemu-img versions >=2.2.1 that results in an improperly formatted VHD. Эта проблема устранена в QEMU версии 2.6.The issue has been fixed in QEMU 2.6. Рекомендуется использовать qemu-img версии 2.2.0 или более ранних версий. В противном случае выполните обновление до версии 2.6 или выше.It's recommended that you use either qemu-img 2.2.0 or lower, or update to 2.6 or higher. Дополнительные сведения см. в этой QEMU записи.For more information, see this QEMU post.

    Для начала конвертируйте образ в формат RAW:First convert the image to raw format:

    qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
    

    Убедитесь, что размер образа в формате RAW соответствует 1 МБ.Make sure that the size of the raw image is aligned with 1 MB. Если это не так, округлите размер до 1 МБ:Otherwise, round up the size to align with 1 MB:

    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))
    qemu-img resize rhel-7.4.raw $rounded_size
    

    Конвертируйте диск в формате RAW в виртуальный жесткий диск фиксированного размера:Convert the raw disk to a fixed-sized VHD:

    qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Иначе с помощью qemu версии 2.6 или выше добавьте параметр force_size:Or, with qemu version 2.6+, include the force_size option:

    qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

Подготовка виртуальной машины на основе Red Hat с помощью VMwarePrepare a Red Hat-based VM from VMware

В этом разделе предполагается, что вы уже установили виртуальную машину RHEL в VMware.This section assumes that you've already installed an RHEL VM in VMware. Дополнительные сведения об установке операционной системы на виртуальной машине VMware см. здесь.For details about how to install an operating system in VMware, see VMware Guest Operating System Installation Guide.

  • При установке операционной системы Linux мы рекомендуем использовать стандартные разделы, а не LVM (который зачастую используется по умолчанию при установке).When you install the Linux operating system, we recommend that you use standard partitions rather than LVM, which is often the default for many installations. Этот метод позволит избежать конфликта имен LVM при клонировании виртуальных машин, особенно если диск с операционной системой может быть подключен к другой виртуальной машине в целях устранения неполадок.This method avoids LVM name conflicts with cloned VMs, particularly if an operating system disk ever needs to be attached to another VM for troubleshooting. При желании на дисках с данными можно использовать LVM или RAID.LVM or RAID can be used on data disks if preferred.
  • Не настраивайте раздел swap на диске операционной системы.Do not configure a swap partition on the operating system disk. Вы можете настроить агент Linux для создания файла подкачки на временном диске с ресурсами.You can configure the Linux agent to create a swap file on the temporary resource disk. Дополнительные сведения об этой конфигурации приведены ниже.You can find more information about this configuration in the following steps.
  • При создании виртуального жесткого диска выберите параметр Store virtual disk as a single file(Сохранять виртуальный диск как один файл).When you create the virtual hard disk, select Store virtual disk as a single file.

Подготовка виртуальной машины RHEL 7 с помощью VMwarePrepare an RHEL 7 VM from VMware

  1. Создайте или измените файл /etc/sysconfig/network, добавив следующий текст:Create or edit the /etc/sysconfig/network file, and add the following text:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  2. Создайте или измените файл /etc/sysconfig/network-scripts/ifcfg-eth0, добавив следующий текст:Create or edit the /etc/sysconfig/network-scripts/ifcfg-eth0 file, and add the following text:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  3. Убедитесь, что сетевая служба запускается во время загрузки, выполнив следующую команду:Ensure that the network service starts at boot time by running the following command:

    sudo chkconfig network on
    
  4. Зарегистрируйте подписку Red Hat, чтобы активировать установку пакетов из репозитория RHEL, запустив следующую команду:Register your Red Hat subscription to enable the installation of packages from the RHEL repository by running the following command:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  5. Измените строку загрузки ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure.Modify the kernel boot line in your grub configuration to include additional kernel parameters for Azure. Для этого откройте файл /etc/default/grub в текстовом редакторе.To make this modification, open /etc/default/grub in a text editor. Измените параметр GRUB_CMDLINE_LINUX.Modify the GRUB_CMDLINE_LINUX parameter. Пример:For example:

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Это также гарантирует отправку всех сообщений консоли на первый последовательный порт, что может помочь технической поддержке Azure в плане отладки.This configuration also ensures that all console messages are sent to the first serial port, which can assist Azure support with debugging issues. Также будут отключены новые соглашения об именовании RHEL 7 для сетевых карт.It also turns off the new RHEL 7 naming conventions for NICs. Мы рекомендуем удалить следующие параметры:We recommend that you remove the following parameters:

    rhgb quiet crashkernel=auto
    

    Графическая и "тихая" загрузка бесполезны в облачной среде, в которой нам нужно, чтобы все журналы отправлялись на последовательный порт.Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. При желании можно оставить параметр crashkernel.You can leave the crashkernel option configured if desired. Этот параметр сокращает объем доступной памяти на виртуальной машине на 128 MБ и более. Это может оказаться проблемой для виртуальных машин небольшого размера.This parameter reduces the amount of available memory in the VM by 128 MB or more, which might be problematic on smaller VM sizes.

  6. После внесения изменений в файл /etc/default/grub выполните следующую команду, чтобы повторно создать конфигурацию grub:After you're done editing /etc/default/grub, run the following command to rebuild the grub configuration:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  7. Добавьте модули Hyper-V в initramfs.Add Hyper-V modules to initramfs.

    Измените файл /etc/dracut.conf, добавив в него следующее содержимое:Edit /etc/dracut.conf, add content:

    add_drivers+="hv_vmbus hv_netvsc hv_storvsc"
    

    Повторно создайте initramfs:Rebuild initramfs:

    dracut -f -v
    
  8. Необязательно после выпуска 1910: завершение и удаление cloud-init :Optional after 1910 release: stop and uninstall cloud-init:

    systemctl stop cloud-init
    yum remove cloud-init
    
  9. Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки.Ensure that the SSH server is installed and configured to start at boot time. Обычно этот параметр задан по умолчанию.This setting is usually the default. Измените файл /etc/ssh/sshd_config , добавив в него следующую строку:Modify /etc/ssh/sshd_config to include the following line:

    ClientAliveInterval 180
    
  10. При создании пользовательского виртуального жесткого диска для центра Azure Stack Обратите внимание, что WALinuxAgent версии между 2.2.20 и 2.2.35 (обе монопольные) не работают в средах центра Azure Stack до выпуска 1910.When creating a custom VHD for Azure Stack Hub, note that WALinuxAgent versions between 2.2.20 and 2.2.35 (both exclusive) don't work on Azure Stack Hub environments before the 1910 release. Для подготовки образа можно использовать версии 2.2.20 и 2.2.35.You can use versions 2.2.20/2.2.35 to prepare your image. Чтобы для подготовки пользовательского образа использовать версии новее 2.2.35, обновите Azure Stack Hub до выпуска 1903 или более позднего выпуска либо установите исправление 1901 или 1902.To use versions later than 2.2.35 to prepare your custom image, update your Azure Stack Hub to the 1903 release or later, or apply the 1901/1902 hotfix.

    До выпуска 1910: чтобы скачать совместимые WALinuxAgent, выполните следующие действия:Before 1910 release: follow these instructions to download a compatible WALinuxAgent:

    1. Загрузите средства установки:Download the setup tools:

      wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz --no-check-certificate
      tar xzf setuptools-7.0.tar.gz
      cd setuptools-7.0
      
    2. Скачайте и распакуйте версию 2.2.20 агента из GitHub:Download and unzip the 2.2.20 version of the agent from GitHub:

      wget https://github.com/Azure/WALinuxAgent/archive/v2.2.20.zip
      unzip v2.2.20.zip
      cd WALinuxAgent-2.2.20
      
    3. Установка Setup.py:Install setup.py:

      sudo python setup.py install
      
    4. Перезапустить waagent:Restart waagent:

      sudo systemctl restart waagent
      
    5. Проверьте, совпадает ли версия агента со скачанной версией.Test if the agent version matches the one you downloaded. В этом примере это должно быть 2.2.20:For this example, it should be 2.2.20:

      waagent -version
      

    После выпуска 1910 выполните следующие действия, чтобы скачать совместимый WALinuxAgent:After the 1910 release: follow these instructions to download a compatible WALinuxAgent:

    1. Пакет WALinuxAgent WALinuxAgent-<version> был отправлен в репозиторий дополнительных компонентов Red Hat.The WALinuxAgent package, WALinuxAgent-<version>, has been pushed to the Red Hat extras repository. Включите репозиторий дополнений, выполнив следующую команду:Enable the extras repository by running the following command:

      subscription-manager repos --enable=rhel-7-server-extras-rpms
      
    2. Установите агент Linux для Azure, выполнив следующую команду:Install the Azure Linux Agent by running the following command:

      sudo yum install WALinuxAgent
      sudo systemctl enable waagent.service
      
  11. Не создавайте пространство подкачки на диске ОС.Do not create swap space on the operating system disk.

    Агент Linux для Azure может автоматически настраивать размер области буфера с использованием локального диска с ресурсами, подключенного к виртуальной машине после ее подготовки к работе в Azure.The Azure Linux Agent can automatically configure swap space by using the local resource disk attached to the VM after the VM is provisioned on Azure. Следует отметить, что локальный диск ресурсов является временным диском и должен быть очищен при отмене подготовки виртуальной машины к работе.Note that the local resource disk is a temporary disk, and it might be emptied when the VM is de-provisioned. После установки агента Linux для Azure (см. предыдущий шаг) измените соответствующим образом следующие параметры в файле /etc/waagent.conf:After you install the Azure Linux Agent in the previous step, modify the following parameters in /etc/waagent.conf appropriately:

    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.
    
  12. Если вы хотите отменить регистрацию подписки, выполните следующую команду:If you want to un-register the subscription, run the following command:

    sudo subscription-manager unregister
    
  13. Если вы используете систему, развернутую с помощью центра сертификации предприятия, виртуальная машина RHEL не будет доверять корневому сертификату Azure Stack Hub.If you're using a system that was deployed using an Enterprise Certificate Authority, the RHEL VM won't trust the Azure Stack Hub root certificate. Необходимо поместить его в хранилище доверенных корневых сертификатов.You must place that into the trusted root store. Дополнительные сведения см. в разделе о добавлении доверенных корневых сертификатов на сервер.For more information, see Adding trusted root certificates to the server.

  14. Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее к работе в Azure:Run the following commands to de-provision the VM and prepare it for provisioning on Azure:

    sudo waagent -force -deprovision
    export HISTSIZE=0
    logout
    
  15. Завершите работу виртуальной машины и конвертируйте файл VMDK в формат VHD.Shut down the VM, and convert the VMDK file to the VHD format.

    Примечание

    Обнаружена известная ошибка в qemu-img версиях >= 2.2.1, которая приводит к неправильному форматированию виртуального жесткого диска.There is a known bug in qemu-img versions >=2.2.1 that results in an improperly formatted VHD. Эта проблема устранена в QEMU версии 2.6.The issue has been fixed in QEMU 2.6. Рекомендуется использовать qemu-img версии 2.2.0 или более ранних версий. В противном случае выполните обновление до версии 2.6 или выше.It's recommended that you use either qemu-img 2.2.0 or lower, or update to 2.6 or higher.

    Для начала конвертируйте образ в формат RAW:First convert the image to raw format:

    qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
    

    Убедитесь, что размер образа в формате RAW соответствует 1 МБ.Make sure that the size of the raw image is aligned with 1 MB. Если это не так, округлите размер до 1 МБ:Otherwise, round up the size to align with 1 MB:

    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))
    qemu-img resize rhel-7.4.raw $rounded_size
    

    Конвертируйте диск в формате RAW в виртуальный жесткий диск фиксированного размера:Convert the raw disk to a fixed-sized VHD:

    qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
    

    Иначе с помощью qemu версии 2.6 или выше добавьте параметр force_size:Or, with qemu version 2.6+, include the force_size option:

    qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
    

Подготовка виртуальной машины под управлением Red Hat из ISO-образа с помощью автоматического использования файла kickstartPrepare a Red Hat-based VM from an ISO by using a kickstart file automatically

  1. Создайте файл kickstart, который будет включать содержимое ниже, и сохраните его.Create a kickstart file that includes the following content, and save the file. Остановка и удаление Cloud-init является необязательным (Cloud-init поддерживается в центре Azure Stack после выпуска 1910).Stopping and uninstalling cloud-init is optional (cloud-init is supported on Azure Stack Hub after the 1910 release). Установите агент из репозитория RedHat только для выпуска 1910 и выше.Install the agent from the redhat repo only after the 1910 release. До выпуска 1910 используйте репозиторий Azure, как в предыдущем разделе.Prior to 1910, use the Azure repo as done in the previous section. Дополнительные сведения об установке Kickstart см. в разделе руководства по установке Kickstart.For details about kickstart installation, see the Kickstart installation guide.

    Kickstart for provisioning a RHEL 7 Azure VM
    
    System authorization information
    auth --enableshadow --passalgo=sha512
    
    Use graphical install
    text
    
    Do not 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
    
    Stop and Uninstall cloud-init
    systemctl stop cloud-init
    yum remove cloud-init
    
    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
    
    Disable the root account
    usermod root -p '!!'
    
    Configure swap in WALinuxAgent
    sed -i 's/^\(ResourceDisk\.EnableSwap\)=[Nn]$/\1=y/g' /etc/waagent.conf
    sed -i 's/^\(ResourceDisk\.SwapSizeMB\)=[0-9]*$/\1=2048/g' /etc/waagent.conf
    
    Set the cmdline
    sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0 rootdelay=300"/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
    NM_CONTROLLED=no
    EOF
    
    Deprovision and prepare for Azure
    waagent -force -deprovision
    
    %end
    
  2. Поместите файл Kickstart в расположение, откуда система установки сможет получить к ней доступ.Place the kickstart file in a location from which the installation system can access it.

  3. В диспетчере Hyper-V создайте новую виртуальную машину.In Hyper-V Manager, create a new VM. На странице Подключить виртуальный жесткий диск выберите параметр Подключить виртуальный жесткий диск позднее и выполните инструкции в мастере создания виртуальной машины.On the Connect Virtual Hard Disk page, select Attach a virtual hard disk later, and complete the New Virtual Machine Wizard.

  4. Откройте параметры виртуальной машины:Open the VM settings:

    а.a. Загрузите новый виртуальный жесткий диск на виртуальную машину.Attach a new virtual hard disk to the VM. Выберите параметры VHD Format (Формат VHD) и Фиксированный размер.Make sure to select VHD Format and Fixed Size.

    b.b. Подключите установочный ISO-образ к DVD-дисководу.Attach the installation ISO to the DVD drive.

    c.c. В BIOS выберите загрузку с компакт-диска.Set the BIOS to boot from CD.

  5. Запустите виртуальную машину.Start the VM. Когда отобразится руководство по установке, нажмите клавишу TAB , чтобы настроить параметры загрузки.When the installation guide appears, press Tab to configure the boot options.

  6. Введите inst.ks=<the location of the kickstart file> в конце параметров загрузки и нажмите клавишу ВВОД.Enter inst.ks=<the location of the kickstart file> at the end of the boot options, and press Enter.

  7. Дождитесь завершения процесса установки.Wait for the installation to finish. По окончании процесса виртуальная машина завершит работу автоматически.When it's finished, the VM is shut down automatically. Виртуальный жесткий диск Linux готов к передаче в Azure.Your Linux VHD is now ready to be uploaded to Azure.

Известные проблемыKnown issues

Не удалось включить драйвер Hyper-V в начальный электронный диск при использовании низкоуровневой оболочки Hyper VThe Hyper-V driver couldn't be included in the initial RAM disk when using a non-Hyper-V hypervisor

В некоторых случаях установщики Linux могут не включать драйверы для Hyper-V в начальный электронный диск (initrd или initramfs), если только не обнаружат, что он работает в среде Hyper-V.In some cases, Linux installers might not include the drivers for Hyper-V in the initial RAM disk (initrd or initramfs) unless Linux detects that it's running in a Hyper-V environment.

Если для подготовки образа Linux используется другая система виртуализации (например, Oracle VM VirtualBox, Xen Project и пр.), вам может потребоваться выполнить повторную сборку initrd, чтобы убедиться, что на начальном электронном диске доступны по крайней мере модули ядра hv_vmbus и hv_storvsc.When you're using a different virtualization system (like Oracle VM VirtualBox, Xen Project, and so on) to prepare your Linux image, you might need to rebuild initrd to ensure that at least the hv_vmbus and hv_storvsc kernel modules are available on the initial RAM disk. Это известная проблема по крайней мере в системах на основе предшествующего дистрибутива Red Hat.This is a known issue at least on systems that are based on the upstream Red Hat distribution.

Чтобы устранить эту проблему, необходимо добавить модули Hyper-V в initramfs и выполнить повторную сборку:To resolve this issue, add Hyper-V modules to initramfs and rebuild it:

Измените файл /etc/dracut.conf, добавив следующее содержимое:Edit /etc/dracut.conf, and add the following content:

add_drivers+="hv_vmbus hv_netvsc hv_storvsc"

Повторно создайте initramfs:Rebuild initramfs:

dracut -f -v

Дополнительные сведения см. в разделе о повторном создании initramfs.For more information, see rebuilding initramfs.

Дальнейшие действияNext steps

Теперь виртуальный жесткий диск Red Hat Enterprise Linux можно использовать для создания новых виртуальных машин в Azure Stack Hub.You're now ready to use your Red Hat Enterprise Linux virtual hard disk to create new VMs in Azure Stack Hub. Если вы впервые отправляете VHD-файл в Azure Stack Hub, ознакомьтесь со статьей Создание и публикация пользовательского элемента Azure Stack Hub Marketplace.If this is the first time that you're uploading the VHD file to Azure Stack Hub, see Create and publish a Marketplace item.

Чтобы получить дополнительные сведения о низкоуровневых оболочках, сертифицированных для запуска Red Hat Enterprise Linux, посетите веб-сайт Red Hat.For more information about the hypervisors that are certified to run Red Hat Enterprise Linux, see the Red Hat website.