Azure Developer CLI を使用したホステッド エージェント インフラストラクチャ

Important

この記事でプレビューとしてマークされているアイテムは、現在プレビュー段階です。 このプレビューはサービス レベル アグリーメント(SLA)なしで提供されており、Microsoft はこれを運用ワークロードでの使用に推奨していません。 特定の機能がサポートされていないか、機能が制限されている可能性があります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。

Azure Developer CLI (azd) は、azure.yamlで宣言されたサービスからBicepまたは Terraform インフラストラクチャを生成できます。 azd ai agent init --infra=terraformを使用して Terraform を選択するか、--infra=bicepでBicepを選択します。 azd provision実行すると、選択したインフラストラクチャが適用されます。

インフラストラクチャのプロビジョニングとエージェントのデプロイは別々です。 Terraform または Bicep は、Azure リソースのサポートを管理します。azd deployは、hosted-agent データ プレーン バージョンを作成します。 azd ではなく Terraform を使用してエージェント自体を管理するには、 Terraform を使用したホスト型エージェントのデプロイに関するページを参照してください。

プロビジョニングされる項目

既定では、 azd ai agent init はコードとしてのインフラストラクチャ ファイルを作成しません。 --infraまたは--infra=bicepを使用して、Bicepインフラストラクチャを追加します。 --infra=terraformを使用して Terraform インフラストラクチャを追加し、infra.provider: terraformを設定します。

Bicepインフラストラクチャを追加すると、テンプレートは azd-ai-starter-basic リポジトリに基づいて、次のAzure リソースを作成します。

Resource Purpose
リソース グループ すべてのリソースを整理します。 rg-<agent-name> という名前です。
AI サービス アカウント Microsoft Foundry アカウント。
鋳造プロジェクト エージェントと AI の機能をホストします。
モデルの展開 エージェントが使用するモデル ( gpt-4.1-miniなど)。
Azure Container Registry エージェント コンテナー イメージを格納します。
Application Insights エージェントのパフォーマンスの監視とテレメトリ。
Log Analytics ワークスペース ログ収集の一元化。
マネージド ID Microsoft Entra ID に対してエージェント ID ブループリントを認証し、プラットフォーム ロールの割り当てを保持している、プロジェクトのシステム割り当て ID。

テンプレートは、 azure.yamlで宣言されているサービスと依存関係に基づいて、条件付きでさらに多くのリソースを作成します。

  • エージェント機能の設定 -- エージェントの状態、ベクター データ、およびファイルを保持するAzure リソースを宣言します。 自分が所有するストレージをエージェントが使用する必要がある場合に設定します。
  • Grounding with Bing または Grounding with Bing Custom Search -- Web 検索ツール向け。
  • Azure AI 検索 -- 検索グラウンディング用。
  • Azure Storage -- ファイル操作用。

プロジェクト構造

Bicepの場合、生成されるプロジェクトの構造は次のとおりです。

infra/
|-- main.bicep                 # Main deployment template (subscription-scoped)
|-- main.parameters.json       # Parameter bindings to azd environment variables
|-- abbreviations.json         # Naming convention abbreviations
\-- core/
    |-- ai/                    # Foundry account, project, and connections
    |-- host/                  # Container registry
    |-- monitor/               # Application Insights and Log Analytics
    |-- search/                # Azure AI Search (conditional)
    \-- storage/               # Azure Storage (conditional)

パラメーターのフロー方法

Bicepの場合、main.parameters.json ファイルはazd環境変数をパラメーターにマップします。

{
  "environmentName": { "value": "${AZURE_ENV_NAME}" },
  "location": { "value": "${AZURE_LOCATION}" },
  "aiFoundryResourceName": { "value": "${AZURE_AI_ACCOUNT_NAME}" },
  "aiProjectDeploymentsJson": { "value": "${AI_PROJECT_DEPLOYMENTS=[]}" }
}

azd provision 中に、azd は環境 (${VAR}) からこれらの .azure/<env>/.env 参照を解決して、Bicep デプロイに渡します。 Foundry プロジェクト エンドポイント、モデル デプロイ名、コンテナー レジストリ エンドポイントなどのデプロイからの出力は、 azd deploy、 azd ai agent run、および azd ai リソース コマンドで使用するために環境に書き戻されます。

Terraform インフラストラクチャ

新しいプロジェクトの場合、 azd ai agent init --infra=terraform は次のようなファイルを生成します。

infra/
|-- main.tf
|-- provider.tf
|-- variables.tf
|-- outputs.tf
|-- main.tfvars.json
\-- .azd-foundry

コンテナー ベースのサービスは、 container-registry.tfを生成することもできます。 既存のプロジェクトはインフラストラクチャを保持し、 infra/foundry/の下に別の Foundry レイヤーを受け取ることができます。 レイヤー間でファイルを移動するのではなく、実際に生成されたレイアウトを使用します。

Terraform 構成では、選択したサービスに必要な Foundry アカウント、プロジェクト、モデルのデプロイ、および関連リソースがプロビジョニングされます。 コンテナー レジストリの作成は、デプロイ モードとイメージの構成によって異なります。

main.tfvars.json は、インフラストラクチャ入力を azd 環境の値にバインドします。 outputs.tf は、プロビジョニング後に Foundry プロジェクト エンドポイントなどの値を azd に公開します。 これらのバインドは、azd ワークフローの一部です。は、生成されたパラメーター ファイルがスタンドアロン terraform applyで変更されずに動作することを想定していません。

Terraform インフラストラクチャをカスタマイズするには、生成された .tf ファイルを編集し、エージェント サービスに必要な出力を保持して、 azd provision実行します。 インフラストラクチャの変更を適用する前に、Terraform プランを確認してください。

Terraform ステートと CI/CD

生成されたファイルは、リモート状態バックエンドをブートストラップしません。 チームデプロイの場合は、CI/CD を構成する前に、Azure Storageに基づく状態、環境ごとに個別の状態キー、および必要なバックエンドのアクセス許可を構成します。

デプロイ フローについては Terraform を使用した CI/CD の設定 、バックエンド構成には azd で Terraform を使用 するを参照してください。

Terraform の排出に関する制限事項

Terraform 放出パスでは、現在の Foundry エージェント拡張機能でのサービス network: 構成はサポートされていません。 インフラストラクチャが既にあるプロジェクトを取り出す前に、既存のリソース制約を確認します。 放出は一般的なBicepから Terraform への移行ではなく、運用リソースの削除は Terraform を採用するための前提条件ではありません。

既存のリソース

Bicep テンプレートは、新しいリソースを作成する代わりに、既存のAzure リソースへの接続をサポートします。 これは、チームが既に共有インフラストラクチャを持っている場合に便利です。

既存のリソース 設定する環境変数
AI サービス アカウント AZURE_AI_ACCOUNT_NAME
Container Registry AZURE_CONTAINER_REGISTRY_RESOURCE_ID および AZURE_CONTAINER_REGISTRY_ENDPOINT
Application Insights APPLICATIONINSIGHTS_CONNECTION_STRING および APPLICATIONINSIGHTS_RESOURCE_ID

azd env setを実行する前に、これらの変数をazd provisionで設定します。

インフラストラクチャをカスタマイズする

infra/ ディレクトリは、標準のazd インフラストラクチャです。 Bicepリソースを追加または変更するには:

  1. infra/main.bicepを編集するか、infra/core/の下に新しいモジュールを追加します。
  2. main.parameters.json バインドを使用して${VAR}に新しいパラメーターを追加します。
  3. azdを使用して、対応するazd env set環境変数を設定します。
  4. azd provision を実行して、変更を適用します。

Bicep ファイルに対する変更は、デプロイ間で保持されます。

リージョンの制限

main.bicep テンプレートは、ホストされているエージェントがサポートされているリージョンにlocationを制限します。 許可リストにないリージョンにデプロイする必要がある場合は、@allowedでmain.bicepデコレーターを更新します。