Terraform を Azure Developer CLI (azd) のコードとしてのインフラストラクチャ ツールとして使用する

Azure Developer CLI (azd) では、次のような複数のコードとしてのインフラストラクチャ (IaC) プロバイダーがサポートされています。

既定では、azd は Bicep を IaC プロバイダーと見なします。 プロジェクトに最適な IaC プロバイダーを決める際は、「Terraform と Bicep の比較」の記事を参照してください。

Note

Terraform はまだベータ版です。 アルファ版とベータ版の機能サポートの詳細については、「機能のバージョン管理とリリース戦略」を参照してください

前提条件

Note

azd は Azure CLI ログインには依存しませんが、Terraform には Azure CLI が必要です。 Terraform の公式ドキュメントに記載されているこの要件の詳細を確認してください。

Terraform を IaC プロバイダーとして構成する

  1. プロジェクトのルートにある azure.yaml ファイルを開き、既定 (Bicep) をオーバーライドする次の行があることを確認します。

    infra:
      provider: terraform
    
  2. プロジェクトのルートにある infra ディレクトリにすべての .tf ファイルを追加します。

  3. azd up を実行します。

Note

Terraform を IaC プロバイダーとして使用する 2 つの azd テンプレート (Node.js と TerraformPython と Terraform) を確認してください。

Terraform 用 azd pipeline config

Terraform には、マネージド インフラストラクチャと構成に関する状態が格納されます。 この状態ファイルのため、GitHub でデプロイ パイプラインを設定する azd pipeline config を実行する前にリモート状態を有効にする必要があります。

既定では、azd はローカル状態ファイルの使用を想定します。 リモート状態を有効にする前に azd up を実行した場合は、azd down を実行してリモート状態ファイルに切り替える必要があります。

ローカルとリモートの状態

Terraform では、永続化された状態データを使用して、それが管理するリソースを追跡します。

リモート状態を有効にするシナリオ:

  • 状態データへの共有アクセスを許可し、そのインフラストラクチャ リソースのコレクションで複数のユーザーが共同作業できるようにする
  • 状態ファイルに含まれる機密情報が公開されないようにする
  • 状態をローカルに格納しているために誤って削除される可能性を減らす

リモート状態を有効にする

  1. リモート状態ストレージ アカウントを構成していることを確認します。

  2. infra フォルダー内に provider.conf.json という名前の新しいファイルを追加します。

    {
        "storage_account_name": "${RS_STORAGE_ACCOUNT}",
        "container_name": "${RS_CONTAINER_NAME}",
        "key": "azd/azdremotetest.tfstate",
        "resource_group_name": "${RS_RESOURCE_GROUP}"
    }
    
  3. infra フォルダーにある provider.tf を更新してバックエンドをリモートに設定します。

    # Configure the Azure Provider
    terraform {
      required_version = ">= 1.1.7, < 2.0.0"
      backend "azurerm" {
      }
    
  4. azd env set <key> <value> を実行して .env ファイルに構成を追加します。 次に例を示します。

    azd env set RS_STORAGE_ACCOUNT your_storage_account_name
    azd env set RS_CONTAINER_NAME your_terraform_container_name
    azd env set RS_RESOURCE_GROUP your_storage_account_resource_group
    
  5. 通常のワークフローに従って次の azd コマンドを実行します。 リモート状態が検出されると、構成されたバックエンド構成で azd により Terraform が初期化されます。

  6. 環境をチームメイトと共有するには、ローカル システムの環境設定を更新するために azd env refresh -e <environmentName> が実行されていることを確認し、ステップ 4 を実行して .env ファイルに構成を追加します。

関連項目

次のステップ