Поделиться через


Подготовка виртуальной машины на основе Red Hat для Azure

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы ✔️ Универсальные масштабируемые наборы

Из этой статьи вы узнаете, как подготовить виртуальную машину Red Hat Enterprise Linux (RHEL) для использования в Azure. Версии RHEL, описанные в этой статье, — 7.x, 8.X., 9.x. Гипервизоры для подготовки, описанные в этой статье, представляют собой Hyper-V, виртуальную машину на основе ядра (KVM), VMware и Kickstart.

Дополнительные сведения о требованиях к требованиям для участия в программе Cloud Access Red Hat см . на веб-сайте Red Hat Cloud Access и запуске RHEL в Azure. Способы автоматизации создания образов RHEL см. в разделе Конструктор образов Azure.

Примечание.

Помните о версиях, которые находятся в конце жизни (EOL) и больше не поддерживаются Red Hat. Загруженные образы, которые находятся в EOL или за пределами EOL, поддерживаются на разумной бизнес-основе. Дополнительные сведения см. в циклах жизненного цикла продукта Red Hat.

Необходимые компоненты

В этом разделе предполагается, что вы уже получили ISO-файл с веб-сайта Red Hat и установили образ RHEL на виртуальный жесткий диск (VHD). Дополнительные сведения об использовании диспетчера Hyper-V для установки образа операционной системы см. в статье "Установка роли Hyper-V" и настройка виртуальной машины.

Замечания по установке RHEL

  • Azure не поддерживает формат VHDX. поддержка Azure только фиксированный виртуальный жесткий диск. Диспетчер Hyper-V можно использовать для преобразования диска в формат VHD или командлета convert-vhd . Если вы используете VirtualBox, при создании диска выберите фиксированный размер вместо динамически выделяемого (по умолчанию).
  • виртуальные машины поддержка Azure 1-го поколения (загрузка BIOS) и UEFI(UEFI).
  • Максимально допустимый размер виртуального жесткого диска составляет 1023 ГБ.
  • Модуль ядра vfat должен быть включен в ядро.
  • Диспетчер логических томов (LVM) поддерживается и может использоваться на диске ОС или на дисках данных в виртуальных машинах Azure. Как правило, рекомендуется использовать стандартные секции на диске ОС, а не LVM. Это позволит избежать конфликта имен LVM при клонировании виртуальных машин, особенно если нужно подключить диск с OC к другой идентичной виртуальной машине в целях устранения неполадок. Дополнительные сведения см. в документации по LVM и RAID .
  • Требуется поддержка ядра для подключения файловых систем UDF. При первой загрузке в Azure uDF-отформатированный носитель, подключенный к гостевой машине, передает конфигурацию подготовки виртуальной машине Linux. Агент Azure Linux должен иметь возможность подключать файловую систему UDF для считывания конфигурации и подготовки виртуальной машины. Без этого шага подготовка завершается ошибкой.
  • Не настраивайте раздел swap на диске операционной системы. Дополнительные сведения см. в следующих шагах.
  • Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 1 МБ перед преобразованием. Дополнительные сведения см. в следующих шагах. См. также заметки о установке Linux.

Примечание.

Cloud-init >= 21.2 удаляет требование UDF. Однако без включения модуля UDF компакт-диск не будет подключаться во время подготовки, что предотвращает применение пользовательских данных. Обходным решением является применение пользовательских данных с помощью пользовательских данных. В отличие от пользовательских данных, пользовательские данные не шифруются. Дополнительные сведения см. в разделе "Форматы данных пользователей".

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

  2. Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.

  3. Создайте или измените файл /etc/sysconfig/network, добавив следующий текст:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Создайте или измените файл /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 tee <<EOF /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules > /dev/null
    # 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
    
  5. Убедитесь, что сетевая служба начинается во время загрузки:

    sudo systemctl enable network
    
  6. Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:

    sudo subscription-manager register --auto-attach --username=XXX --password=XXX
    
  7. Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для 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, которые зависят от спецификации загрузчика (BLS) для управления загрузочными записями и конфигурациями, могут работать неправильно в RHEL 8 и 9. Если ENABLE_BLSCFG он отсутствует, по умолчанию используется falseповедение.

    Это изменение также гарантирует, что все сообщения консоли отправляются на первый последовательный порт и обеспечивают взаимодействие с последовательной консолью, которая может помочь поддержка Azure с проблемами отладки. Эта конфигурация также отключает новые соглашения об именовании для сетевых карт (сетевых карт).

    rhgb quiet crashkernel=auto
    

    Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить crashkernel этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.

  8. После завершения редактирования /etc/default/grubвыполните следующую команду, чтобы перестроить конфигурацию grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Примечание.

    Если вы отправляете виртуальную машину с поддержкой UEFI, выполните команду для обновления grub grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg.

  9. Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки (что обычно задано по умолчанию). Измените файл /etc/ssh/sshd_config , добавив в него следующую строку:

    ClientAliveInterval 180
    
  10. Пакет WALinuxAgent WALinuxAgent-<version> был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:

    sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
    
  11. Установите агент cloud-initAzure Linux и другие необходимые служебные программы:

    sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  12. Настройте cloud-init для обработки подготовки:

    1. Настройка 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 .

    2. Настройте подключения:

      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
      
    3. Настройте источник данных Azure:

      sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
      sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
      datasource_list: [ Azure ]
      datasource:
          Azure:
              apply_network_config: False
      EOF
      
    4. При настройке удалите существующий файл буфера:

      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
      
    5. Настройка cloud-init ведения журнала:

      sudo echo "Add console log file"
      sudo tee <<EOF /etc/cloud/cloud.cfg.d/05_logging.cfg > /dev/null
      
      # 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
      
  13. Конфигурация переключения:

    • Не создавайте пространство подкачки на диске ОС.

      Ранее агент Linux Azure использовался для автоматической настройки пространства буфера с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в 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 tee /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
        
  14. Настройте cloud-init данные телеметрии для устранения неполадок при подготовке:

    sudo tee >> /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg << EOF
    # This config enables cloud-init to report provisioning telemetry to aid with troubleshooting
    Reporting:
      logging:
        type: log
      telemetry:
        type: hyperv
    EOF
    
  15. Чтобы отменить регистрацию подписки, выполните следующую команду:

    
    sudo subscription-manager unregister
    
  16. Отмените подготовку виртуальной машины и подготовьте ее к подготовке в Azure:

    Внимание

    Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки. При выполнении команды waagent -force -deprovision+user исходный компьютер не используется. Этот шаг предназначен только для создания обобщенного образа.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean --logs --seed
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  17. В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.