Azure Developer CLI (azd) では、次のような複数のコードとしてのインフラストラクチャ (IaC) プロバイダーがサポートされています。
既定では、azd は IaC プロバイダーとしてBicepを想定しています。 プロジェクトに最適な IaC プロバイダーの決定については、 Terraform と Bicep の比較 に関する記事を参照してください。
注
Terraform はまだベータ版です。 機能のバージョン管理とリリース戦略に関するページで、アルファ 機能とベータ版の機能 サポートの詳細を確認する
前提条件
- Terraform をインストールして構成します。
- Azure CLI (v 2.38.0 以降) をインストールします。
- Node.js または Python 用の Terraform テンプレートにデプロイするアーキテクチャ図と Azure リソースを確認してください。
Important
Terraform デプロイでは、azdを使用する場合でも、Azure CLIサインインが必要です。 Terraform azurerm プロバイダーは、既定でAzure CLIを介して認証を行い、azd資格情報キャッシュからトークンを読み取りません。
azd auth loginのみを実行した場合、azd upは、ERROR: Please run 'az login' to setup accountを使用してプロビジョニング 手順で失敗します。 推奨されるサインイン フローについては、「Azureへの認証」を参照してください。
Azure に対して認証します
Terraform では認証にAzure CLIが使用されるため、azdを実行する前に、azとazd upの両方にサインインする必要があります。 これは、2 つの方法のいずれかで行うことができます。
オプション 1: Azure CLIで 1 回サインインする (推奨)
認証をAzure CLIに委任するようにazdを構成します。 この設定を使用すると、 az login で 1 回サインインし、両方のツールで同じ資格情報を使用できます。
azd config set auth.useAzCliAuth true
az login
複数のテナントを操作する場合は、 --tenant パラメーターを含めます。
az login --tenant <tenant-id>
オプション 2: 各ツールに個別にサインインする
認証のazdとAzure CLIに依存しない場合は、独自のコマンドを使用して各ツールにサインインします。
azd auth login
az login
いずれかのトークンの有効期限が切れたときに、両方のセッションを更新する必要があります。
Terraform を IaC プロバイダーとして構成する
プロジェクトのルートにある
azure.yamlファイルを開き、既定値をオーバーライドする次の行があることを確認します(Bicep)。infra: provider: terraformプロジェクトのルートにある
.tfディレクトリにすべてのinfraファイルを追加します。azd upを実行します。
注
IaC プロバイダーとして Terraform を使用する次の 2 つの azd テンプレートを確認してください:Node.js と Terraform と Python および Terraform。
azd pipeline config Terraform の場合
Terraform には、マネージド インフラストラクチャと構成に関する状態が格納されます。 この状態ファイルのため、 を実行する前にリモート状態管理を有効にしてから、GitHubでデプロイメントパイプラインを設定する必要があります。
既定では、 azd はローカル状態ファイルの使用を前提としています。 リモート状態を有効にする前に azd up を実行した場合は、 azd down を実行し、リモート状態ファイルに切り替える必要があります。
ローカルとリモートの状態
Terraform では、永続化された 状態 データを使用して、それが管理するリソースを追跡します。
リモート状態を有効にするシナリオ:
- 状態データへの共有アクセスを許可し、そのインフラストラクチャ リソースのコレクションで複数のユーザーが共同作業できるようにする
- 状態ファイルに含まれる機密情報が公開されないようにする
- 状態をローカルに格納しているために誤って削除される可能性を減らす
リモート状態を有効にする
リモート状態ストレージ アカウントを構成していることを確認します。
provider.conf.jsonフォルダーにinfraという名前の新しいファイルを追加します。{ "storage_account_name": "${RS_STORAGE_ACCOUNT}", "container_name": "${RS_CONTAINER_NAME}", "key": "azd/azdremotetest.tfstate", "resource_group_name": "${RS_RESOURCE_GROUP}" }バックエンドをリモートに設定するために、
provider.tfフォルダーにあるinfraを更新します# 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ファイルに構成を追加します。
関連項目
- Terraform の Azure CLI への依存関係の詳細について説明します。
- リモート状態の詳細については、「Terraform 状態を Azure Storage に保存する方法」を参照してください。
- テンプレート: React Web アプリ (Node.js API と MongoDB, Terraform) を Azure 上で展開