Terraform AzAPI プロバイダーの概要
AzAPI プロバイダーは、 Azure ARM REST API の上にある薄いレイヤーです。 AzAPI プロバイダーを使用すると、任意の API バージョンを使用して任意の Azure リソースの種類を管理できます。 このプロバイダーは、新しい Azure リソースとプロパティ (プライベート プレビューを含む) の管理を有効にすることで、AzureRM プロバイダーを補完します。
リソース
更新を必要とせずにすべての Azure リソースと機能を管理できるようにするために、AzAPI プロバイダーには次の汎用リソースが含まれています。
リソース名 | 説明 |
---|---|
azapi_resource | 完全な CRUD を使用して Azure (コントロール プレーン) リソース (API) を完全に管理するために使用されます。 ユース ケースの例: 新しいプレビュー サービス 既存のサービスに追加された新機能 現在対象外の既存の機能とサービス |
azapi_update_resource | 完全な CRUD を持たないリソースまたはリソースの一部を管理するために使用される ユース ケースの例: 既存のサービスの新しいプロパティを更新する DNS SOA レコードなど、事前に作成された子リソースを更新します。 |
リソースの構成例
次のコード スニペットは、AzureRM プロバイダーに現在存在しないリソースを構成します。
resource "azapi_resource" "publicip" {
type = "Microsoft.Network/Customipprefixes@2021-03-01"
name = "exfullrange"
parent_id = azurerm_resource_group.example.id
location = "westus2"
body = jsonencode({
properties = {
cidr = "10.0.0.0/24"
signedMessage = "Sample Message for WAN"
}
})
}
次のコード スニペットでは、AzureRM から既存のリソースのプレビュー プロパティを構成します。
resource "azapi_update_resource" "test" {
type = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
resource_id = azurerm_container_registry.acr.id
body = jsonencode({
properties = {
anonymousPullEnabled = var.bool_anonymous_pull
}
})
}
AzAPI プロバイダーを使用した認証
AzAPI プロバイダーは、AzureRM プロバイダーと同じ認証方法を有効にします。 認証オプションの詳細については、「Azure への Terraform の認証」を参照してください。
AzAPI プロバイダーを使用する利点
AzAPI プロバイダーには、次のような利点があります。
- すべての Azure サービスをサポートします。
- プライベート プレビュー サービスと機能
- パブリック プレビュー サービスと機能
- すべての API のバージョン
- 完全な Terraform 状態ファイルの忠実性
- プロパティと値は状態に保存
- Swagger への依存関係なし
- 一般的で一貫性のある Azure 認証
AzAPI プロバイダーのエクスペリエンスとライフサイクル
このセクションでは、AzAPI プロバイダーの使用に役立ついくつかのツールについて説明します。
VS Code 拡張機能と言語サーバー
AzAPI VS Code 拡張機能は、次の利点を備えた豊富なオーサリング エクスペリエンスを提供します。
- Intellisense
- コードのオート コンプリート
- ヒント
- 構文検証
- クイック ヒント
AzAPI2AzureRM 移行ツール
AzureRM プロバイダーは、Azure リソースを管理するための最も統合された Terraform エクスペリエンスを提供します。 そのため、AzAPI プロバイダーと AzureRM プロバイダーの推奨される使用方法は次のとおりです。
- サービスまたは機能がプレビュー段階にある間は、AzAPI プロバイダーを使用します。
- サービスが正式にリリースされたら、AzureRM プロバイダーを使用します。
AzAPI2AzureRM ツールは、AzAPI プロバイダーから AzureRM プロバイダーへの移行に役立つよう設計されています。
AzAPI2AzureRM は、AzAPI リソースを AzureRM リソースに変換するプロセスを自動化するオープンソース ツールです。
AzAPI2AzureRM には、"プラン" と "移行" の 2 つのモードがあります。
- プランでは、移行できる AzAPI リソースが表示されます。
- 移行では、HCL ファイルと状態の両方でAzAPI リソースを AzureRM リソースに移行します。
AzAPI2AzureRM は、移行後に Terraform の構成と状態が実際の状態と一致することを保証します。 状態が更新されたことを検証するには、移行を完了した後に terraform plan
を実行して、何も変更されていないことを確認できます。
AzAPI プロバイダーの使用
VS Code 拡張機能をインストールする
AzAPI プロバイダーを Terraform 構成に追加します。
terraform { required_providers { azapi = { source = "Azure/azapi" } } } provider "azapi" { # More information on the authentication methods supported by # the AzureRM Provider can be found here: # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs # subscription_id = "..." # client_id = "..." # client_secret = "..." # tenant_id = "..." }
次のコード例に示すように、1 つ以上の AzAPI リソースを宣言します。
resource "azapi_resource" "example" { name = "example" parent_id = data.azurerm_machine_learning_workspace.existing.id type = "Microsoft.MachineLearningServices/workspaces/computes@2021-07-01" location = "eastus" body = jsonencode({ properties = { computeType = "ComputeInstance" disableLocalAuth = true properties = { vmSize = "STANDARD_NC6" } } }) }
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示