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

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

Ubuntu теперь публикует официальные виртуальные жесткие диски Azure (VHD) для скачивания на веб-странице "Облачные образы Ubuntu". Если вам нужно создать собственный специализированный образ Ubuntu для Azure, а не использовать следующую процедуру вручную, начните с этих известных рабочих виртуальных жестких жестких устройств, как это необходимо. Последние выпуски образов можно найти в следующих расположениях:

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

В этой статье предполагается, что вы уже установили операционную систему Ubuntu Linux на VHD. Существует несколько средств для создания VHD-файлов. Примером является решение виртуализации, например Hyper-V. Инструкции см. в разделе "Установка роли Hyper-V" и настройка виртуальной машины .

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

  • Дополнительные советы по подготовке Linux для Azure см . в общих заметках о установке Linux.
  • Формат VHDX не поддерживается в Azure, только фиксированный виртуальный жесткий диск. Диск можно преобразовать в формат VHD с помощью диспетчера Hyper-V или командлета Convert-VHD .
  • При установке системы Linux рекомендуется использовать стандартные секции, а не диспетчер логических томов (LVM), который часто используется по умолчанию для многих установок. Эти стандартные секции избежать конфликтов имен LVM с клонируемыми виртуальными машинами, особенно если диск ОС когда-либо должен быть подключен к другой виртуальной машине для устранения неполадок. LVM или RAID также можно использовать на дисках данных.
  • Не настраивайте секцию буфера или файл подкачки на диске ОС. Агент подготовки можно настроить cloud-init для создания файла подкачки или секции подкачки на временном диске ресурса. Дополнительные сведения об этом процессе см. в следующих шагах.
  • Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 1 МБ перед преобразованием. Дополнительные сведения см . в заметках о установке Linux.

Создание вручную

Примечание.

Прежде чем пытаться создать собственный пользовательский образ Ubuntu для Azure, рассмотрите возможность использования предварительно созданных и проверенных образов на веб-странице "Облачные образы Ubuntu".

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

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

  3. Замените текущие репозитории в образе репозиторием Azure для Ubuntu.

    Перед изменением /etc/apt/sources.listрекомендуется создать резервную копию:

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    
    sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
    sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
    sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
    sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list
    sudo apt-get update
    
  4. Образы Ubuntu для Azure теперь используют специализированное ядро Azure. Обновите ОС до последней версии ядра Azure и установите средства Linux Azure (включая зависимости Hyper-V):

    sudo apt update
    sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure
    sudo apt full-upgrade
    sudo reboot
    
  5. Измените загрузочную строку ядра для GRUB, чтобы включить дополнительные параметры ядра для Azure. Чтобы выполнить этот шаг, откройте /etc/default/grub в текстовом редакторе, найдите переменную GRUB_CMDLINE_LINUX_DEFAULT (или добавьте ее при необходимости) и измените ее, чтобы включить следующие параметры:

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
    
  6. Сохраните и закройте файл, а затем выполните команду sudo update-grub. Этот шаг гарантирует, что все сообщения консоли отправляются на первый последовательный порт, который может помочь технической поддержке Azure с проблемами отладки.

  7. Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно этот параметр задан по умолчанию.

  8. Установите cloud-init (агент подготовки) и агент Azure Linux (обработчик гостевых расширений). Cloud-init используется netplan для настройки конфигурации системной сети (во время подготовки и каждой последующей загрузки) и gdisk секционирования дисков ресурсов.

    sudo apt update
    sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
    

    Примечание.

    Пакет walinuxagent может удалить NetworkManager и NetworkManager-gnome пакеты, если они установлены.

  9. Удалите cloud-init конфигурации по умолчанию и оставшиеся netplan артефакты, которые могут конфликтовать с cloud-init подготовкой в Azure:

    sudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg
    sudo rm -f /etc/cloud/ds-identify.cfg
    sudo rm -f /etc/netplan/*.yaml
    
  10. Настройте cloud-init подготовку системы с помощью источника данных Azure:

    cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg
    datasource_list: [ Azure ]
    EOF
    
    cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg
    system_info:
       package_mirrors:
         - arches: [i386, amd64]
           failsafe:
             primary: http://archive.ubuntu.com/ubuntu
             security: http://security.ubuntu.com/ubuntu
           search:
             primary:
               - http://azure.archive.ubuntu.com/ubuntu/
             security: []
         - arches: [armhf, armel, default]
           failsafe:
             primary: http://ports.ubuntu.com/ubuntu-ports
             security: http://ports.ubuntu.com/ubuntu-ports
    EOF
    
    cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg
    reporting:
      logging:
        type: log
      telemetry:
        type: hyperv
    EOF
    
  11. Настройте агент Azure Linux для выполнения cloud-init подготовки. Дополнительные сведения об этих параметрах см. в проекте WALinuxAgent.

    sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
    sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    
    cat <<EOF | sudo tee -a /etc/waagent.conf
    # For Azure Linux agent version >= 2.2.45, this is the option to configure,
    # enable, or disable the provisioning behavior of the Linux agent.
    # Accepted values are auto (default), waagent, cloud-init, or disabled.
    # A value of auto means that the agent will rely on cloud-init to handle
    # provisioning if it is installed and enabled, which in this case it will.
    Provisioning.Agent=auto
    EOF
    
  12. Очистка cloud-init и артефакты среды выполнения агента Linux Для Azure:

    sudo cloud-init clean --logs --seed
    sudo rm -rf /var/lib/cloud/
    sudo systemctl stop walinuxagent.service
    sudo rm -rf /var/lib/waagent/
    sudo rm -f /var/log/waagent.log
    
  13. Отмените подготовку виртуальной машины и подготовьте ее к подготовке в Azure.

    Примечание.

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

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

    Предупреждение

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

  14. В диспетчере Hyper-V выберите Действие>Завершение работы.

  15. Azure принимает виртуальные жесткие диски только фиксированного размера. Если диск ОС виртуальной машины не является виртуальным жестким диском фиксированного размера, используйте Convert-VHD командлет PowerShell и укажите -VHDType Fixed этот параметр. Дополнительные сведения см. в документации по Convert-VHD convert-VHD.

  16. Чтобы перенести виртуальную машину 2-го поколения в Azure, выполните следующие действия:

    1. Измените каталог на boot EFI каталог:

      cd /boot/efi/EFI
      
    2. Скопируйте каталог в ubuntu новый каталог с именем boot:

      sudo cp -r ubuntu/ boot
      
    3. Измените каталог на только что созданный каталог загрузки:

      cd boot
      
    4. Переименуйте shimx64.efi файл:

      sudo mv shimx64.efi bootx64.efi
      
    5. Переименуйте файл bootx64.cfgв grub.cfg :

      sudo mv grub.cfg bootx64.cfg
      

Теперь вы готовы использовать виртуальный жесткий диск Ubuntu Linux для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.