🙌

【効率化】Docker 管理下の Rails Credentials を VSCode で一括編集する

2023/04/12に公開

株式会社ウェイブの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つあります。

  1. コンテナ内部のファイルを VSCode 経由で編集する
  2. 複数のターミナルを開いてコマンドを実行する

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 に実行するコマンドなどを記述し保存します。
設定の詳細は、こちらのブログが大変参考になりました!

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's Techblog

Discussion