Rails6에서 지원하는 Multi Environment Credentials를 프로젝트로 가져오기
개발 환경
$ docker-compose -v
docker-compose version 1.25.5
$ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
$ bin/rails -v
Rails 6.0.3.1
개시하다
Rails 5.2
지원되는 CreddentialsRails 6
는 환경마다 비밀 정보를 설정할 수 있습니다.gem 'dotenv-rails'
에서 환경 변수와 API 키를 관리할 때 환경 변수를 추가할 때마다.env
의 업데이트 내용은 다른 개발자에게 공유해야 한다.Heroku를 사용할 때 Heroku에 개발 환경과 다른 환경 변수를 추가로 설정해야 하기 때문에 좀 번거롭습니다...이런 번거로움에서 해방되다니 Multi Environment Credentials
정말 대단하다✨하지만 생성된 환경마다 키.gitignore
가 있으니 자신의 수첩 등에 기술해 다른 개발자에게 공유해 주자.Multi Environment Credentials를 가져온 후 디렉토리 및 파일 구조
# 本記事とは関連しない箇所は省略
$ tree .
.
...
├── config
... ...
│ ├── credentials
│ │ ├── development.key
│ │ ├── development.yml.enc
│ │ ├── production.key
│ │ ├── production.yml.enc
│ │ ├── staging.key
│ │ └── staging.yml.enc
│ │ ├── test.key
│ │ └── test.yml.enc
│ ├── credentials.yml.enc
... ...
│ ├── master.key
... ...
개발 환경, 제본 환경, 공식 환경에서 가져오면Multi Environment Credentials
상기 파일 구조가 형성된다.config
디렉터리에 전역 키(master 키)와 암호화 설정 내용, credentials
디렉터리에 환경별 키와 암호화 설정 내용을 설정합니다.Master의 credentials 키 생성, 비밀 정보 편집
$ EDITOR=vim bin/rails credentials:edit
Rails 5.2
와 같다.config/master.key
와 config/credentials.yml.enc
가 존재하지 않을 때 생성되며 존재할 때 기존 키를 참조하여vim를 시작합니다.Docker 환경에서File encrypted and saved.
vim가 시작되지 않는다고 말한 상태에서 응용 프로그램 용기 안에서 가볍게 두드려라apt install -y vim
😌각 환경에 대한 credentials 키 생성, 숨겨진 정보 편집
# テスト環境
$ EDITOR="vim" bin/rails credentials:edit -e test
# 開発環境
$ EDITOR="vim" bin/rails credentials:edit -e development
# ステージング環境
$ EDITOR="vim" bin/rails credentials:edit -e staging
# 本番環境
$ EDITOR="vim" bin/rails credentials:edit -e production
개발 환경이라면 -e development
의 느낌으로 지정 환경을 선택한다.그나저나 --environment=development
이 지정도 마찬가지다.각 환경의 credentials 확인
# テスト環境
$ bin/rails credentials:show -e test
# 開発環境
$ bin/rails credentials:show -e development
# ステージング環境
$ bin/rails credentials:show -e staging
# 本番環境
$ bin/rails credentials:show -e production
이렇게 환경을 선택하고 명령을 두드리면 아래 각 환경이 설정한 값을 확인할 수 있다.aws:
access_key_id: 123
secret_access_key: 345
credentials 액세스
# 本番環境の場合
$ bin/rails c -e production
# 設定内容を確認
pry(main)> Rails.application.credentials.config
=> {:aws=>{:access_key_id=>123, :secret_access_key=>345}}
# 設定値にアクセス
pry(main)> Rails.application.credentials.aws[:access_key_id]
=> 123
# この書き方も同じ
pry(main)> Rails.application.credentials.dig(:aws, :access_key_id)
=> 123
응용 프로그램에 설정된 값을 사용하려면 위에서 설명한 접근 설정 값을 사용할 수 있습니다.Rails 5.2
같은 기술이지만 환경마다 설정된 값을 읽습니다👀CircleaCI 구성
테스트를 통과하려면 CircleaCI가 테스트 환경의 credentials를 읽어야 합니다.
Projects > プロジェクト名 > Project Settings > Environment Variables
설정할 수 있습니다.Name*
에서 RAILS_MASTER_KEY
, Value*
에서 config/credentials/test.key
에 쓴 키를 설정하십시오.덤
credentials의 설정값을 반영하지 않습니다!
로컬 Rails 서버를 다시 시작하십시오.Docker의 경우 컨테이너를 중지(안 되면 컨테이너를 폐기)한 후 시작합니다.
환경마다 키를 잃어버리면 어떡해요?
그런 너한테는 좋은 소식이야.
config/credentials/環境名.key
와 config/credentials/環境名.yml.enc
를 삭제하고 두드리기$ EDITOR="vim" bin/rails credentials:edit -e 環境名
만 하면 된다.개발 환경에서 삭제
config/credentials/development.key
와 config/credentials/development.yml.enc
, 두드리기EDITOR="vim" bin/rails credentials:edit -e development
를 하면 삭제된 2개 파일이 다시 생성됩니다.config/credentials/development.key
다시 생성된 키를 기술한 것 같습니다.✏️참고 자료
Reference
이 문제에 관하여(Rails6에서 지원하는 Multi Environment Credentials를 프로젝트로 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/banrih/articles/f22f0a70bbead2a02110텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)