Быстрый старт
Пять минут от пустой установки до сервиса, который читает пароль от базы сам.
1. Заведите аккаунт
Сервис работает на https://env.aistastudio.ru — ставить и обслуживать нечего. Зарегистрируйтесь, подтвердите почту по ссылке из письма и создайте организацию: она станет владельцем проектов, участников и тарифа.
Адрес API — тот же домен с префиксом /api:
export ENVMASTER_URL=https://env.aistastudio.ru
Дальше в примерах он подставляется как $ENVMASTER_URL.
2. Заведите проект и секрет
Через дашборд это три экрана, через API — три запроса:
BASE=$ENVMASTER_URL/api/v1
TOKEN=$(curl -s $BASE/auth/login -H 'content-type: application/json' \
-d '{"email":"вы@example.com","password":"..."}' | jq -r .tokens.accessToken)
ORG=$(curl -s $BASE/orgs -H "authorization: Bearer $TOKEN" | jq -r .items[0].id)
PROJECT=$(curl -s $BASE/projects -H "authorization: Bearer $TOKEN" \
-H 'content-type: application/json' \
-d "{\"orgId\":\"$ORG\",\"name\":\"Billing API\",\"slug\":\"billing-api\"}" | jq -r .id)
curl -s $BASE/projects/$PROJECT/environments/production/entries \
-H "authorization: Bearer $TOKEN" -H 'content-type: application/json' \
-d '{"key":"DB_PASSWORD","kind":"secret","visibility":"masked","value":"..."}'
3. Выдайте сервису identity
curl -s $BASE/services/$SERVICE/identities -H "authorization: Bearer $TOKEN" \
-H 'content-type: application/json' \
-d '{"name":"prod worker","environmentId":"...","mode":"universal","allowedKeys":["DB_*"]}'
Ответ содержит clientSecret — он показывается ровно один раз. В базе
остаётся только его хэш, поэтому потерянный секрет не восстанавливают, а
выпускают заново.
4. Подключите сервис
import { EnvMasterClient } from "@env-master/sdk";
const em = new EnvMasterClient({
baseUrl: process.env.ENVMASTER_URL!,
project: "billing-api",
environment: "production",
});
await em.loginMachine({
clientId: process.env.ENVMASTER_CLIENT_ID!,
clientSecret: process.env.ENVMASTER_CLIENT_SECRET!,
});
const password = await em.get("DB_PASSWORD");
Всё. Дальше значение можно менять в дашборде — сервис возьмёт актуальное при следующем старте, а с ротацией и вовсе без перезапуска.
Перенести существующий .env
ENVMASTER_TOKEN=... envmaster import .env \
--project billing-api --env production --dry-run
Команда сама решит, что похоже на секрет, и покажет план до записи.