Azure MCP Server ツールは、自然言語プロンプトを使用して Terraform for Azureを操作するのに役立ちます。 conftest を使用して、AzureRM と AzAPI プロバイダーのドキュメントを取得し、Azure検証済みモジュールを検出し、既存のAzure リソースを Terraform 構成にエクスポートし、Azure ポリシー ライブラリ (policy-library-avm) に対して Terraform ワークスペースとプランを検証できます。
Azure Terraform ツールは、プロバイダードキュメントの参照からリソースのエクスポートとポリシー検証まで、Azure上の Terraform を使用したコードとしてのインフラストラクチャの完全なライフサイクルをカバーします。 詳細については、Azureドキュメントの Terraform を参照してください。
Note
ツールの注釈は、Azure側の動作のみを記述します。 このファミリの一部のツールでは、エージェントを実行するためのローカル ファイルまたはコマンドが生成されます。これは注釈ヒントには反映されません。
Note
ツール パラメーター: Azure MCP Server ツールは、タスクを完了するために必要なデータのパラメーターを定義します。 これらのパラメーターの一部は、各ツールに固有であり、ここに記載されています。 その他のパラメーターはグローバルであり、すべてのツールで共有されます。 詳細については、「 ツールパラメーター」を参照してください。
AzureRM プロバイダーのドキュメントを取得する
指定したリソースの種類に関する包括的な AzureRM Terraform プロバイダードキュメントを取得します。 リソースの概要、説明と要件を含む引数、属性、使用例、および重要な注意事項を返します。
プロンプトの例を次に示します。
- リソース ドキュメントを取得する: "azurerm_resource_groupの Terraform ドキュメントを表示する"
- データ ソースを検索する: "azurerm_storage_accountのデータ ソースドキュメントを取得する"
-
引数でフィルター処理する: "
address_spaceのazurerm_virtual_network引数のドキュメントを表示します。" - 属性を確認する: "azurerm_key_vaultの属性を表示する"
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| リソースの種類 | Required | AzureRM Terraform リソースの種類名 (たとえば、 azurerm_resource_group、 azurerm_storage_account)。
azurerm_ プレフィックスは省略可能です。 |
| ドキュメントの種類 | Optional | 取得するドキュメントの種類。 オプション: resource (既定)、 data-source。 |
| 引数 | Optional | 結果を特定の引数名にフィルター処理します。 |
| 属性 | Optional | 結果を特定の属性名にフィルター処理します。 |
ArgumentまたはAttributeのいずれかを指定します。ツールはその特定の要素の種類のドキュメントを検索します。
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
AzAPI プロバイダーのドキュメントを取得する
指定したAzure リソースの種類の AzAPI Terraform プロバイダーのドキュメントとスキーマを取得します。 型と要件を持つプロパティ定義、親リソース情報、Terraform の使用例など、 azapi_resource ブロックに適した HCL 形式のリソース スキーマを返します。 このツールは、Azure Bicep型定義を再利用して、正確な AzAPI スキーマを生成します。
プロンプトの例を次に示します。
- リソース スキーマを取得: "Microsoft.Compute/virtualMachines の AzAPI スキーマを表示して"
- 特定の API バージョン: "API バージョン 2023-05-01 の Microsoft.Storage/storageAccounts に関する AzAPI ドキュメントを取得します"
- リソースの種類を調べる: 「AzAPI では Microsoft.Network/virtualNetworks にはどのようなプロパティがありますか?」
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| リソースの種類 | Required | ARM 形式のAzureリソースの種類 (例: Microsoft.Compute/virtualMachines、Microsoft.Storage/storageAccounts)。 |
| API バージョン | Optional | リソース スキーマに使用する API バージョン。 省略すると、最新の安定バージョンが使用されます。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
検証済みモジュールAzure一覧表示する
Terraform で使用可能なすべてのAzure検証済みモジュール (AVM) を取得します。 モジュールの名前、説明、ソース参照、およびリポジトリ URL を含むモジュールの一覧を返します。 ソース フィールドは、Terraform モジュール ブロックで直接使用できます。
プロンプトの例を次に示します。
- すべてのモジュールを一覧表示します: "Terraform の検証済みモジュールAzure使用可能なすべてのモジュールを一覧表示する"
- Find モジュール: "どのようなAzure検証済みモジュールをストレージに使用できますか?
- モジュールを参照する: "AVM モジュール カタログを表示する"
このツールには、必要なパラメーターはありません。
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Azure Verified Modules のバージョンを取得
指定した Azure Verified Module (AVM) の使用可能なすべてのバージョンを取得します。 新しい日付から最も古いものに並べ替えられた、作成日を含むバージョン タグを返します。 一覧の最初のバージョンが最新です。
プロンプトの例を次に示します。
- バージョンを確認する: "avm-res-storage-storageaccount で使用できるバージョンは何ですか?
- 最新バージョン: "仮想ネットワーク用 AVM モジュールの最新バージョンは何ですか?
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| モジュール名 | Required | Azure検証済みモジュールの名前 (例: avm-res-storage-storageaccount)。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
検証済みモジュールAzureドキュメントを取得する
Azure検証済みモジュール (AVM) の特定のバージョンのドキュメント (README.md) を取得します。 使用例、入力変数、出力値、リソースの説明など、モジュールの完全なドキュメントを返します。
プロンプトの例を次に示します。
- モジュール ドキュメントを取得する: "avm-res-storage-storageaccount バージョン 0.4.0 のドキュメントを表示する"
- 使用例: "AVM キー コンテナー モジュール バージョン 0.3.0 の使用例を取得する"
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| モジュール名 | Required | Azure検証済みモジュールの名前 (例: avm-res-storage-storageaccount)。 |
| モジュールのバージョン | Required | Azure検証済みモジュールのバージョン (たとえば、0.4.0)。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
1 つのリソースを Terraform にエクスポートする
1 つのAzure リソースを Terraform 構成にエクスポートする aztfexport コマンドを生成します。 ローカルで実行するエージェントのコマンドと引数を返します。
aztfexportがローカルにインストールされていない場合は、代わりにインストール手順を返します。
プロンプトの例を次に示します。
- リソースのエクスポート: "ストレージ アカウントを Terraform 構成にエクスポートする"
- AzAPI プロバイダーを使用する: "リソース /subscriptions/.../storageAccounts/myaccount を azapi プロバイダーを使用してエクスポートする"
- カスタム名: "リソース名 'primary_vm' を使用して Terraform にこの VM をエクスポートする"
権威のあるエクスポートの場合、これを false に設定します。true の場合、エクスポートは、リソースがスキップされたり、「コードとしてのインフラ」が不完全な状態で完了する場合があります。
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| リソース ID | Required | エクスポートする完全なAzure リソース ID (たとえば、/subscriptions/.../resourceGroups/.../providers/Microsoft.Storage/storageAccounts/mystorageaccount)。 |
| 出力フォルダー | Optional | 生成された Terraform ファイルの出力フォルダー名。 既定値なし - 省略すると、ツールによってパスの入力が求められます。 |
| プロバイダー | Optional | 使用する Terraform プロバイダー: azurerm (既定) または azapi。 |
| Terraform リソース名 | Optional | 生成された Terraform 構成で使用するカスタム リソース名。 |
| ロールの割り当てを含める | Optional | ロールの割り当てをエクスポートに含めます。 |
| 並列処理 | Optional | 並列操作の数 (既定値: 10、最大: 50)。 |
| エラーが発生した場合は続行 | Optional | 一部のリソースが失敗した場合でもエクスポートを続行します (既定値: true)。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
リソース グループを Terraform にエクスポートする
Azure リソース グループとそのすべてのリソースを Terraform 構成にエクスポートするaztfexport コマンドを生成します。 ローカルで実行するエージェントのコマンドと引数を返します。
aztfexportがローカルにインストールされていない場合は、代わりにインストール手順を返します。
プロンプトの例を次に示します。
- リソース グループのエクスポート: "my-app-rg リソース グループを Terraform にエクスポートする"
- カスタム名前付け: "名前パターン 'prod_{type}' を使用してリソース グループ production-rg をエクスポートする"
- AzAPI を使用する: "azapi プロバイダーを使用してリソース グループを Terraform にエクスポートする"
権威のあるエクスポートの場合、これを false に設定します。true の場合、エクスポートは、リソースがスキップされたり、「コードとしてのインフラ」が不完全な状態で完了する場合があります。
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| リソース グループ | Required | エクスポートするAzure リソース グループの名前。 |
| 出力フォルダー | Optional | 生成された Terraform ファイルの出力フォルダー名。 既定値なし - 省略すると、ツールによってパスの入力が求められます。 |
| プロバイダー | Optional | 使用する Terraform プロバイダー: azurerm (既定) または azapi。 |
| 名前パターン | Optional | 生成された Terraform 構成でリソースに名前を付けるためのパターン。 |
| ロールの割り当てを含める | Optional | ロールの割り当てをエクスポートに含めます。 |
| 並列処理 | Optional | 並列操作の数 (既定値: 10、最大: 50)。 |
| エラーが発生した場合は続行 | Optional | 一部のリソースが失敗した場合でもエクスポートを続行します (既定値: true)。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
クエリによるリソースの Terraform へのエクスポート
aztfexport コマンドを生成して、Azure Resource Graph クエリに一致するリソースAzure Terraform 構成にエクスポートします。 ローカルで実行するエージェントのコマンドと引数を返します。
aztfexportがローカルにインストールされていない場合は、代わりにインストール手順を返します。
プロンプトの例を次に示します。
- 種類別のエクスポート: "すべてのストレージ アカウントを Terraform にエクスポートする"
- クエリによるエクスポート: "type =~ 'Microsoft.Web/sites' に一致するリソースを Terraform にエクスポート"
- カスタム出力: "'infra-output' フォルダー内のすべての VM を Terraform にエクスポートする"
権威のあるエクスポートの場合、これを false に設定します。true の場合、エクスポートは、リソースがスキップされたり、「コードとしてのインフラ」が不完全な状態で完了する場合があります。
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| Query | Required | エクスポート対象のリソースを選択するための Azure Resource Graph KQL の WHERE 句 (たとえば、type =~ 'Microsoft.Storage/storageAccounts')。 |
| 出力フォルダー | Optional | 生成された Terraform ファイルの出力フォルダー名。 既定値なし - 省略すると、ツールによってパスの入力が求められます。 |
| プロバイダー | Optional | 使用する Terraform プロバイダー: azurerm (既定) または azapi。 |
| 名前パターン | Optional | 生成された Terraform 構成でリソースに名前を付けるためのパターン。 |
| ロールの割り当てを含める | Optional | ロールの割り当てをエクスポートに含めます。 |
| 並列処理 | Optional | 並列操作の数 (既定値: 10、最大: 50)。 |
| エラーが発生した場合は続行 | Optional | 一部のリソースが失敗した場合でもエクスポートを続行します (既定値: true)。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
ポリシーに対して Terraform ワークスペースを検証する
Azure ポリシーに対してワークスペース内の Terraform conftest ファイルを検証する .tf コマンドを生成します。 ローカルで実行するエージェントのコマンドと引数を返します。 構成可能なポリシー セットを使用した検証には、Azure ポリシー ライブラリ (policy-library-avm) を使用します。
conftestがローカルにインストールされていない場合は、代わりにインストール手順を返します。
プロンプトの例を次に示します。
- ワークスペースを検証: "Azure ポリシーに照らして Terraform ワークスペースを検証する"
- 特定のポリシー セット: "Azure Proactive Resiliency Library に照らして Terraform ファイルを確認する"
- セキュリティ ポリシー: "Terraform ワークスペースで重大度の高いフィルターを使用して avmsec ポリシーを実行する"
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| ワークスペース フォルダー | Required | 検証するファイル .tf 含む Terraform ワークスペース フォルダーへのパス。 |
| ポリシー セット | Optional | 検証に使用するポリシー セット: all (既定値)、Azure-Proactive-Resiliency-Library-v2、または avmsec。 |
| 重大度フィルター | Optional | avmsec ポリシーの重大度フィルター: high、 medium、 low、または info。 ポリシー セットが avmsecされている場合にのみ適用されます。 デフォルトなし — すべての重大度を含む。 |
| カスタム ポリシー | Optional | 検証に含めるカスタム ポリシー パスのコンマ区切りの一覧。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
ポリシーに対して Terraform プランを検証する
conftest コマンドを生成して、Azure ポリシーに対して Terraform プランの JSON ファイルを検証します。 ローカルで実行するエージェントのコマンドと引数を返します。 構成可能なポリシー セットを使用した検証には、Azure ポリシー ライブラリ (policy-library-avm) を使用します。
conftestがローカルにインストールされていない場合は、代わりにインストール手順を返します。
プロンプトの例を次に示します。
- プランの検証: "Terraform プランが Azure ポリシーに準拠しているか検証する"
- Resiliency check: "Azure プロアクティブな回復性ライブラリに対する tfplan.json の確認"
- 重大度でフィルター処理する: "Terraform プランで重大度が中程度の avmsec ポリシーを実行する"
| パラメーター | 必須またはオプション | Description |
|---|---|---|
| プラン フォルダー | Required | 検証する Terraform プラン JSON ファイル (tfplan.json) を含むフォルダーへのパス。 |
| ポリシー セット | Optional | 検証に使用するポリシー セット: all (既定値)、Azure-Proactive-Resiliency-Library-v2、または avmsec。 |
| 重大度フィルター | Optional | avmsec ポリシーの重大度フィルター: high、 medium、 low、または info。 ポリシー セットが avmsecされている場合にのみ適用されます。 デフォルトなし — すべての重大度を含む。 |
| カスタム ポリシー | Optional | 検証に含めるカスタム ポリシー パスのコンマ区切りの一覧。 |
| 破壊的な | 冪等性 | オープン ワールド | [読み取り専用] | Secret | ローカル必須 |
|---|---|---|---|---|---|
| ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |