5.1 KiB
5.1 KiB
Configuration
Два уровня конфигурации
AEVS использует два конфигурационных файла:
- Глобальный — credentials для доступа к storage (один на машину)
- Локальный — настройки конкретного проекта (один на проект)
Глобальный конфиг
Путь: ~/.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