Участник:Korotyshev/Подготовка образов для OpenNebula: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
OpenNebula хоть и позволяет использовать ВМ с полной инсталляцией через livecd на каждом инстансе, однако всё же рассчитана на разворачивание уже установленной ОС, которая в зависимости от настроек будет загружать публичные ключи SSH, настраивать пароли локальных учетных записей, а также выполнять пользовательские скрипты и выставлять IP-адреса. Всё это возможно благодаря службе контекстуализации, которая встраивается в систему при создания образа.
OpenNebula хоть и позволяет использовать ВМ с полной инсталляцией через livecd на каждом инстансе, однако всё же рассчитана на разворачивание уже установленной ОС, которая в зависимости от настроек будет загружать публичные ключи SSH, настраивать пароли локальных учетных записей, а также выполнять пользовательские скрипты и выставлять IP-адреса. Всё это возможно благодаря службе контекстуализации, которая встраивается в систему при создания образа.
Подготовить образ можно двумя способами:
Подготовить образ можно двумя способами:
# Загрузить готовый cloud-образ и настроить под свои нужды; {{note | Для OpenNebula выпускаются [http://ftp.altlinux.org/pub/distributions/ALTLinux/images/p10/cloud/x86_64/ голые образы] Альт с уже встроенной службой [https://packages.altlinux.org/ru/sisyphus/binary/opennebula-context/ opennebula-context], а также с [https://packages.altlinux.org/ru/sisyphus/binary/cloud-init/ cloud-init] (альтернативный инструмент инициализации системы, подробнее на [[Cloud-init|отдельной странице]]).}}# Создать голый образ диска, установить систему с livecd вместе с желаемыми пакетами, а затем подготовить его для OpenNebula;
# Загрузить готовый cloud-образ и настроить под свои нужды; {{note | Для OpenNebula выпускаются [http://ftp.altlinux.org/pub/distributions/ALTLinux/images/p10/cloud/x86_64/ голые образы] Альт с уже встроенной службой [https://packages.altlinux.org/ru/sisyphus/binary/opennebula-context/ opennebula-context], а также с [https://packages.altlinux.org/ru/sisyphus/binary/cloud-init/ cloud-init] (альтернативный инструмент инициализации системы, подробнее на [[Cloud-init|'''отдельной странице''']]).}}# Создать голый образ диска, установить систему с livecd вместе с желаемыми пакетами, а затем подготовить его для OpenNebula;
#* (Вариант для опытных пользователей) Cобрать образ вручную на базе rootfs - базовой файловой системы (в комплекте с ней не идет ядро/initrd - их нужно получать отдельно), распространяется в виде архивов (Альт поставляется в нескольких [http://ftp.basealt.ru/pub/distributions/ALTLinux/p10/images/cloud/x86_64/ вариантах] в .tar.xz) либо генерируется самостоятельно через pacstrap/debootstrap/[[hasher|hasher]]/[[LXD#Сборка_с_использованием_официального_rootfs|distrobuilder]];
#* (Вариант для опытных пользователей) Cобрать образ вручную на базе rootfs - базовой файловой системы (в комплекте с ней не идет ядро/initrd - их нужно получать отдельно), распространяется в виде архивов (Альт поставляется в нескольких [http://ftp.basealt.ru/pub/distributions/ALTLinux/p10/images/cloud/x86_64/ вариантах] в .tar.xz) либо генерируется самостоятельно через pacstrap/debootstrap/[[hasher|hasher]]/[[LXD#Сборка_с_использованием_официального_rootfs|distrobuilder]];
:: {{ Attention | Даже если формат образа [https://qemu-project.gitlab.io/qemu/system/images.html#disk-image-file-formats поддерживается] QEMU, это не означает, что его можно добавить в хранилище OpenNebula. Поддерживаются форматы RAW, QCOW2 и VMDK. Если образ не поддерживается (например .vhdx), необходимо выполнить конвертацию.}}
:: {{ Attention | Даже если формат образа [https://qemu-project.gitlab.io/qemu/system/images.html#disk-image-file-formats поддерживается] QEMU, это не означает, что его можно добавить в хранилище OpenNebula. Поддерживаются форматы RAW, QCOW2 и VMDK. Если образ не поддерживается (например .vhdx), необходимо выполнить конвертацию.}}


== Кастомизация готового образа ==
== Кастомизация готового образа ==
Для кастомизации будет использоваться libguestfs (пакеты [https://packages.altlinux.org/ru/sisyphus/binary/guestfs-tools/ guestfs-tools] и [https://packages.altlinux.org/ru/sisyphus/binary/libguestfs-rescue/ libguestfs-rescue])
Для кастомизации будет использоваться qemu-kvm и qemu-img (пакеты [https://packages.altlinux.org/ru/sisyphus/binary/qemu-img/ qemu-img] [https://packages.altlinux.org/ru/sisyphus/binary/qemu-kvm/ qemu-kvm] [https://packages.altlinux.org/ru/sisyphus/binary/qemu-ui-gtk/ qemu-ui-gtk] [https://packages.altlinux.org/ru/sisyphus/binary/qemu-device-display-virtio-gpu/ qemu-device-display-virtio-gpu])
 
{{note|Все действия будут проводиться в Live-окружении [https://www.altlinux.org/Rescue Alt Regular Rescue]}}
 
# Загружаем облачный образ для opennebula <syntaxhighlight lang="bash">wget http://ftp.basealt.ru/pub/distributions/ALTLinux/images/Sisyphus/cloud/x86_64/alt-sisyphus-opennebula-x86_64.qcow2</syntaxhighlight>
# Увеличиваем максимальный размер диска <syntaxhighlight lang="bash">qemu-img resize alt-sisyphus-opennebula-x86_64.qcow2 +1G</syntaxhighlight>
# Запускаем qemu/kvm с нужными параметрами <syntaxhighlight lang="bash">qemu-system-x86_64 -accel kvm -machine q35 -m 3072M -drive format=qcow2,file=./alt-sisyphus-opennebula-x86_64.qcow2 -cdrom regular-rescue-latest-x86_64.iso -vga virtio -boot d</syntaxhighlight>
# Расширяем раздел <syntaxhighlight lang="bash">parted /dev/sda resizepart 1 100%</syntaxhighlight>
# Расширяем ext4 на увеличенном разделе <syntaxhighlight lang="bash">resize2fs /dev/sda1</syntaxhighlight>
# Монтируем раздел вместе с proc и dev <syntaxhighlight lang="bash">mount /dev/sda1 /mnt
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev</syntaxhighlight>
# Делаем chroot до точки монтирования <syntaxhighlight lang="bash">chroot /mnt /bin/sh</syntaxhighlight>
:: {{note|Если необходимо подключение к сети внутри окружения, перед входом в chroot необходима [[Etcnet_start|'''настройка интерфейса'''.]]}}
 
На данном этапе доступна консоль, в которой можно сделать нужные изменения

Версия от 14:54, 7 февраля 2024

OpenNebula хоть и позволяет использовать ВМ с полной инсталляцией через livecd на каждом инстансе, однако всё же рассчитана на разворачивание уже установленной ОС, которая в зависимости от настроек будет загружать публичные ключи SSH, настраивать пароли локальных учетных записей, а также выполнять пользовательские скрипты и выставлять IP-адреса. Всё это возможно благодаря службе контекстуализации, которая встраивается в систему при создания образа. Подготовить образ можно двумя способами:

  1. Загрузить готовый cloud-образ и настроить под свои нужды;
    Примечание: Для OpenNebula выпускаются голые образы Альт с уже встроенной службой opennebula-context, а также с cloud-init (альтернативный инструмент инициализации системы, подробнее на отдельной странице).
  2. Создать голый образ диска, установить систему с livecd вместе с желаемыми пакетами, а затем подготовить его для OpenNebula;
    • (Вариант для опытных пользователей) Cобрать образ вручную на базе rootfs - базовой файловой системы (в комплекте с ней не идет ядро/initrd - их нужно получать отдельно), распространяется в виде архивов (Альт поставляется в нескольких вариантах в .tar.xz) либо генерируется самостоятельно через pacstrap/debootstrap/hasher/distrobuilder;
Внимание! Даже если формат образа поддерживается QEMU, это не означает, что его можно добавить в хранилище OpenNebula. Поддерживаются форматы RAW, QCOW2 и VMDK. Если образ не поддерживается (например .vhdx), необходимо выполнить конвертацию.


Кастомизация готового образа

Для кастомизации будет использоваться qemu-kvm и qemu-img (пакеты qemu-img qemu-kvm qemu-ui-gtk qemu-device-display-virtio-gpu)

Примечание: Все действия будут проводиться в Live-окружении Alt Regular Rescue


  1. Загружаем облачный образ для opennebula
    wget http://ftp.basealt.ru/pub/distributions/ALTLinux/images/Sisyphus/cloud/x86_64/alt-sisyphus-opennebula-x86_64.qcow2
    
  2. Увеличиваем максимальный размер диска
    qemu-img resize alt-sisyphus-opennebula-x86_64.qcow2 +1G
    
  3. Запускаем qemu/kvm с нужными параметрами
    qemu-system-x86_64 -accel kvm -machine q35 -m 3072M -drive format=qcow2,file=./alt-sisyphus-opennebula-x86_64.qcow2 -cdrom regular-rescue-latest-x86_64.iso -vga virtio -boot d
    
  4. Расширяем раздел
    parted /dev/sda resizepart 1 100%
    
  5. Расширяем ext4 на увеличенном разделе
    resize2fs /dev/sda1
    
  6. Монтируем раздел вместе с proc и dev
    mount /dev/sda1 /mnt
    mount --bind /proc /mnt/proc
    mount --bind /dev /mnt/dev
    
  7. Делаем chroot до точки монтирования
    chroot /mnt /bin/sh
    
Примечание: Если необходимо подключение к сети внутри окружения, перед входом в chroot необходима настройка интерфейса.


На данном этапе доступна консоль, в которой можно сделать нужные изменения