Terraform を Azure Developer CLI (azd) のコードとしてのインフラストラクチャ ツールとして使用する
Azure Developer CLI (azd
) では、次のようなコードとしてのインフラストラクチャ (IaC) プロバイダーが複数サポートされています。
既定では、azd
は Bicep を IaC プロバイダーと見なします。 プロジェクトに最適な IaC プロバイダーを決める際は、「Terraform と Bicep の比較」の記事を参照してください。
Note
Terraform はまだベータ版です。 アルファ版とベータ版の機能サポートの詳細については、「機能のバージョン管理とリリース戦略」を参照してください
前提条件
- Terraform のインストールと構成
- Azure CLI のインストールとログイン (v 2.38.0+)
- Node.js または Python Terraform テンプレートで、アーキテクチャ図とデプロイする Azure リソースを確認します。
Note
azd
は Azure CLI ログインには依存しませんが、Terraform には Azure CLI が必要です。 Terraform の公式ドキュメントに記載されているこの要件の詳細を確認してください。
Terraform を IaC プロバイダーとして構成する
プロジェクトのルートにある
azure.yaml
ファイルを開き、既定 (Bicep) をオーバーライドする次の行があることを確認します。infra: provider: terraform
プロジェクトのルートにある
infra
ディレクトリにすべての.tf
ファイルを追加します。azd up
を実行します。
Note
Terraform を IaC プロバイダーとして使用する 2 つの azd テンプレート (Node.js と Terraform、Python と Terraform) を確認してください。
Terraform 用 azd pipeline config
Terraform には、マネージド インフラストラクチャと構成に関する状態が格納されます。 この状態ファイルのため、GitHub でデプロイ パイプラインを設定する azd pipeline config
を実行する前にリモート状態を有効にする必要があります。
既定では、azd
はローカル状態ファイルの使用を想定します。 リモート状態を有効にする前に azd up
を実行した場合は、azd down
を実行してリモート状態ファイルに切り替える必要があります。
ローカルとリモートの状態
Terraform では、永続化された状態データを使用して、それが管理するリソースを追跡します。
リモート状態を有効にするシナリオ:
- 状態データへの共有アクセスを許可し、そのインフラストラクチャ リソースのコレクションで複数のユーザーが共同作業できるようにする
- 状態ファイルに含まれる機密情報が公開されないようにする
- 状態をローカルに格納しているために誤って削除される可能性を減らす
リモート状態を有効にする
リモート状態ストレージ アカウントを構成していることを確認します。
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}" }
infra
フォルダーにあるprovider.tf
を更新してバックエンドをリモートに設定します。# Configure the Azure Provider terraform { required_version = ">= 1.1.7, < 2.0.0" backend "azurerm" { }
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
通常のワークフローに従って次の
azd
コマンドを実行します。 リモート状態が検出されると、構成されたバックエンド構成でazd
により Terraform が初期化されます。環境をチームメイトと共有するには、ローカル システムの環境設定を更新するために
azd env refresh -e <environmentName>
が実行されていることを確認し、ステップ 4 を実行して.env
ファイルに構成を追加します。
関連項目
- Azure CLI に対する Terraform の依存関係の詳細について学びます。
- リモート状態の詳細については、「Terraform 状態を Azure Storage に格納する」を参照してください。
- テンプレート: Azure 上で Node.js API と MongoDB (Terraform) を使用した React Web アプリ