Подготовка VHD Debian для Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
Необходимые компоненты
В этом разделе предполагается, что вы уже установили операционную систему Debian Linux из файла .iso, скачаемого с веб-сайта Debian на виртуальный жесткий диск (VHD). Существует несколько средств для создания VHD-файлов. Hyper-V — это только один пример. Инструкции по использованию Hyper-V см. в разделе "Установка роли Hyper-V" и настройка виртуальной машины.
Замечания по установке
- Дополнительные советы по подготовке Linux для Azure см . в общих заметках о установке Linux.
- Более новый формат VHDX не поддерживается в Azure. Диск можно преобразовать в формат VHD с помощью диспетчера Hyper-V или командлета
convert-vhd
. - При установке системы Linux рекомендуется использовать стандартные секции, а не диспетчер логических томов (LVM), который часто используется по умолчанию для многих установок. Использование секций позволяет избежать конфликтов имен LVM с клонированных виртуальных машин, особенно если диск ОС когда-либо должен быть подключен к другой виртуальной машине для устранения неполадок. LVM или RAID также можно использовать на дисках данных.
- Не настраивайте раздел подкачки на диске с ОС. Можно настроить агент Linux для Azure для создания файла подкачки на временном диске ресурсов. Дополнительные сведения см. в следующих шагах.
- Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 1 МБ перед преобразованием. Дополнительные сведения см . в заметках о установке Linux.
Подготовка образа Debian для Azure
Вы можете создать базовый облачный образ Azure Debian с помощью полностью автоматической установки (FAI) облачного построителя образов. Чтобы подготовить изображение без FAI, ознакомьтесь со статьей о универсальных шагах.
Следующие команды установки git и apt были извлечены из репозитория облачных образов Debian. Начните с клонирования репозитория и установки зависимостей:
$ git clone https://salsa.debian.org/cloud-team/debian-cloud-images.git
$ sudo apt install --no-install-recommends ca-certificates debsums dosfstools \
fai-server fai-setup-storage make python3 python3-libcloud python3-marshmallow \
python3-pytest python3-yaml qemu-utils udev
$ cd ./debian-cloud-images
Необязательно. Настройте сборку, добавив скрипты (например, скрипты оболочки) в ./config_space/scripts/AZURE
.
Пример скрипта для настройки образа
$ mkdir -p ./config_space/scripts/AZURE
$ cat > ./config_space/scripts/AZURE/10-custom <<EOF
#!/bin/bash
\$ROOTCMD bash -c "echo test > /usr/local/share/testing"
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/10-custom
Префикс любых команд, с которыми $ROOTCMD
вы хотите настроить изображение. Он называется chroot $target
.
Создание образа Azure Debian
$ make image_[release]_azure_amd64
Эта команда выводит несколько файлов в текущем каталоге, в первую очередь image_[release]_azure_amd64.raw
файл изображения.
Преобразуйте необработанный образ в VHD для Azure:
rawdisk="image_[release]_azure_amd64.raw"
vhddisk="image_[release]_azure_amd64.vhd"
MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "$rawdisk" | \
gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
rounded_size=$(((($size+$MB-1)/$MB)*$MB))
rounded_size_adjusted=$(($rounded_size + 512))
echo "Rounded Size Adjusted = $rounded_size_adjusted"
sudo qemu-img resize "$rawdisk" $rounded_size
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc "$rawdisk" "$vhddisk"
Этот процесс создает виртуальный жесткий диск image_[release]_azure_amd64.vhd
с округленным размером, чтобы его можно было успешно скопировать на диск Azure.
Примечание.
Вместо клонирования репозитория salsa и создания образов локально, текущие стабильные образы можно создавать и загружать из FAI.
После создания стабильного образа VHD Debian и перед отправкой убедитесь, что установлены следующие пакеты:
- apt-get install hyperv-daemons
- apt-get install waagent # (необязательно, но рекомендуется для сброса пароля и использования расширений)
- apt-get install cloud-init
Затем выполните полное обновление:
- apt-get full-upgrade
Теперь ресурсы Azure должны быть созданы для этого образа. В этом примере используется $rounded_size_adjusted
переменная, поэтому она должна находиться в одном процессе оболочки из предыдущего шага.
az group create -l $LOCATION -n $RG
az disk create \
-n $DISK \
-g $RG \
-l $LOCATION \
--for-upload --upload-size-bytes "$rounded_size_adjusted" \
--sku standard_lrs --hyper-v-generation V1
ACCESS=$(az disk grant-access \
-n $DISK -g $RG \
--access-level write \
--duration-in-seconds 86400 \
--query accessSas -o tsv)
azcopy copy "$vhddisk" "$ACCESS" --blob-type PageBlob
az disk revoke-access -n $DISK -g $RG
az image create \
-g $RG \
-n $IMAGE \
--os-type linux \
--source $(az disk show \
-g $RG \
-n $DISK \
--query id -o tsv)
az vm create \
-g $RG \
-n $VM \
--ssh-key-value $SSH_KEY_VALUE \
--public-ip-address-dns-name $VM \
--image $(az image show \
-g $RG \
-n $IMAGE \
--query id -o tsv)
Если пропускная способность локального компьютера к диску Azure приводит к длительной обработке отправки azcopy
, можно использовать прыжки виртуальной машины Azure для ускорения процесса. Вот как это можно сделать:
- Создайте tarball виртуального жесткого диска на локальном компьютере:
tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd
. - Создайте виртуальную машину Linux Azure (дистрибутив по вашему усмотрению). Убедитесь, что вы создаете его с достаточно большим диском для хранения извлеченного виртуального жесткого диска.
- Скачайте программу на
azcopy
виртуальную машину Linux Azure. Его можно получить из AzCopy. - Скопируйте tarball на виртуальную машину:
scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~
. - На виртуальной машине извлеките виртуальный жесткий диск:
tar -xf ./image_buster_azure_amd64.vhd.tar.gz
. Этот шаг занимает некоторое время на основе размера файла. - Наконец, на виртуальной машине скопируйте VHD на диск Azure с
azcopy
помощью предыдущей команды.
Связанный контент
Теперь вы готовы использовать виртуальный жесткий диск Debian Linux для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.