이 레포지토리는 dotenv-org/dotenv-vault의 기능성과 적용 가능성 실험을 위해 만들어졌습니다. dotenv-vault는 팀 내 시크릿은 DOTENV_KEY 하나만을 두고, 나머지 정보는 모두 .env.vault 파일에 암호화해 저장하고 커밋하는 방식으로 운영합니다.
config-dotenv-vault.js:node를 실행할 때-r플래그로require해서.env.vault를 해석해process.env에 설정하는 역할을 합니다.main.js: 설정된 환경 변수를 갖고 실행될 파일입니다. 실제 상황이라면 서버 등의 엔트리일 것입니다.
실험의 목표는 .env로부터 .env.vault를 만들어내고, .env.vault와 DOTENV_KEY에만 의존해 환경변수들을 잘 설정할 수 있는지 보는 것입니다.
우선 의존성을 설치합니다.
yarn.env와 .env.production을 만듭니다. 이 파일들은 커밋하지 않습니다.
echo -e "DOTENV_TEST_A=dev_a\nDOTENV_TEST_B=dev_b" > .env # development 환경변수들의 모음입니다.
echo -e "DOTENV_TEST_A=prd_a\nDOTENV_TEST_B=prd_b" > .env.production이제 .env와 .env.production으로부터 .env.vault를 만들어봅시다.
yarn dotenv-vault local build이제 .env.keys와 .env.vault가 업데이트 되었을 것입니다.
config-dotenv-vault.js는 DOTENV_KEY 혹은 DOTENV_ENV를 보고 .env.vault의 해당하는 정보를 복호화해 process.env에 설정하는 일을 합니다.
DOTENV_ENV에 따라 main.js가 각 환경에 맞게 잘 실행되는지 확인해봅시다.
# `development` 환경에서 실행
node -r ./config-dotenv-vault main.js
# `production` 환경에서 실행
DOTENV_ENV=production node -r ./config-dotenv-vault main.js각 환경마다 다른 환경변수가 잘 적용되어 출력된다면 성공입니다!