Подготовка образов для KVM/LibVirt
В качестве примера будет использован образ Ubuntu 16.04: подготовка рабочего окружения, настройка необходимых параметров, сборка и загрузка образа в облачный сервис. Также будут рассмотрены необходимые шаги для подготовки образа с полной совместимостью со всеми дополнительными возможностями сервиса «Виртуальное приватное облако». В качестве инструмента для сборки образа мы будем использовать diskimage-builder. Это набор компонентов для подготовки образов операционных систем, файловых систем, RAM-дисков с открытым исходным кодом, поддерживаемый сообществом OpenStack. Инструмент поддерживает создание образов большинства распространенных дистрибутивов GNU/Linux: Centos Debian Fedora RHEL Ubuntu Gentoo OpenSUSE По умолчанию diskimage-builder подготавливает образ cloud-версии операционной системы, поэтому в образе будут присутствовать пакеты cloud-init и cloud-utils, необходимые для автоматической настройки системы в облаке. Создание образа Ubuntu 16.04 Мы будем готовить образ на машине с ОС Ubuntu 14.04. Для начала установим необходимые зависимости: 1 2 sudo apt update sudo apt -y install python-pip curl Затем установим diskimage-builder: 1 sudo pip install diskimage-builder Создадим базовые директории для работы: 1 mkdir -p ~/diskimage-builder/{images,elements} Для настройки diskimage-builder нам необходимо указать несколько дополнительных параметров, значение которых хранится непосредственно в переменных окружения командной оболочки (таким образом, вы можете указывать их в командной строке): ARCH=“amd64” — архитектура образа. BASE_ELEMENTS=“ubuntu bootloader cloud-init-datasources” — здесь мы укажем используемые элементы diskimage-builder. Элементы представляют собой набор bash-скриптов, которые выполняют все рутинные действия по подготовке и изменению образа. Наиболее важным для нас является элемент ubuntu, который скачает и распакует стандартный официальный образ дистрибутива, проведет установку требуемых пакетов и обновления системы до актуального состояния внутри образа при помощи утилиты chroot, и соберет все обратно в образ, готовый к использованию. Элемент bootloader устанавливает загрузчик (в нашем случае GRUB2) в подготавливаемый образ системы, а cloud-init-datasources передаёт список источников данных для утилиты cloud-init, которая необходима для первоначальной настройки операционной системы при запуске. DIB_CLOUD_INIT_DATASOURCES=“ConfigDrive, Ec2” — источники данных для элемента cloud-init-datasources. DIB_RELEASE=“xenial” — версия операционной системы, на базе которой мы будем создавать образ. IMAGE_PATH="~/diskimage-builder/images/ubuntu-16.04" — имя и путь для образа. Сборка образа осуществляется с помощью команды: ...