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