Azure Pipelines を使用して App Configuration から設定をプルする
Azure App Configuration タスクは、App Configuration ストアからキー値をプルし、それを Azure パイプライン変数として設定します。この変数は後続のタスクで使用できます。 このタスクは、キー値を構成ファイルから App Configuration ストアにプッシュする Azure App Configuration Push タスクを補足するものです。 詳細については、「Azure Pipelines を使用して App Configuration に設定をプッシュする」を参照してください。
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- App Configuration ストア - 無料で作成できます
- Azure DevOps プロジェクト - 無料プロジェクトを作成する
- Azure App Configuration タスク - Visual Studio Marketplace から無料でダウンロードする
- Azure Pipelines エージェント バージョン 2.206.1 以降、セルフホステッド エージェントでタスクを実行する場合は Node バージョン 16 以降。
サービス接続を作成する
サービス接続により、Azure DevOps プロジェクトから Azure サブスクリプション内のリソースにアクセスできます。
Azure DevOps で、ターゲット パイプラインを含むプロジェクトに移動します。 左下隅にある [プロジェクトの設定] を選択します。
[パイプライン] で、[サービス接続] を選択します。 右上隅の [新しいサービス接続] を選択します。
[新しいサービス接続] で、 [Azure Resource Manager] を選択します。
[認証方法] ダイアログで、[ワークロード ID フェデレーション (自動)] を選択して新しいワークロード ID フェデレーションを作成するか、[ワークロード ID フェデレーション (手動)] を選択して既存のワークロード ID フェデレーションを使用します。
ご自分のサブスクリプション、リソース グループ、サービス接続の名前を入力します。
新しいサービス プリンシパルを作成した場合、サービス接続に割り当てられているサービス プリンシパルの名前を探します。 次の手順では、このサービス プリンシパルに新しいロールの割り当てを追加します。
[プロジェクトの設定]>[サービス接続] の順に移動します。
新しいサービス接続を選択します。
[サービス プリンシパルの管理] を選択します。
[表示名] の値をメモします。
ロールの割り当ての追加
タスクで App Configuration ストアにアクセスできるように、タスク内で使用する資格情報に、適切な App Configuration のロールの割り当てを割り当てます。
ターゲットの App Configuration ストアに移動します。
左側のメニューで [アクセス制御 (IAM)] を選択します。
右側のペインで、 [ロールの割り当てを追加する] を選択します。
[ロール] では、[App Configuration データ閲覧者] を選びます。 このロールを使用すると、タスクで App Configuration ストアから読み取ることができます。
前のセクションで作成したサービス接続に関連付けるサービス プリンシパルを選択します。
[レビューと割り当て] を選択します。
ストアに Key Vault 参照が含まれる場合、関連する Key Vault に移動し、前の手順で作成したサービス プリンシパルに Key Vault シークレット ユーザー ロールを割り当てます。 Key Vault メニューから [アクセス ポリシー] を選択し、アクセス許可モデルとして [Azure ロールベースのアクセス制御] が選択されていることを確認します。
ビルドでの使用
このセクションでは、Azure DevOps ビルド パイプラインで Azure App Configuration タスクを使用する方法について説明します。
- [パイプライン]>[パイプライン] の順にクリックして、ビルド パイプラインのページに移動します。 ビルド パイプラインのドキュメントについては、「最初のパイプラインの作成」を参照してください。
- 新しいビルド パイプラインを作成している場合は、プロセスの最後の手順で、 [確認] タブでパイプラインの右側にある [アシスタントを表示する] を選択します。
- 既存のビルド パイプラインを使用している場合は、右上にある [編集] ボタンをクリックします。
- Azure App Configuration タスクを検索します。
- キー値を App Configuration ストアからプルするために必要なタスクのパラメーターを構成します。 パラメーターの説明は、以下の「パラメーター」セクション、および各パラメーターの横にあるヒントを参照してください。
- [Azure サブスクリプション] パラメーターを前の手順で作成したサービス接続の名前に設定します。
- [App Configuration Endpoint] (App Configuration エンドポイント) を App Configuration ストアのエンドポイントに設定します。
- 残りのパラメーターは既定値のままにします。
- ビルドを保存してキューに登録します。 ビルド ログには、タスクの実行中に発生したすべてのエラーが表示されます。
リリースでの使用
このセクションでは、Azure DevOps リリース パイプラインで Azure App Configuration タスクを使用する方法について説明します。
- [パイプライン]>[リリース] の順に選択して、リリース パイプラインのページに移動します。 リリース パイプラインのドキュメントについては、「リリース パイプライン」を参照してください。
- 既存のリリース パイプラインを選択します。 既存のリリース パイプラインがない場合は、 [新しいパイプライン] をクリックして新規作成します。
- 右上隅にある [編集] ボタンを選択して、リリース パイプラインを編集します。
- [タスク] ドロップダウンから、タスクを追加するステージを選択します。 ステージの詳細については、こちらを参照してください。
- 新しいタスクを追加するジョブの横にある + をクリックします。
- Azure App Configuration タスクを検索します。
- キー値を App Configuration ストアからプルするために必要なタスク内のパラメーターを構成します。 パラメーターの説明は、以下の「パラメーター」セクション、および各パラメーターの横にあるヒントを参照してください。
- [Azure サブスクリプション] パラメーターを前の手順で作成したサービス接続の名前に設定します。
- [App Configuration Endpoint] (App Configuration エンドポイント) を App Configuration ストアのエンドポイントに設定します。
- 残りのパラメーターは既定値のままにします。
- リリースを保存してキューに登録します。 リリース ログに、タスクの実行中に発生したすべてのエラーが表示されます。
パラメーター
Azure App Configuration タスクによって、次のパラメーターが使用されます。
- Azure サブスクリプション:利用可能な Azure サービス接続を含むドロップダウン。 利用可能な Azure サービス接続の一覧を最新の情報に更新するには、テキストボックスの右側にある [Azure サブスクリプションの更新] ボタンを押します。
- [App Configuration Endpoint] (App Configuration エンドポイント): 選択したサブスクリプションで利用可能な構成ストア エンドポイントが読み込まれるドロップダウン。 利用可能な構成ストア エンドポイントの一覧を最新の情報に更新するには、テキストボックスの右側にある [Refresh App Configuration Endpoint] (App Configuration エンドポイントの更新) ボタンを押します。
- 選択モード: 構成ストアから読み取られるキー値を選択する方法を指定します。 [Default] (既定) の選択モードでは、キーおよびラベルのフィルターを使用できます。 [Snapshot] (スナップショット) の選択モードでは、キー値をスナップショットから選択できます。 既定値は Default です。
- キー フィルター:このフィルターを使用して、Azure App Configuration から要求されるキー値を選択できます。 "*" の値を指定すると、すべてのキー値が選択されます。 詳しくは、「キー値のクエリ」を参照してください。
- ラベル:App Configuration ストアからキー値を選択するときに使用するラベルを指定します。 ラベルが指定されていない場合は、ラベルのないキー値が取得されます。 ","、"*" の文字は入力できません。
- Snapshot Name (スナップショット名): Azure App Configuration でキー値を取得するスナップショットを指定します。
- キー プレフィックスのトリミング:変数として設定する前に、App Configuration キーからトリミングする必要がある 1 つ以上のプレフィックスを指定します。 複数のプレフィックスは、改行文字で区切ることができます。
- Suppress Warning For Overridden Keys (オーバーライドされたキーの警告を抑制する): 既定値はオフです。 既存のキーがオーバーライドされたときに警告を表示するかどうかを指定します。 このオプションを有効にするのは、App Configuration からダウンロードされたキー値に、パイプライン変数に存在するものと重複するキーがあると予想される場合です。
後続のタスクでキー値を使用する
App Configuration からフェッチされるキー値は、環境変数としてアクセスできるパイプライン変数として設定されます。 環境変数のキーは、プレフィックスをトリミングした後に (指定されている場合)、App Configuration から取得されるキー値のキーです。
たとえば、後続のタスクが PowerShell スクリプトを実行する場合、次のようにキー 'myBuildSetting' を持つキー値を使用できます。
echo "$env:myBuildSetting"
値がコンソールに出力されます。
Note
App Configuration 内の Azure Key Vault 参照が解決され、シークレット変数として設定されます。 Azure Pipelines では、シークレット変数はログからマスクされます。 これらは環境変数としてタスクに渡されないので、代わりに入力として渡す必要があります。
トラブルシューティング
予期しないエラーが発生した場合、パイプライン変数 system.debug
を true
に設置すると、デバッグ ログを有効にすることができます。
よく寄せられる質問
複数のキーとラベルはどのように構成したらよいですか?
複数のラベル (default と dev など) を構成する必要がある場合もあります。 このシナリオを実装するために、1 つのパイプラインで複数の App Configuration タスクを使用できます。 後の手順でタスクによってフェッチされるキー値は、前の手順の値よりも優先されます。 前述の例では、1 つ目のタスクを使用して default のラベルを持つキー値を選択し、2 番目のタスクで dev ラベルを持つキー値を選択できます。 dev ラベルを持つキーは、default ラベルを持つ同じキーよりも優先されます。