- Создал(а) Алексей Созонтов, редактировал(а) Денис Кривошея 30.12.25
1. Сборка образов
1.1. Требования к Узлу сборки
- Системные требования
- ОЗУ от 8 Гб
- CPU
- Не менее 2 vCPU
- Архитектура - x86-64
- Тип виртуализации - host
- Жёсткий диск рекомендуется от 50 ГБ.
На носителе должно быть достаточно места для:- Установки хостовой ОС Astra Linux (ориентируйтесь на системные требования к Операционной системе)
- Хранения необходимых файлов для установки гостевой ОС (утилита при подготовке скачивает локально установочный диск Astra Linux, а также бинарные компоненты инструментов контейнеризации)
- Хранения файлов гостевой ОС и результатов сборки: squashfs и qcow2-образы (ориентировочно 10-12 ГБ на проект)
- Требования к ПО:
- ОС СН Astra Linux оперативное обновление 1.8.4 или более свежее
- Python v3.11
- Доступ к репозиториям
- Сетевой репозиторий Основной (main) Astra Linux 1.8.4
- Для сборки проекта по Шаблону kubernetes дополнительно
- Сетевой доступ к репозиторию mirror.yandex.ru или его зеркалу
- Сетевой репозиторий Расширенный (extended) Astra Linux 1.8.4
- Для установки пакетов ПО elafris
- Сетевой репозиторий Серверный (server) Astra Linux 1.8.4
1.2. Подготовка Узла сборки
- Установите ОС СН Astra Linux Оперативное обновление 1.8.4 или более свежее.
При установке ОС ориентируйтесь на требования к безопасности и уровню защищённости, необходимые для вашей инфраструктуры - Настройте доступ к Основному и Серверному сетевым репозиториям Astra Linux соответствующей версии
- Установите пакеты
astra-elafris- пакет с основными программными модулямиastra-elafris-presets-docker- шаблоны для сборки ОС с инструментом docker
При необходимости сборки иммутабельной ОС для развёртывания кластера kubernetes выполните дополнительные действия:
- Настройте доступ к Расширенному репозиторию
- Установите пакеты
astra-elafris-presets-kubernetes- шаблоны для сборки ОС с компонентами kubernetesastra-elafris-boot- инструменты для подготовки инфраструктуры для сетевой загрузки
- Убедитесь, что с узла сборки есть доступ до репозитория mirror.yandex.ru или его зеркалу в локальной сети
1.3. Описание улититы командной строки astra-elafris
1.3.1. Описание CLI
Команда astra-elafris [GLOBAL_OPTIONS] COMMAND
astra-elafris [GLOBAL_OPTIONS] COMMAND
Утилита для создания образов на базе Astra Linux
Global options:
-h, --help Показать это сообщение справки и выйти
-c, --config-file CONFIG_FILE Основной конфигурационный файл (по умолчанию: ./elafris.yaml)
--log-file LOG_FILE Путь к файлу журналов (по умолчанию: /var/log/astra-elafris.log)
--log-level LOG_LEVEL Детализированность журналирования (info, debug) (по умолчанию: info)
-v, --version Версия
-u, --umount Отмонтировать временные диски, остановить сборочную ВМ
--preset-list Вывести список преднастроенных проектов (шаблонов)
Commands:
genproject - сгенерировать проект из готовых преднастроенных проектов
build - создать образ
Команда astra-elafris genproject -p PROJECT [OPTIONS]
astra-elafris genproject -p PROJECT [OPTIONS]
Options:
-h, --help Показать это сообщение справки и выйти
-p, --project PROJECT Путь/имя создаваемого проекта
-f, --force Перезаписать существующий проект
--servers SERVERS Сгенерировать в проекте файл servers.yaml. Формат - MAC[:hostname[:ip]][, MAC[:hostname[:ip]]]
--servers-file SERVERS_FILE Путь к файлу с настройками для серверов
--preset PRESET Название шаблона (из списка preset-list)
-d, --download Скачать заново файлы для проекта из файла download.yaml
- Ключи
--serversи--servers-fileявдяются взаимоисключающими. Проект создаётся либо из данных командной строки, либо из данных в файле
Команда astra-elafris build -p PROJECT -o OUTPUT [OPTIONS]
astra-elafris build -p PROJECT -o OUTPUT [OPTIONS] options: -h, --help Показать это сообщение справки и выйти -p, --project PROJECT Путь/имя к проекту, из которого будет создан образ --force Принудительно перезаписать файлы -o, --output OUTPUT Формат выходных данных (sqsh, qcow_sqsh); sqsh - генерация squashfs файлов, qcow_sqsh - генерация qcow2 файла. --servers Создать образы для серверов
1.3.2. Структура каталогов
По умолчанию структура каталогов, используемая утилитой выглядит следующим образом:
opt ├── elafris | ├── astra-elafris.py Основной модуль elafris | ├── elafris Каталог с программными модулями | │ └── ... | ├── elafris.yaml Конфигурационный файл | ├── my_build_1 Каталог собираемого проекта "my_build_1" | │ ├── output Каталог с результатами сборки проекта | │ │ └── ... | │ └── settings Каталог с конфигурацией проекта | │ └── ... | ├── my_build_2 Каталог собираемого проекта "my_build_2" | │ ├── output | │ └── settings | └── registry Каталог для загрузки файлов, используемых при сборке проекта | └── ... └── elafris-presets Предустановленные шаблоны └── presets ├── os └── projects
- Каталог
registryслужит для загрузки необходимых бинарных файлов и используется всеми проектами с целью оптимизации занимаемого объема диска. Создаётся в момент создания первого проекта. - Каталоги проектов содержат в себе все необходимые настройки и формируются командой
genprojectв соответствии с параметрами, указанными пользователем - В каталоге
./elafris/project_name/outputвыкладывается результат сборки проекта
2. Сетевая загрузка
2.1. Требования к узлу Сетевой загрузки
- Доступность по протоколам pxe, tftp, samba (67/UDP, 69/UDP, 445/TCP) с загружаемых узлов.
Порты будут открыты в процессе настройки сервисов. - Объем хранилища под образы для сетевой загрузки ориентировочно 1 ГБ для проекта.
- Наличие двух сетевых интерфейсов, если предполагается изоляция внутренней и внешней сетей и доступ во внешнюю сеть через Узел сетевой загрузки как шлюз.
2.2. Подготовка узла Сетевой загрузки
- На том же сервере, где развёрнут Узел сборки, установите пакет
astra-elafris-boot - Подготовьте один или несколько проектов для сетевой загрузки (см. пример в предыдущем разделе Инструкции)
2.3. Описание улититы командной строки astra-elafris-boot
2.3.1. Описание CLI
Команда astra-elafris-boot [OPTIONS]
astra-elafris-boot [OPTIONS]
options:
-h, --help Показать это сообщение справки и выйти
-c, --boot-config BOOT_CONFIG Основной конфигурационный файл (по умолчанию: ./elafris-boot.yaml)
-p, --project PROJECT Путь/имя проекта
--log-file LOG_FILE Путь к файлу журналов (по умолчанию: /var/log/astra-elafris-boot.log)
--log-level LOG_LEVEL Детализированность журналирования (info, debug) (по умолчанию: info)
-v, --version Версия
-l, --links Создать или пересоздать ссылки и меню для загрузки. Совместно с -p.
-b, --boot Настройка компонентов загрузки dnsmasq,samba
-d, --dhcp Настройка фиксированных адресов для DHCP. Совместно с -p.
-A, --all Комплексная настройка boot+links+dhcp. Требует проект -p
2.3.2. Конфигурационный файл elafris-boot.yaml
boot_srv: # адрес dhcp,dns,haproxy и tftp сервера, будет использоваться для всех настроек ip: 192.168.0.1 # диапазон выдаваемых адресов dhcp_range: 192.168.0.10,192.168.0.100,255.255.255.0,6h # дополнительные настройки dhcp, и dns. Если не заданы, то будут взяты из /etc/resolv.conf # dhcp_options: # - option:domain-name,mydomain.local # server: # - 1.2.3.4 # - 5.6.7.8 # тип файлов для чтения из конфигурации dhcp # conf_dir_files: str = ',*.conf', # неизменяемый префикс, который должен быть добавлен к файлам меню загрузки. # pxe_prefix: str = '01' pathes: # boot_root_path: '/opt/elafris/boot' # root_path: '/opt/elafris'
Обязательно проверить и переназначить, если требуется, параметры DHCP сервера:
boot_srv.ip- используется для указания утилите IP-адреса, который будет использоваться всеми сервисами сетевой загрузки. Указанный IP-адрес должен быть назначен на один из сетевых интерфейсов до начала работы с утилитойastra-elafris-bootboot_srv.dhcp_range- диапазон IP-адресов, которые будет назначать dhcp-сервер
Остальные параметры можно оставить по умолчанию, если не планируется тонкая настройка алгоритма.
2.3.3. Структура каталогов
В процессе работы утилиты astra-elafris-boot формируется каталог boot
boot
├── pxe каталог с файлами для обеспечения pxe-загрузки
│ ├── pxelinux.cfg конфигурации сетевой загрузки в формате pxe
│ │ ├── 01-08-00-27-30-0a-c9 конфигурации сетевой загрузки сервера с указанным MAC
│ │ └── default
│ ├── kernels каталог для хранения ядра и initramfs загружаемой системы
│ │ └── my_build_1 ядро linux для проекта my_build_1
│ │ ├── initrd.img-6.1.152-1-generic
│ │ └── vmlinuz-6.1.152-1-generic
│ ├── chain.c32
│ ├── ldlinux.c32
│ ├── libcom32.c32
│ ├── libutil.c32
│ ├── menu.c32
│ ├── pxelinux.0
│ └── vesamenu.c32
└── sqsh образы файловой системы загружаемой ОС
└── my_build_1 образы файловой системы загружаемой ОС проекта my_build_1
├── 08-00-27-30-0a-c9 образы (или ссылки) для загрузки на сервер с указанным MAC
│ ├── debug каталог для образов, загружаемых в конфигурации debug
│ │ ├── 10_filesystem.squashfs
│ │ ├── 50_settings.squashfs
│ │ └── 99_administrator.squashfs
│ └── regular каталог для образов, загружаемых в конфигурации regular
│ ├── 10_filesystem.squashfs
│ └── 50_settings.squashfs
├── debug
│ ├── 10_filesystem.squashfs
│ └── 99_administrator.squashfs
└── regular
└── 10_filesystem.squashfs
2.4. Требования к серверу, на который загружается ОС
- Физический или виртуальный сервер
- Поддержка BIOS
- ОЗУ
- минимум - 4 ГБ
- максимум - в зависимости от предполагаемой нагрузки в виде контейнеров или pod'ов kubernetes
- CPU - от 2 vCPU
- Сетевой интерфейс с возможностью загрузки по протоколу PXE
- Жёсткий диск
- минимум - 512 МБ (хранение настроек, минимальные логи)
- максимум - в зависимости от потребностей контейнеров
2.5. Процесс загрузки
- Сконфигурируйте BIOS сервера на загрузку по сети
- Укажите для сетевой загрузки тот интерфейс, MAC-адрес которого был использован в параметре --servers
- Сохраните настройки и перезагрузите сервер
3. Загрузка ВМ из QCOW2-образа
3.1. Системные требования
- Гипервизор с поддержкой QCOW2-формата
- Объем диска - 12 ГБ (хранение самого образа, CoW слой для записи и хранения настроек и данных контейнеров)
- ОЗУ
- минимум - 4 ГБ
- максимум - в зависимости от предполагаемой нагрузки в виде контейнеров или pod'ов kubernetes
- Сетевой интерфейс - по необходимости, для загрузки образов контейнеров и подключения к сервисам в контейнерах
3.2. Процесс загрузки
- Скопировать образ(ы) qcow2, полученные в результате сборки проекта, на гипервизор
- Создайте на основе образов Виртуальные машины и запустите их
- Если нужно, сконфигурируйте окружение ВМ
- Нет меток