Перейти к содержанию

Файл конфигурации 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