Dopper + direnv == «<3"

Я использую React для создания cl3rk.io. SPA нуждается в некоторых настройках, таких как OAuth ID клиента, Auth0 Domain и URL бэкенда. Я стараюсь не фиксировать конфигурацию в git-репо, поэтому у меня есть два варианта:

  • создать .env файл на каждой машине, на которой я работаю
  • передать конфигурацию поставщику конфигурации

Существует множество поставщиков конфигурации, например Azure App Configuration. Несколько месяцев назад я обнаружил Doppler, который по определению не является менеджером конфигурации, но является хранилищем секретов с некоторыми изящными функциями. В этом посте я покажу вам, как я использую doppler с direnv.

Требования:

  • Это будет работать только на Linux/Mac OS
  • Оболочка Doppler
  • direnv

Doppler

Doppler имеет щедрое бесплатное предложение (5 пользователей бесплатно!🎉) — это очень важно для меня, так как я использую doppler для cl3rk, который пока не приносит денег, а также для личных проектов.

В левом верхнем углу видно, что я нахожусь в рабочем пространстве cl3rk. У каждого пользователя может быть несколько рабочих пространств. У меня есть рабочее пространство для каждого продукта или прототипа, над которым я работаю.

В каждом рабочем пространстве есть несколько проектов. Я использую проекты двумя способами:

  • Сделать конфигурацию доступной для других проектов с помощью секретных ссылок. На скриншоте проект azure является примером этого. В нем хранятся учетные данные для общения с azure.
  • На логическую единицу проекта: фронтенд и потенциально бэкенд / API

В каждом проекте есть этапы, представляющие различные экземпляры конфигурации для различных развертываний.

Каждый из этапов содержит свой собственный набор секретов и конфигураций.

Есть еще много интересного, так что заходите на Doppler и пробуйте.

direnv

Связь между конфигурацией Doppler и React все еще отсутствует, и для этого я использую direnv.

С помощью direnv вы можете поместить файл инструкций (.envrc) в каждую папку, и как только терминал входит в папку, выполняется .envrc. Это полезно для установки дополнительных переменных env или для добавления исполняемых файлов в путь.

пример .envrc для чтения файла .env и добавления его содержимого в переменные окружения:

dotenv
export Hi="dev.to"
Вход в полноэкранный режим Выйти из полноэкранного режима

Вывод оболочки при входе в каталог / с применением direnv allow .:

direnv: loading ~/projects/cl3rk/.envrc                                                        
direnv: export +DOPPLER_TOKEN +Hi
~/projects/cl3rk main* ❯ 
Вход в полноэкранный режим Выход из полноэкранного режима

Два переменных устанавливаются DOPPLER_TOKEN из файла .env и Hi из .envrc.

При выходе из папки все добавленные переменные снова удаляются:

direnv: unloading
Вход в полноэкранный режим Выход из полноэкранного режима

Вот пример из реальной жизни:

.
│   .envrc
│   .env                 # contains the doppler access token    
│   ...
└───IaC                  # contains all code for Infrastructure as Code
│   │   .envrc           # updated .envrc file to point to the correct Doppler project (infrastructure) and stage (dev by default)
│   │   main.tf
└───Web_Frontend
    │   .envrc           # updated .envrc file to point to the correct Doppler project (backend) and stage (dev by default
    │   package.js
Вход в полноэкранный режим Выход из полноэкранного режима

./.envrc:

dotenv # only read the .env file
Войти в полноэкранный режим Выход из полноэкранного режима

./.env:

DOPPLER_TOKEN="dp.pt.***"
Войти в полноэкранный режим Выход из полноэкранного режима

IaC/.envrc:

source_up                               # also scan top-level folders for .envrc files and run them as well
export DOPPLER_PROJECT=infrastructure   # use the infrastructure project
export DOPPLER_CONFIG=dev               # and the dev stage
# download all the secrets to your shell and remove them
export $(doppler secrets download --no-file --format env-no-quotes)

Войти в полноэкранный режим Выход из полноэкранного режима

Если вы потеряете ноутбук, просто восстановите токен Доплера, и на вашем компьютере не останется никаких секретов. Кроме того, вы можете легко поделиться конфигурацией с коллегами, не копируя файл .env. Как только вы входите в одну из директорий, выполняется код .envrc, и Doppler вводит секреты в качестве переменных окружения, которые вы можете использовать в своих проектах. Довольно аккуратно. Что вы думаете?

Оцените статью
devanswers.ru
Добавить комментарий