envmaster
v0.1.5
Published
envmaster CLI: secrets in the terminal and CI
Readme
envmaster (CLI)
Тонкая обёртка над @env-master/sdk для CI и локальной работы. Расшифровка
происходит там же, где и в SDK — на стороне клиента.
Команды
envmaster login --url <url> --client-id <id> --client-secret <secret>
envmaster export --project <slug> --env <slug> [--file out.env]
envmaster run --project <slug> --env <slug> [--mask] -- <cmd...>
envmaster validate --project <slug> --env <slug> [--schema env.schema.yml] [--warn-undeclared]Откуда берутся креды
По убыванию приоритета:
- флаги
--url,--client-id,--client-secret; - переменные
ENVMASTER_URL,ENVMASTER_CLIENT_ID,ENVMASTER_CLIENT_SECRET; ~/.envmaster/config.json— его пишетenvmaster login, права 0600.
В конфиге лежат машинные креды, а не значения записей: секреты на диск не попадают ни на одном шаге.
run вместо export
export пишет dotenv-файл (или в stdout для пайпов) — это нужно, когда иначе
никак. Предпочтительнее run: значения передаются дочернему процессу через
окружение и не оседают в файле.
envmaster run --project billing-api --env production --mask -- ./deploy.shС --mask stdout и stderr дочернего процесса фильтруются построчно: известные
значения заменяются на ***. Код возврата дочернего процесса проксируется.
import — миграция с .env
ENVMASTER_TOKEN=<токен из дашборда> \
envmaster import .env --project billing-api --env production --dry-runРазбирает существующий файл (включая export KEY=…, кавычки и \n) и
заводит записи в окружении. Ключи, похожие на креденшелы — *PASSWORD*,
*TOKEN*, *SECRET*, *KEY* и подобные — становятся секретами с visibility
masked, остальные обычными переменными; --all-secrets переключает всё в
секреты. Существующие ключи пропускаются, пока не передан --overwrite.
Команда пишет, поэтому аутентифицируется как человек: нужен пользовательский
токен (--token или ENVMASTER_TOKEN), а не машинные креды — те read-only по
дизайну. В отчёте печатаются только имена ключей и принятое решение, значения —
никогда.
validate в пайплайне
envmaster validate --project billing-api --env productionСверяет env.schema.yml с тем, что реально лежит в окружении, и падает, если
обязательного ключа нет — то есть деплой останавливается до рантайма, а не
после. --warn-undeclared дополнительно сообщает о ключах, которых нет в схеме.
Безопасность вывода
export без --file в интерактивном терминале печатает предупреждение: вывод
реальных значений на TTY почти всегда ошибка. Файл создаётся с правами 0600.
Значения никогда не пишутся в stderr и в логи.
