【azurenv】ローカルの環境変数を Azure アプリへ同期させる CLI ツール

に公開

こんにちは、モモスケです。
今回は、ローカルの .env ファイルから Azure App ServiceAzure Functions 上の環境変数を一括で更新できる CLI ツール 「azurenv」 を開発したのでご紹介します。

azurenv とは?

azurenv は、Go 言語で実装された クロスプラットフォーム CLI ツール です。
手元の .env ファイルをコピー&ペーストして Azure Portal に貼り付けるような作業を 1 コマンド で自動化できるのが大きな特徴です。

主な機能

  • App Service や Azure Functions に既に登録されてる環境変数を取得し表示
  • ローカル ファイルと Azure の環境変数を比較し、差分を表示
  • ローカル ファイル(例:.env)を読み込み、Azure に環境変数を一括更新

背景

App ServiceAzure Functions には、環境変数を設定することができます。

その際、ローカルで開発している際には .env などのファイルに環境変数を記述し、それを Azure Portal にコピー&ペーストすることが一般的です。

  1. .env ファイルに環境変数を定義
  2. Azure Portal で「アプリケーション設定」を開いて、手動でコピペ or 手打ち
  3. 値が増減するたびに、また同じ作業を繰り返す…

とても煩雑で、キーを打ち間違えてしまうリスクも大きいです。
azurenv はこの手間をなくすことを目的に開発しました。

インストール方法

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/ry0y4n/azurenv/main/scripts/install.sh | sh

Windows

powershell -Command "Invoke-WebRequest -Uri https://raw.githubusercontent.com/ry0y4n/azurenv/main/scripts/install.ps1 -OutFile install.ps1; .\install.ps1"

詳細は以下の GitHub リポジトリを参照してください。
https://github.com/ry0y4n/azurenv

コマンド一覧と使い方

App Service 関連コマンド

1. azurenv webapp list-remote

App Service のアプリ設定を取得します。

azurenv webapp list-remote --name <WebAppName> --resource-group <ResourceGroupName>

2. azurenv webapp diff

ローカルの .env と App Service のアプリ設定を比較し、変更差分を確認できます。

azurenv webapp diff --name <WebAppName> --resource-group <ResourceGroupName> --file <.env>

3. azurenv webapp apply

ローカルの .env を App Service のアプリ設定に反映します。

azurenv webapp apply --name <WebAppName> --resource-group <ResourceGroupName> --file <.env>

Azure Functions 関連コマンド

1. azurenv function list-remote

Azure Functions のアプリ設定を取得します。

azurenv functionapp list-remote --name <FunctionAppName> --resource-group <ResourceGroupName>

2. azurenv function diff

ローカルの .env と Azure Functions のアプリ設定を比較します。

azurenv functionapp diff --name <FunctionAppName> --resource-group <ResourceGroupName> --file <.env>

3. azurenv function apply

ローカルの .env を Azure Functions に一括で反映します。

azurenv functionapp apply --name <FunctionAppName> --resource-group <ResourceGroupName> --file <.env>

その他のコマンド

  • azurenv version: バージョン情報を表示します。
  • azurenv azcheck: 現在ログインしている Azure CLI のアカウント情報を表示します。自分がどのサブスクリプションを使っているか手軽に確認出来て便利です。

補足

まとめ

  • azurenv を使うと、ローカルの .env1 コマンドで App Service や Azure Functions に反映可能です。
  • 手動コピペを繰り返す必要が無くなるため、ヒューマンエラーの軽減 & 作業効率の向上が期待できます。
  • 事前に Azure CLI (az) が正しくインストール & ログインされているかを確認してください。
  • Go 言語で実装されているため、クロスプラットフォームで依存関係無く動作するシングルバイナリとして配布されています。

バグや改善提案があれば、GitHub の Issue / PR でフィードバックをお寄せいただけると嬉しいです。
少しでも皆さんの Azure 環境変数管理 がラクになることを願っています!

参考資料

GitHubで編集を提案
Microsoft (有志)

Discussion