Подготовка виртуальной машины Ubuntu для Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
Ubuntu теперь публикует официальные виртуальные жесткие диски Azure (VHD) для скачивания на веб-странице "Облачные образы Ubuntu". Если вам нужно создать собственный специализированный образ Ubuntu для Azure, а не использовать следующую процедуру вручную, начните с этих известных рабочих виртуальных жестких жестких устройств, как это необходимо. Последние выпуски образов можно найти в следующих расположениях:
- Ubuntu 18.04 / Bionic: bionic-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 20.04 / Focal: focal-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.zip
Необходимые компоненты
В этой статье предполагается, что вы уже установили операционную систему 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".
В центральной области диспетчера Hyper-V выберите виртуальную машину.
Выберите "Подключиться" , чтобы открыть окно виртуальной машины.
Замените текущие репозитории в образе репозиторием 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
Образы 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
Измените загрузочную строку ядра для 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"
Сохраните и закройте файл, а затем выполните команду
sudo update-grub
. Этот шаг гарантирует, что все сообщения консоли отправляются на первый последовательный порт, который может помочь технической поддержке Azure с проблемами отладки.Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно этот параметр задан по умолчанию.
Установите
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
пакеты, если они установлены.Удалите
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
Настройте
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
Настройте агент 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
Очистка
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
Отмените подготовку виртуальной машины и подготовьте ее к подготовке в Azure.
Примечание.
Команда
sudo waagent -force -deprovision+user
обобщает образ, пытаясь очистить систему и сделать его подходящим для повторной подготовки. Команда+user
также удаляет последнюю подготовленную учетную запись пользователя и связанные с ней данные.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history
Предупреждение
Отмена подготовки с помощью предыдущей команды не гарантирует, что образ очищается от всех конфиденциальных данных и подходит для распространения.
В диспетчере Hyper-V выберите Действие>Завершение работы.
Azure принимает виртуальные жесткие диски только фиксированного размера. Если диск ОС виртуальной машины не является виртуальным жестким диском фиксированного размера, используйте
Convert-VHD
командлет PowerShell и укажите-VHDType Fixed
этот параметр. Дополнительные сведения см. в документации поConvert-VHD
convert-VHD.Чтобы перенести виртуальную машину 2-го поколения в Azure, выполните следующие действия:
Измените каталог на
boot EFI
каталог:cd /boot/efi/EFI
Скопируйте каталог в
ubuntu
новый каталог с именемboot
:sudo cp -r ubuntu/ boot
Измените каталог на только что созданный каталог загрузки:
cd boot
Переименуйте
shimx64.efi
файл:sudo mv shimx64.efi bootx64.efi
Переименуйте файл
bootx64.cfg
вgrub.cfg
:sudo mv grub.cfg bootx64.cfg
Связанный контент
Теперь вы готовы использовать виртуальный жесткий диск Ubuntu Linux для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.