【効率化】Docker 管理下の Rails Credentials を VSCode で一括編集する
株式会社ウェイブのSREシラトです!
最近、秘匿情報管理に、Rails Multi Environment Credentials を導入したのですが、
_人人人人人人人人人人人人人人_
> 更新作業つらすぎぃぃぃぃいい <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
となったので改善しました!
開発環境の概要としては、
- docker-compose で Rails や Nginx を管理
- ソースコードをボリュームマウントして開発
となります。
最終系
数ステップで、すべての環境の credentials を VSCode上で編集可能な状態にできます!
※ 数秒待ち時間発生します

戦いの歴史
Round 1 👨💻🆚😈
最初は、以下のコマンドを全環境分実行しておりましたが、、、
しばらく経つと、繰り返し作業が辛いと感じ始め、精神的なダメージが蓄積し敗北😇
ねちねち攻撃にやられました。
docker exec -it [コンテナ名] sh
EDITOR='vi' rails credentials:edit -e development
Round 2 👨💻🆚👹
調べてみると、VSCode上でも編集できるという噂が?!?!?!?
しかし、Docker 管理下で開発しているため、同じ方法ではできず、まさかの不戦敗😇
docker exec -it [コンテナ名] sh
EDITOR='code --wait' rails credentials:edit -e development
手順
やることは大きく2つあります。
- コンテナ内部のファイルを VSCode 経由で編集する
- 複数のターミナルを開いてコマンドを実行する
1. コンテナ内部のファイルを VSCode 経由で編集する
1-1. 拡張機能をインストールする
Dev Containersを使用して、コンテナ内部に VSCode 経由でアクセスします。
仕組みは、公式ドキュメントをご確認ください。

1-2. Window: Open Files In New Window を off にする
Command + ,で設定ページを開いて、設定を変更します。
この設定をしないと credentials:edit の度に新しいウィンドウが開いてしまいます。。。

1-3. コンテナに接続する
左のメニューからリモートエクスプローラーを選択します。
接続したいコンテナで右クリックし、Attach to Containerをクリックする。
任意のフォルダを開いて下準備完了!

2. 複数のターミナルを開いてコマンドを実行する
2-1. 拡張機能をインストールする
Terminals Manager を使用して、複数ターミナル起動 + 各ターミナルごとでコマンドを実行できるようにします。
Dev Containers で接続したワークスペースごとに、インストールする必要があるため、注意が必要です。

2-2. 実行するコマンドを設定する
Command + shift + pで、コマンドパレットを開きterminals: Edit Configurationを実行します。

次に、terminals.json に実行するコマンドなどを記述し保存します。
設定の詳細は、こちらのブログが大変参考になりました!
{
"autorun": false,
"autokill": true,
"terminals": [
{
"name": "dev-credentials",
"command": "EDITOR='code --wait' rails credentials:edit -e development"
},
{
"name": "stg-credentials",
"command": "EDITOR='code --wait' rails credentials:edit -e staging"
},
{
"name": "pro-credentials",
"command": "EDITOR='code --wait' rails credentials:edit -e production"
},
{
"name": "test-credentials",
"command": "EDITOR='code --wait' rails credentials:edit -e test"
}
]
}
2-3. 複数環境の rails credentials:edit を同時に実行する
Command + shift + pで、コマンドパレットを開きterminals: Runを実行すると、、、

複数のターミナルが同時に開き、credentials の中身がVSCode上で確認できるかと思います!!!

おわりに
少しでも同じ辛みを感じている方のお助けになればと思います!!
諦めなくてよかった。。。
株式会社ウェイブのエンジニアによるテックブログです。 弊社では、電子コミック、アニメ配信などのエンタメコンテンツを自社開発で運営しております! wwwave.jp/service/
Discussion