aenvs/.docs/02-opus-cli-docs/02-configuration.md

5.1 KiB
Raw Permalink Blame History

Configuration

Два уровня конфигурации

AEVS использует два конфигурационных файла:

  1. Глобальный — credentials для доступа к storage (один на машину)
  2. Локальный — настройки конкретного проекта (один на проект)

Глобальный конфиг

Путь: ~/.config/aevs/config.yaml

Права доступа: 0600 (только владелец может читать/писать)

Содержимое:

storage:
  type: s3                              # тип хранилища (пока только s3)
  endpoint: https://s3.amazonaws.com    # S3 endpoint (для MinIO — свой URL)
  region: us-east-1                     # AWS region (опционально)
  bucket: my-aevs-bucket                # имя bucket
  access_key: AKIAIOSFODNN7EXAMPLE      # AWS Access Key ID
  secret_key: wJalrXUtnFEMI/K7MDENG...  # AWS Secret Access Key

Поля

Поле Тип Обязательный Описание
storage.type string да Тип хранилища. Значение: s3
storage.endpoint string да URL S3 endpoint
storage.region string нет AWS region (default: us-east-1)
storage.bucket string да Имя S3 bucket
storage.access_key string да AWS Access Key ID
storage.secret_key string да AWS Secret Access Key

Примеры для разных провайдеров

AWS S3:

storage:
  type: s3
  endpoint: https://s3.amazonaws.com
  region: eu-central-1
  bucket: my-envs
  access_key: AKIA...
  secret_key: xxx...

MinIO (self-hosted):

storage:
  type: s3
  endpoint: https://minio.myserver.com
  bucket: envs
  access_key: minioadmin
  secret_key: minioadmin

Cloudflare R2:

storage:
  type: s3
  endpoint: https://xxx.r2.cloudflarestorage.com
  bucket: my-envs
  access_key: xxx
  secret_key: xxx

DigitalOcean Spaces:

storage:
  type: s3
  endpoint: https://nyc3.digitaloceanspaces.com
  region: nyc3
  bucket: my-envs
  access_key: xxx
  secret_key: xxx

Локальный конфиг (проектный)

Путь: ./aevs.yaml (в корне проекта)

Содержимое:

project: my-awesome-project    # уникальное имя проекта
files:                         # список файлов для синхронизации
  - .env.prod
  - .env.dev
  - .env.local
  - docker/.env
  - services/api/.env

Поля

Поле Тип Обязательный Описание
project string да Уникальное имя проекта (идентификатор в storage)
files []string да Список относительных путей к файлам

Правила для project

  • Должен быть уникальным в пределах bucket
  • Допустимые символы: a-z, 0-9, -, _
  • Рекомендуется: kebab-case (my-awesome-project)
  • Не должен содержать: пробелы, спецсимволы, /

Правила для files

  • Относительные пути от корня проекта
  • Могут содержать поддиректории (docker/.env)
  • При push проверяется существование каждого файла
  • При pull создаются необходимые директории

Приоритет конфигурации

1. Флаги командной строки (--config, --bucket, etc.)
2. Environment variables (AEVS_BUCKET, AEVS_ACCESS_KEY, etc.)
3. Глобальный конфиг (~/.config/aevs/config.yaml)

Environment Variables

Переменная Описание
AEVS_STORAGE_TYPE Тип хранилища
AEVS_ENDPOINT S3 endpoint
AEVS_REGION AWS region
AEVS_BUCKET Имя bucket
AEVS_ACCESS_KEY Access Key ID
AEVS_SECRET_KEY Secret Access Key

Metadata файл

При каждом push создаётся metadata.json рядом с архивом.

Путь в storage: {bucket}/{project}/metadata.json

Содержимое:

{
  "updated_at": "2026-01-28T15:30:00Z",
  "files": [
    ".env.prod",
    ".env.dev",
    "docker/.env"
  ],
  "machine": "MacBook-Pro.local",
  "size_bytes": 1234
}

Поля metadata

Поле Тип Описание
updated_at string (ISO 8601) Время последнего push
files []string Список файлов в архиве
machine string Hostname машины, с которой сделан push
size_bytes int Размер архива в байтах

Metadata используется для:

  • Отображения информации в aevs list
  • Проверки что именно будет скачано при pull