Файл конфигурации Exordos#
Файл exordos.yaml содержит конфигурацию для проекта Exordos. Он должен быть помещен в каталог exordos в корне проекта. Он состоит из нескольких разделов, таких как build, deploy и т.д.
Структура проекта#
Для каждого проекта Exordos в корне проекта должен существовать каталог exordos:
.
├── my_project
│ └── main.py
├── exordos
│ └── exordos.yaml
├── pyproject.toml
└── README.md
Пример конфигурации сборки#
# Раздел сборки. Описывает процесс сборки проекта.
build:
# Зависимости проекта
# Этот раздел используется для указания зависимостей сборки
# для проекта
deps:
# Целевой путь в образе
- dst: /opt/exordos_core
# Локальный путь на машине сборки
path:
src: ../../exordos_core
# Этот раздел описывает элементы проекта.
# Образы, артефакты и манифесты для каждого элемента.
elements:
# Список образов в элементе
- images:
- name: exordos-core
format: raw
# Профиль ОС для образа
profile: ubuntu_24
# Скрипт настройки
script: images/install.sh
# Переопределить параметры сборки образа, например параметры Packer
override:
disk_size: "10G"
manifest: manifests/exordos-core.yaml
# Список артефактов в элементе
artifacts:
- path: configs/my-config.yaml
- path: templates/my-template.yaml
Артефакты, полученные скриптом#
Вместо прямого указания на файл артефакт может запускать скрипт (или любой
исполняемый файл). Скрипт выполняется с текущим каталогом work_dir, а после
его завершения вложенный список artifacts (шаблоны glob, относительно
work_dir; поддерживается как минимум символ *) отбирает полученные файлы.
Если найденный элемент — каталог, он архивируется через tar и сжимается
через zstd (например, найденный каталог dist/ станет dist.tar.zst);
файлы копируются как есть. Все пути (script, work_dir) указываются
относительно файла exordos.yaml.
artifacts:
- script: images/docs_build.sh
work_dir: ../
artifacts:
- dist/
Ссылки на артефакты в шаблонах манифестов#
Статическим и скриптовым артефактам можно задать имя через поле name.
Именованный артефакт доступен в шаблонах манифестов Jinja2 через
{{ artifacts.<name> }} и рендерится в URN артефакта
(urn:artifacts:<uuid>):
artifacts:
- path: packages/my_package.whl
name: pip_package
В шаблоне манифеста:
$metapaas.types:
victoria:
package: "{{ artifacts.pip_package }}"
После рендеринга:
$metapaas.types:
victoria:
package: "urn:artifacts:<uuid>"
Именованный артефакт должен давать ровно один файл. Если шаблоны glob скрипта совпадают с несколькими файлами, возникает ошибка сборки, так как соответствие имени и URN становится неоднозначным.
Файл конфигурации push#
Конфигурация push хранится в отдельном файле — exordos.push.yaml — расположенном рядом с exordos.yaml в каталоге exordos. Она определяет один или более именованных целевых объектов push, каждый из которых указывает драйвер и целевой путь.
Формат#
push:
<target_name>:
driver: <driver> # например, "fs" для репозитория локальной файловой системы
path: <path> # целевой путь для собранных артефактов
Пример#
push:
local:
driver: fs
path: /var/lib/exordos-pools/http
Для отправки в конкретный целевой объект передайте файл конфигурации с флагом -c:
exordos push -c exordos/exordos.push.yaml