Работа с модулем установки ОС
Модуль установки операционных систем (ОС) позволяет устанавливать ОС на устройства, поддерживающие BIOS (Basic Input/Output System) и UEFI (Unified Extensible Firmware Interface), с помощью USB или носителя СD-ROM. При этом установка осуществляется по сети с использованием установщика iPXE.
Универсальный установочный образ, поддерживающий все перечисленные способы установки, формируется средствами модуля установки ОС.
Доменная модель:
Дистрибутив операционной системы
Сущность, предоставляющая установочный дистрибутив операционной системы, которая определяет, что будет установлено.
Включает:
-
ссылку на установочное ядро ОС во внешнем хранилище;
-
ссылку на файл временной файловой системы (initrd) во внешнем хранилище.
Профиль установки
Сущность, предоставляющая профиль установки, которая содержит информацию о том, как и с какими параметрами необходимо устанавливать ОС на устройство. Профиль установки может быть переиспользован — для одного установочного дистрибутива может существовать несколько профилей установки, определяющих способ и параметры установки OC из указанного дистрибутива.
Включает:
-
список опций, с которыми запускается установочное ядро ОС;
-
шаблон файла автоответов;
-
шаблон скрипта пост-установки.
| В текущей версии продукта поддерживается только один скрипт пост-установки для профиля установки. Привязка нескольких скриптов к одному профилю недопустима и приведет к ошибке в процессе установки ОС. |
Cпособ развертывания
Связывает устройство с профилем установки и позволяет указать специфичные для устройства опции установки, а также переопределить часть опций профиля установки.
Включает:
-
данные для создания root-пользователя ОС;
-
данные для создания локального пользователя ОС;
-
доменное имя устройства по умолчанию.
Шаблоны конфигурационных файлов
Сущность, представляющая шаблоны различных категорий для формирования конфигурационных файлов, файлов ответов, скриптов пост-установки.
В общем случае шаблоны не являются универсальными (например, шаблон файла ответов существенно различается для семейства Debian и RedHat).
Поддерживается шаблонизация в формате jinja в части подстановки переменных и реализации логики формирования целевых файлов на основе шаблонов.
Поддерживаемые категории шаблонов:
-
файл автоответов;
-
скрипт пост-установки.
Поддерживаемые переменные подстановки:
-
переменные подстановки, которые задаются через конфигурационный файл — при указании значений таких переменных в конфигурационном файле к их именам необходимо добавить префикс
lcm.provisioner.template-engine.template-placeholders;Пример:
-
в файле конфигурации модуля
lcm-provisioner:lcm.provisioner.template-engine.template-placeholders.unattended_install_file_url=/v1/unattended_install_files
-
в шаблоне:
{{unattended_install_file_url}}
-
-
обязательные переменные установки, необходимые для корректной работы модуля установки ОС:
-
lcm.provisioner.template-engine.template-placeholders.osmax_provisioner_base_url=http://<osmax-provisioner-host>:<port>; -
lcm.provisioner.template-engine.template-placeholders.unattended_install_file_url=/v1/unattended_install_files.
-
-
переменные подстановки, вычисляемые для связки устройства со способом развертывания:
| Наименование | Описание | Способ вычисления |
|---|---|---|
|
Наименование устройства |
Соответствует значению атрибута |
|
Имя домена |
Вычисляется по правилу: если сетевому интерфейсу устройства назначено доменное имя, то значение должно ему соответствовать; если значение не найдено, то возвращается значение доменного имени, указанное для связанного с устройством способа развертывания |
|
МAC-адрес |
Вычисляется на основании MAC-адреса, указанного на сетевом интерфейсе устройства |
|
Архитектура процессора |
Вычисляется на основании архитектуры процессора устройства |
|
Путь и имя файла, содержащего образ временной корневой системы |
Вычисляется как |
|
Путь и имя файла, в котором содержится ядро операционной системы |
Вычисляется как атрибут |
|
URL-адрес репозитория, где размещается установочный дистрибутив |
Вычисляется как атрибут |
|
Дополнительные опции ядра, с которыми выполняется установка |
Вычисляется как атрибут |
|
Путь к файлу ответов |
Заполняется URL API-метода функции |
|
Признак необходимости создания локального пользователя |
Заполняется значением атрибута |
|
Используемый hash-алгоритм для задания паролей, доступные значения: MD5 и SHA512 |
Заполняется значением атрибута |
|
Hash пароля root (MD5/SHA512) |
Заполняется значением атрибута |
|
Полное имя пользователя, который будет создан |
Заполняется значением атрибута |
|
Имя пользователя, логин |
Заполняется значением атрибута |
|
Hash пароля пользователя |
Заполняется значением атрибута |
|
Cервер Осмакс, по которому можно получить скрипты и другую информацию |
|
|
Внутренний идентификатор устройства |
Заполняется значением атрибута |
Загрузочный образ
Загрузочный образ, с помощью которого можно выполнить установку OC.
- NOTE
-
В текущей версии продукта поддерживается только один тип загрузочного образа — универсальный загрузочный образ. Он содержит программу-загрузчик, которая переносится на автономный носитель.
API-методы, предоставляемые модулем установки ОС позволяют варьировать только имя формируемого ISO-образа и имя сущности, а формируемые загрузочные образы имеют одинаковое поведение.
Устройство
Описание конечного устройства, на которое устанавливается ОС. Устройство должно обладать как минимум одним сетевым интерфейсом, при этом в текущей реализации модуля установки ОС поддерживается только один сетевой интерфейс.
Включает:
-
hostname;
-
сетевой интерфейс (определяет MAC-адрес и доменное имя устройства);
-
ссылка на способ развертывания.
В ходе установки ОС устройство идентифицируется по его MAC-адресу.
Общее описание процесса установки ОС
-
Необходимо подготовить носитель USB\CD-ROM с универсальным загрузочным образом. Для подготовки образа используется группа API-методов:
/v1/bootable_images. -
С подготовленного носителя на устройство загружается универсальный загрузочный образ.
-
Образ содержит универсальный IPXE-скрипт, который инициализирует сетевой интерфейс устройства и обращается к модулю установки ОС за IPXE-скриптом для конкретного устройства, указывая его MAC-адрес. Для этого используется API-метод
/v1/boot_loader_configs. -
Модуль установки OC по MAC-адресу выполняет поиск устройства и связанный с ним способ развертывания, на основе этой информации рендерит шаблон IPXE-скрипта для конкретного устройства и отдает сформированный скрипт.
-
Устройство загружает установочное ядро целевой ОС и начинает ее установку.
-
После инициализации сетевого интерфейса установочное ядро запрашивает у модуля установки ОС файл автоответов, используя API-метод
/v1/boot_loader_configs. -
Модуль установки ОС выполняет поиск устройства и связанный с ней способ развертывания по MAC-адресу, на основе этой информации рендерит шаблон файла автоответов для конкретного устройства и отдает сформированный скрипт.
-
Установка ОС выполняется согласно внутренней логике ОС с использованием предоставленного файла автоответов. Если в конце файла автоответов есть вызов пост-установочного скрипта, то установочное ядро целевой ОС запрашивает у модуля установки ОС скрипт пост-установки, используя API-метод
/v1/provisioning_scripts. -
Модуль установки OC выполняет поиск устройства и связанный с ней способ установки по
machineId, на основе этой информации рендерит шаблон пост-установочного скрипта и отдает сформированный скрипт. -
Установочное ядро целевой ОС (или установленное ядро целевой ОС, в зависимости от команды вызова скрипта) выполняет скрипт, после чего установка завершается.
-
Если установка выполнялась с USB-накопителя на машине с BIOS, необходимо извлечь USB-накопитель или изменить в BIOS порядок загрузки, отдав приоритет жесткому диску компьютера.
Настройка модуля установки ОС для обеспечения установки ОС на устройства
| В комплект поставки модуля установки ОС входит предустановленный пример конфигурации, позволяющий выполнять установку ОС astra se 1.7.5.9. Конфигурация, описанная ниже, за исключением работы с устройствами, представлена в данном примере. Наименование способа развертывания примера — "Установка Astra Linux 1.7.5.9 c загрузочного образа". |
-
Создайте способ развертывания.
-
Создайте дистрибутив ОС, используя группу API-методов
/v1/installation_distros.Внешний источник файлов установочного ядра ОС и временной файловой системы ( initrd) должен быть доступен по протоколу HTTP для устройств, на которые будет осуществляться установка ОС. -
Настройте шаблон IPXE-скрипта, используя API-метод
/v1/templates/{templateId}.В текущей реализации модуля установки ОС всем способам развертывания автоматически назначается единый шаблон IPXE-скрипта c именем "BIOS iPXE universal base script". -
Создайте шаблон скрипта пост-установки, используя группу API-методов
/v1/templates.Использование скрипта пост-установки является опциональным. Если вы предполагаете его использовать, загрузите соответствующий ему шаблон и пропишите вызов скрипта пост-установки в шаблоне файла автоответов. -
Создайте шаблон файла автоответов, используя группу API-методов
/v1/templates.Если вы предполагаете использовать скрипт пост-установки, пропишите его вызов в скрипте автоответов. Пример:
# вызов скрипта пост-установки in-target wget {{osmax_provisioner_base_url}}/v1/provisioning_scripts?machineId={{machine_id}} -O /tmp/post_install.sh; \ in-target chmod +x /tmp/post_install.sh; \ in-target /tmp/post_install.sh; \ -
Обеспечьте доступность по HTTP-протоколу зеркал репозитория пакетов, планируемых к установке ОС для устройств, на которые планируется осуществлять установку.
Используйте следующие команды скрипта автоустановки: d-i mirror/http/hostname d-i mirror/http/directory
-
Обеспечьте наличие в шаблоне файла автоответов вызовов, обслуживающих регистрацию статуса установки ОС на стороне модуля установки ОС:
# Регистрация старта установки (внутреннее использование) d-i preseed/early_command string wget --method=put --body-data='{"status":"READY_TO_INSTALL"}' --header="content-type: application/json" -O- {{osmax_provisioner_base_url}}/v1/unprovisioned_machines/{{machine_id}}/status # Финальные действия при установке, для расширения шаблона можно добавлять любые кастомные действия перед командам "вызов скрипта пост-инсталляции" и "Регистрация установки" d-i preseed/late_command string \ # Здесь размещается вызов скрипта постинсталляции если он используется # .. возможный вызов скрипта постинсталляции .. # Регистрация завершения установки (внутреннее использование) wget --method=put --body-data='{"status":"OS_INSTALLED"}' --header="content-type: application/json" -O- {{osmax_provisioner_base_url}}/v1/unprovisioned_machines/{{machine_id}}/status -
Создайте профиль установки, используя группу API-методов
/v1/installation_profiles. -
Создайте способ развертывания, используя группу API-методов
/v1/installation_recipes.
-
-
Создайте загрузочный образ, используя группу API-методов
/v1/bootable_images.Достаточно сформировать один загрузочный образ. Он является универсальным и подходит для всех способов развертывания. -
Создайте устройства, используя группу API-методов
/v1/unprovisioned_machinesили через пользовательский интерфейс «Кабинет Администратора».