Работа в CLI
Обзор
С помощью консольного клиента tuna можно получать секреты, автоматически конфигурировать текущую среду или передавать конфигурацию в env нужного приложения.
Для получения секретов через консольное приложение tuna или API необходим API-ключ пользователя или Сервисный ключ конфигурации. При локальной разработке удобнее использовать глобальные API-ключи пользователя, но для работы в CI/CD, Production и других общих средах мы настоятельно рекомендуем использовать Сервисный ключ конфигурации.
Почему tuna secrets лучше direnv при локальной разработке?
direnv - прекрасная утилита для локальной конфигурации, но она всё таки заставляет следить за локальным файлом .env
и если на Production появились новые переменные, вы можете не сразу узнать об этом и потратить часы на бессмысленную отладку. В tuna secrets предусмотрена автоматическая синхронизация секретов, что значительно упрощает этот процесс.
Почему tuna secrets лучше Gitlab/Github/Bitbucket Variables?
На самом деле причина тут та же, что и с direnv. Например, у вас есть специальный проект предназначенный для сборки и публикации приложения с помощью goreleaser и он может требовать множество ключей и токенов для разных внешних интеграций, при этом для разных окружений и использовать для этого Gitlab/Github/Bitbucket Variables неудобно, а ещё неудобнее следить за этим, плюс сложность в разграничении прав. В tuna secrets доступ к окружениям регулируется RBAC и вы можете точечно распределять доступ только нужным людям/роботам/скриптам. А обновив секрет или добавив новый, он сразу начнёт работать в CI.
Download
Чтобы получить секреты нужно выполнить команду:
tuna secrets download
Через дополнительные флаги или переменные окружения можно определить настройки, вроде проекта и конфигурации.
Передача проекта и конфигурации
Флаги --project
и --config
принимают на вход имя (алиас) проекта и конфигурации.
По умолчанию конфигурация сохранится в файл tuna.json
в текущем каталоге.
$ tuna secrets download --project api-php --config stage
INFO[13:57:46] Downloaded secrets to tuna.json
$ cat tuna.json
{
"API_DB": "postgres://postgres:postgres@localhost:5432/postgres",
"API_TOKEN": "PwZayIp9NpNntNYd2jkAAQgViM6dXdIm"
}