1 Введение
1.1 Общие сведения
OSTree применяется в НАЙС.ОС для управления версиями базовой системы по модели «версия как артефакт». Обновление в данной модели рассматривается как получение и активация целостного состояния (версии) корневой файловой системы, а не как последовательное наложение изменений пакетами на текущее состояние.
1.2 Термины, используемые в разделе
- OSTree
- Механизм хранения и доставки версий корневой файловой системы в виде «коммитов» (снимков состояния).
- Коммит (снимок)
- Зафиксированное состояние дерева файловой системы, идентифицируемое хэш-значением (SHA).
- Ref (ветка)
- Именованная ссылка на актуальный коммит выбранного профиля и архитектуры. Используется клиентами для получения обновлений.
- Treefile
- Файл описания состава системы (пакеты, источники, параметры сборки), используемый при формировании дерева.
- Файлы репозиториев (.repo)
- Конфигурационные файлы источников RPM-пакетов для сборки дерева, используемые сборочным инструментарием.
1.3 Назначение OSTree-репозитория в НАЙС.ОС
- централизованное распространение версий базовой системы и обновлений;
- воспроизводимая сборка базового дерева из заданного состава пакетов;
- обеспечение штатных откатов и исключение частичных обновлений за счёт активации подготовленной версии.
1.4 Назначение сценария mkostreerepo
Сценарий mkostreerepo предназначен для унификации и автоматизации формирования OSTree-репозитория: подготовка каталога репозитория и кэша, управление входными конфигурациями, выполнение сборки дерева, публикация индекса summary. Результатом выполнения является актуализированный репозиторий, готовый к подключению клиентами.
2 Предварительные знания и требования
2.1 Требуемые знания
- понятия: пакетный менеджер, репозиторий, releasever, architecture;
- базовые навыки работы в командной строке;
- понимание различия между «сборкой версии» и «установкой/обновлением версии».
2.2 Требуемые программные компоненты
ostree;rpm-ostree;- (при необходимости) утилита установки зависимостей в используемой среде выполнения.
2.3 Эксплуатационные требования
- сетевой доступ к источникам RPM-пакетов;
- права записи в рабочие каталоги репозитория и кэша;
- при установке зависимостей — права суперпользователя.
3 Процесс формирования OSTree-репозитория
3.1 Общая схема
Формирование OSTree-репозитория представляет собой последовательность операций: описание состава системы в treefile, определение источников пакетов через файлы .repo, выбор целевого ref, формирование коммита (снимка) и обновление индекса summary. Клиентские системы получают обновления по ref при появлении нового коммита и актуализированного summary.
3.2 Treefile: описание состава системы
Treefile описывает параметры сборки и состав базового дерева. Ключевые поля: osname, releasever, ref,
перечень используемых источников пакетов (repos) и список пакетов (packages).
{
"osname": "niceos",
"releasever": "5.2",
"ref": "niceos/5.2/x86_64/minimal",
"repos": ["niceos", "niceos-updates", "niceos-extras"],
"packages": ["bash", "systemd", "linux"]
}
3.3 Файлы .repo: определение источников пакетов
Файлы .repo определяют источники RPM-пакетов. Идентификаторы репозиториев в секциях (например, [niceos])
должны совпадать со значениями, указанными в массиве repos treefile. Несоответствие приводит к ошибкам разрешения источников пакетов.
[niceos]
name=NiceOS $releasever ($basearch)
baseurl=https://p3.niceos.ru/niceos/$releasever/core
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-NICEOS
3.4 Ref: именование веток репозитория
Ref определяет логическую ветку репозитория для конкретного профиля и архитектуры. Рекомендуется использовать стабильную схему именования:
osname/releasever/arch/profile
# пример:
niceos/5.2/x86_64/minimal
3.5 Коммит и summary: публикация результата
Каждая успешная сборка формирует новый коммит (снимок). Индекс summary обновляется для публикации актуального состояния рефов.
ostree summary --repo=/path/to/repo --update
ostree summary -v --repo=/path/to/repo
4 Функции сценария mkostreerepo
4.1 Назначение
Сценарий mkostreerepo автоматизирует формирование OSTree-репозитория и обеспечивает воспроизводимость операций в ручных запусках и в CI/CD. Сценарий выполняет подготовку структуры каталогов, проверку наличия необходимых утилит, подготовку входных конфигураций, сборку дерева, создание коммита и обновление summary.
4.2 Параметры запуска (обзор)
--repopath— корневая рабочая директория (внутри формируютсяrepo/иcache/);--treefile— путь к treefile; при отсутствии может формироваться минимальный treefile;--reposdir— каталог с файлами .repo;--osname,--releasever,--arch,--ref— параметры идентификации целевого ref;--repo-mode— режим инициализации репозитория (для публикации рекомендуется archive-совместимый режим).
mkostreerepo --repopath=/srv/niceos/ostree --verbose
mkostreerepo \
--repopath=/srv/niceos/ostree \
--treefile=./my-tree.json \
--reposdir=/srv/niceos/repos.d \
--verbose
4.3 Структура рабочих каталогов
/srv/niceos/ostree/
├─ repo/ # OSTree-объекты, refs, summary
├─ cache/ # кэш сборки
└─ *.repo # конфигурации источников пакетов (при размещении в рабочем каталоге)
4.4 Проверка наличия утилит
rpm-ostree --version
ostree --version
4.5 Инициализация репозитория
При первичном запуске создаётся новый репозиторий. Для публикации по HTTP/HTTPS используется режим, ориентированный на распространение.
ostree --repo=/srv/niceos/ostree/repo init --mode=archive-z2
4.6 Сборка дерева и формирование коммита
Сборка выполняется инструментарием rpm-ostree по treefile с использованием источников RPM-пакетов, определённых в .repo. Результатом является новый коммит, записанный в указанный ref.
rpm-ostree compose tree --unified-core \
--cachedir=/srv/niceos/ostree/cache \
--repo=/srv/niceos/ostree/repo \
/srv/niceos/ostree/niceos-base.json
4.7 Обновление summary
ostree summary --repo=/srv/niceos/ostree/repo --update
ostree summary -v --repo=/srv/niceos/ostree/repo
5 Контроль результатов
5.1 Контроль наличия ref
ostree --repo=/srv/niceos/ostree/repo refs
5.2 Контроль истории коммитов
ostree --repo=/srv/niceos/ostree/repo log niceos/5.2/x86_64/minimal
ostree --repo=/srv/niceos/ostree/repo rev-parse niceos/5.2/x86_64/minimal
5.3 Контроль публикации через summary
ostree summary -v --repo=/srv/niceos/ostree/repo
6 Дальнейшие действия
6.1 Публикация репозитория
- разместить каталог
repo/на сервере HTTP/HTTPS; - обеспечить доступ к файлу
summaryи объектам репозитория; - при использовании HTTPS обеспечить корректную настройку TLS.
6.2 Подключение клиентов
Клиентская система должна быть настроена на получение обновлений по целевому ref. Конкретные процедуры подключения и переключения фиксируются в эксплуатационной документации и применяются в соответствии с регламентом сопровождения.
6.3 Обновления и откаты
- обновление клиента выполняется как получение и активация новой версии;
- возврат выполняется штатным механизмом отката к предыдущей версии.
7 Типовые неисправности
7.1 Unknown rpm-md repository
Причина: отсутствует .repo с требуемым идентификатором или ID репозитория не совпадает с указанным в treefile.
Корректирующие действия: проверить каталог .repo, имена секций и соответствие массиву repos treefile.
7.2 Отсутствие утилит ostree/rpm-ostree
Причина: не установлены обязательные компоненты. Корректирующие действия: установить требуемые пакеты и повторить запуск.
8 Рекомендации по эксплуатации
- рекомендуется хранить treefile в системе контроля версий и применять изменения через процедуру согласования;
- рекомендуется вести раздельные контуры репозиториев (staging/production) и публиковать изменения после проверок;
- рекомендуется применять защищённую доставку (HTTPS) и контроль целостности цепочки поставки RPM-пакетов;
- рекомендуется фиксировать версии и параметры публикации в эксплуатационных регламентах.
9 Заключение
Применение OSTree в НАЙС.ОС обеспечивает версионную модель обновлений базовой системы, повышает предсказуемость эксплуатации, упрощает контроль изменений и снижает трудоёмкость восстановления за счёт штатных механизмов отката. Сценарий mkostreerepo предназначен для воспроизводимой подготовки и актуализации репозиториев, используемых для поставки версий системы.