Создание образа продукта на базе Linux для загрузки в Cloud Marketplace
Чтобы добавить в Marketplace продукт для Yandex Compute Cloud, нужно загрузить образ в Yandex Cloud. Продукты могут быть созданы на базе ОС Linux. Этот раздел поможет создать образ на базе ОС Linux.
Если вы хотите добавить продукт для Yandex Managed Service for Kubernetes, воспользуйтесь соответствующей инструкцией.
Создать образ
Образы продуктов, размещаемых в Marketplace, должны соответствовать требованиям.
Если у вас нет образа ВМ, создайте его:
- с помощью Packer. Тогда образ автоматически загрузится в Compute Cloud.
Рекомендации по созданию образа:- В качестве базового используйте образ из публичного каталога Yandex Cloud.
- Посмотрите примеры packer-рецептов
. - Автоматизируйте сборку образов с помощью Jenkins.
- используя другие удобные для вас инструменты. Тогда вам потребуется самостоятельно загрузить образ в Compute Cloud.
Поддерживаемые форматы: Qcow2
, VMDK
, RAW
и VHD
.
Требования к образу
Для образов загрузочного диска должны выполняться следующие требования:
- Установлены драйверы
virtio-net
,virtio-blk
иvirtio-pci
. Если вы собираетесь подключать к виртуальной машине файловые хранилища, также должен быть установлен драйверvirtiofs
. См. инструкцию. - Терминал
ttyS0
(порт COM1) настроен в качестве серийной консоли. См. инструкцию. - Сетевой интерфейс корректно запускается при старте ВМ и получает IP-адрес по DHCP.
- Пакет
cloud-init
установлен и настроен для работы с нашим сервисом метаданных. Установить пакет для CentOS можно с помощью командыsudo yum install cloud-init
, для Debian или Ubuntu —sudo apt update && sudo apt install -y cloud-init
. - Если образ создан на основе Amazon Machine Image (AMI), в настройках
cloud-init
отключена проверка облачной платформы, на которой запускается ВМ. См. инструкцию. - В настройках системного файрвола открыт необходимый минимум портов для работы ваших приложений, а также порт для доступа по SSH (по умолчанию это порт 22 TCP).
- SSH-сервер запускается автоматически при старте ВМ.
- Сервисы с вашим приложением устойчивы к перезагрузке ВМ.
- Для загрузочного диска используется MBR-разбивка.
- Диск смонтирован по UUID, а не по имени.
- Файловая система не зашифрована.
Инструкции по настройке ОС для соответствия требованиям см. в разделе Подготовить свой образ диска.
Чтобы образ можно было использовать для продукта в Marketplace, также выполните следующие действия:
-
Очистите:
- директории
/tmp
,/var/tmp
,/var/log
; - кеши пакетного менеджера;
.bash_history
всех пользователей;- данные о ранее полученных конфигурациях по DHCP (
dhcp.leases
,dhcp.log
); - файл
/etc/machine-id
.
- директории
-
Убедитесь, что:
-
в образе нет системных пользователей, кроме нужных приложениям.
-
доступ через SSH по паролю запрещен для всех пользователей и возможен только по ключу, который получен из сервиса метаданных.
-
в образе нет заранее сгенерированных SSH-ключей и паролей.
Важно
Пароли приложений должны генерироваться при старте ВМ, чтобы пользователь смог изменить их при первом входе через серийную консоль или SSH.
-
в файле
/etc/sudoers*
не настроены лишние привилегии для пользователей.
-
-
Примените дополнительные рекомендации по настройке образов для Marketplace:
- в файле конфигурации
/etc/fstab
отсутствуют строки, подключающие swap.
- в файле конфигурации
Проверить образ
Вы можете выполнить очистку и необходимые проверки системы помощью скрипта yc-image-cleanup.sh
Скрипт yc-image-cleanup.sh
нужно запускать внутри образа под пользователем root
.
Скрипт yc-image-cleanup.sh
не проверяет образ продукта на соответствие всем требованиям и совместим не со всеми дистрибутивами. Перед загрузкой образа в Marketplace вам потребуется самостоятельно провести дополнительные проверки. Чтобы узнать, поддерживает ли yc-image-cleanup.sh
ваш дистрибутив, запустите скрипт с ключом -o
. Для поддерживаемых дистрибутивов скрипт выводит название и версию дистрибутива и определяет пакетный менеджер. Если дистрибутив не поддерживается, в результате появится строка Unsupported OS/distribution; can't determine package manager type
.
Чтобы очистить ВМ перед созданием образа из нее, выполните команду:
./yc-image-cleanup.sh -c
Важно
Команда очистки удаляет некоторые файлы и директории. Перед ее выполнением убедитесь, что у вас есть резервные копии важных данных.
Перед очисткой ВМ вы можете задать переменную окружения YCCLEANUP_SYS_USER
, указав в ней имя системного пользователя, которого в процессе очистки необходимо удалить вместе с домашним каталогом. Например, в Ubuntu системный пользователь ubuntu
, в CentOS — centos
. В некоторых случаях системным пользователем может быть cloud-user
или какой-либо другой. В переменной YCCLEANUP_SYS_USER
можно задать даже пользователя, исполняющего скрипт. В этом случае будет выведено сообщение об ошибке, но пользователь всё равно будет удалён. Если переменная YCCLEANUP_SYS_USER
не задана, никакой пользователь удалён не будет.
Чтобы проверить образ на соответствие части требований, выполните команду:
./yc-image-cleanup.sh -d
Чтобы проверить ВМ, которую создали из образа, выполните команду:
./yc-image-cleanup.sh -t
Если дизайн вашей системы не позволяет провести какую-либо проверку при запуске с ключом -t
, эту проверку можно отключить. Список отключаемых проверок передается с помощью ключа -s
в формате: yc-image-cleanup.sh -s <spec1>,<spec2> -t
. Проверки можно отключить с помощью спецификаторов:
users-locked-nocheck
— отключает проверку, что аутентификация по паролю выключена для всех пользователей, и зайти на ВМ можно только по ключу.empty-history-nocheck
— отключает проверку, что история bash пуста у всех пользователей.one-auth-user-nocheck
— отключает проверку, что только у одного пользователя, кромеroot
, есть запись вauthorized_keys
. Таким пользователем может быть только пользователь, заданный в metadata.one-auth-key-nocheck
— отключает проверку, что каждый пользователь имеет не более одной записи вauthorized_keys
. Эта проверка не пройдет, если в исходном образе не был удален какой-либо пользователь с записью вauthorized_keys
.no-private-keys-nocheck
— отключает проверку, что ни у одного пользователя не осталось файлов пары "публичный ключ — приватный ключ" в папке.ssh
домашнего каталога.no-passwords-nocheck
— отключает проверку, что аутентификации по паролю в файле конфигурацииsshd
выключена.
Скрипт yc-image-cleanup.sh
с ключом -t
может быть запущен в режиме verbose
для вывода детализации выполнения проверки. При запуске с детализацией для каждого этапа проверки будет выведен список пользователей, которые не прошли проверку, или недопустимые значения параметров конфигурации. Режим детализации поддерживает только уровень normal
. Чтобы запустить скрипт проверки в режиме детализации, выполните команду (ключи должны следовать в указанном порядке):
./yc-image-cleanup.sh -v normal -t
Чтобы посмотреть все доступные параметры скрипта и все переменные окружения, влияющие на его исполнение, запустите команду:
./yc-image-cleanup.sh -h