Direnv
Узнайте, как автоматически загружать переменные окружения в вашей среде разработки.
direnv — это инструмент, который автоматически загружает переменные окружения при переходе cd в каталог и удаляет их при выходе из этого каталога. В этом руководстве показано, как использовать его вместе с Tuna.
Мы не рекомендуем загр узку всех секретов в окружение оболочки таким образом. Однако некоторым разработчикам может понадобиться такая функциональность. Это исключительно руководство по использованию Tuna Secrets с direnv и не является рекомендацией данного инструмента или рабочего процесса.
Требования
- Установите direnv
- Совместимая с
direnvоболочка
Настройка проекта
Для этого сначала необходимо выполнить команду tuna secrets setup в проекте. Убедитесь, что вы выполнили процесс настройки и связали каталог с проектом и конфигурацией.
Создание файла .envrc
В корне каталога проекта создайте файл .envrc со следующим содержимым:
Вариант 1 появился позже, так как флаг env-no-quotes появился в более поздней версии клиента.
- Вариант 1
- Вариант 2
export <(tuna secrets download --no-file --format env-no-quotes)
set -a
source <(tuna secrets download --no-file --format env)
set +a
Команда set -a включает автоматический экспорт всех последующих присвоений переменных, а set +a отключает эту функцию.
После сохранения вы можете получить предупреждение от direnv:
direnv: error /path/to/project/.envrc is blocked. Run `direnv allow` to approve its content
По умолчанию direnv не будет загружать содержимое файла .envrc, пока вы его не подтвердите. Поскольку вы только что создали его, разрешите выполнение командой:
direnv allow
После этого вы увидите сообщение о загрузке переменных окружения:
direnv: loading /path/to/project/.envrc
direnv: export +YOUR_VARIABLE
Когда вы покинете каталог, direnv выгрузит переменные:
direnv: unloading
Приведенное решение не гарантирует корректную работу со всеми значениями секретов. В частности, могут возникать ошибки с многострочными секретами. Direnv также может некорректно обрабатывать секреты, содержащие символы
?,*и ```. Также возможны проблемы с другими символами (например,$и#).