Создание продукта BareMetal на базе Linux для загрузки в Cloud Marketplace
Чтобы добавить в Cloud Marketplace продукт для Yandex BareMetal, нужно загрузить образ в Yandex Cloud. Продукты могут быть созданы на базе ОС Linux. Этот раздел поможет создать образ на базе ОС Linux.
Создание образа
Образы продуктов BareMetal, размещаемых в Cloud Marketplace, должны соответствовать всем требованиям, приведенным ниже. Также ознакомьтесь с дополнительными рекомендациями.
Образ BareMetal — это архив с полной копией файловой системы ОС, начиная от корневого каталога, который включает:
- файлы;
- вложенные директории;
- символические и жесткие ссылки с сохранением их оригинальной структуры и связей.
Поддерживаемые форматы: tar.bz2 и tar.gz.
Создайте образ одним из способов:
- В chroot-окружении с помощью утилит, предоставляемых операционной системой. Например, для семейства Debian — это
debootstrap. - Используйте образ диска виртуальной машины и извлеките файлы из него.
- Снимите образ с предварительно развернутой системы.
Требования к образу
Настройка системы
-
Терминал
tty0настроен в качестве серийной консоли. Для этого задайте параметр ядра:console=tty0. -
Установлен пакет
cloud-initи очищены данные предыдущих запусковcloud-init, если они были. Например, в Ubuntu с помощью команды:cloud-init clean --logs --seed. -
Отсутствуют настройки сетевых интерфейсов, кроме
lo. Конфигурация сети будет создана при заказе сервера черезcloud-init. -
Если ваш образ требует особых настроек для генерации конфигурации сети через
cloud-init , то добавьте их в файл:/etc/cloud/cloud.cfg.d/99_override_network.cfg. По умолчанию используются следующие настройки:- Для семейства Debian:
renderers: ["netplan"],activators: ["netplan"]. - Для семейства RedHat:
renderers: ["sysconfig"],activators: ["network-manager"].
- Для семейства Debian:
-
Установлен пакет
mdadmдля работы с программными RAID-массивами. -
Модуль ядра для работы с программными RAID-массивами включен в образ
initrd. Если пакетmdadmустанавливался отдельно, обновитеinitrd:- Для семейства Debian:
update-initramfs -u. - Для семейства RedHat:
dracut --regenerate-all -f.
- Для семейства Debian:
-
В параметрах ядра включена автоматическая сборка программных RAID-массивов. Для этого добавьте параметр
rd.auto. -
Установлены пакеты для работы с
UEFI:- Для семейства Debian:
grub-efi-amd64-binиdosfstools. - Для семейства RedHat:
grub2-efi-x64иshim-x64.
- Для семейства Debian:
-
В настройках системного файрвола открыт необходимый минимум портов для работы ваших приложений, а также порт для доступа по SSH (по умолчанию — порт 22/TCP).
-
SSH-сервер запускается автоматически при старте сервера.
-
Доступ через SSH по паролю запрещен для всех пользователей и возможен только по ключу.
-
Сервисы с вашим приложением устойчивы к перезагрузке сервера.
Очистка образа
-
Следующие каталоги не содержат файлов или подкаталогов:
/dev/proc/run/sys/tmp/var/tmp
-
Каталог
/var/logне содержит файлов. Подкаталоги допустимы, если также не содержат файлов. -
Файл
/etc/machine-idсуществует и не содержит данных. -
Файл
/var/lib/dbus/machine-idотсутствует или не содержит данных. -
Очищен кеш пакетного менеджера. В случае
aptсодержимое каталогов/var/cache/aptи/var/lib/apt/listsудалено, сами каталоги сохранены. -
Очищена история консольных команд (
.bash_history,.zsh_historyи т. д.). -
Очищена информация о настройках, ранее полученных по
DHCP. Например, в Ubuntu в зависимости от версии и настроек это могут быть файлы:/var/lib/NetworkManager/*.leaseили/var/lib/dhcp/dhclient.leases.
Рекомендации для образа
Приведенные ниже требования не являются обязательными, однако мы рекомендуем соблюдать их.
Безопасность
Убедитесь, что:
-
В образе нет системных пользователей, кроме тех, которые нужны приложениям.
-
В образе нет заранее сгенерированных SSH-ключей и паролей.
Важно
Пароли приложений должны генерироваться при старте ВМ, чтобы пользователь смог изменить их при первом входе через серийную консоль или SSH.
-
В файле
/etc/sudoers*не настроены лишние привилегии для пользователей.
Настройка системы
-
Установлена временная зона
Europe/Moscow(+03:00). -
Настроена синхронизация времени с публичными серверами
NTP. Например, как описано в практическом руководстве Настройка синхронизации часов с помощью NTP. -
Запрещены цели
systemd, отвечающие за энергосбережение. Например, с помощью командыsystemctl mask:sleep.targetsuspend.targethibernate.targethybrid-sleep.target
-
В системе установлена только одна версия ядра. Это ускорит развертывание продукта и обеспечит предсказуемый пользовательский опыт.
-
Выключено автоматическое обновление пакетов.
-
Выключено автоматическое обновление прошивок оборудования (например, сервис
fwupd.serviceв Ubuntu). Сервис BareMetal самостоятельно управляет прошивками оборудования. -
Репозитории пакетов используют зеркала в зоне .RU (например, mirror.yandex.ru
). Это ускорит скачивание и защитит от проблем с доступом к заблокированным ресурсам. -
Сохранены драйверы всех устройств. Сервис BareMetal предоставляет различные серверные конфигурации, и ваш образ должен работать на разном оборудовании.
-
В образ добавлен небольшой набор системных утилит, которые помогут пользователю в случае возникновения проблем:
curldigethtoollshwlspcimtrpingtraceroutevim