Hashicorp Terraform は、クラウド インフラストラクチャを設定して実装するためのオープン ソースの IaC (コードとしてのインフラストラクチャ) ツールです。 トポロジに必要な状態を記述する構成ファイル内のインフラストラクチャを体系化します。 Terraform では、Terraform プロバイダーを使用して、パブリック クラウド、プライベート クラウド、SaaS サービスなどのインフラストラクチャを管理できます。
Azure インフラストラクチャ用の Terraform プロバイダー
いくつかの Terraform プロバイダーにより、Azure インフラストラクチャの管理が可能になります。
- AzureRM: 仮想マシン、ストレージ アカウント、ネットワーク インターフェイスなどの安定した Azure リソースと機能を管理します。
- AzAPI: Azure Resource Manager API を直接使用して、Azureリソースと機能を管理します。 このプロバイダーを使用すると、プロバイダーの更新を必要とせずに、Azureの最新機能との整合性を実現できます。 AzAPI プロバイダーの詳細については、Terraform AzAPI プロバイダーに関するページを参照してください。
- AzureAD:グループ、ユーザー、サービス プリンシパル、アプリケーションなどの Microsoft Entra リソースを管理します。
- AzureDevops: エージェント、リポジトリ、プロジェクト、パイプライン、クエリなどの Azure DevOps リソースを管理します。
- AzureStack: 仮想マシン、DNS、仮想ネットワーク、ストレージなどの Azure Stack Hub リソースを管理します。
AzAPI と AzureRM の使用
AzAPI と AzureRM を使用するタイミングを理解するには、 HashiCorp との共同ステートメントをお読みください。
Azure で Terraform を使用する利点
このセクションでは、Terraform を使用して Azure インフラストラクチャを管理する利点について説明します。
一般的な IaC ツール
Terraform Azure プロバイダーを使用すると、同じ宣言型構文とツールを使用して、すべてのAzure インフラストラクチャを管理できます。 これらのプロバイダーを使用すると、次のことができます。
- 管理グループ、ポリシー、ユーザー、グループ、ポリシーなどのコア プラットフォーム機能を構成できます。 詳細については、クラウド導入フレームワークのエンタープライズ規模の Terraform の実装に関する情報を参照してください。
- Azure DevOps Projects とパイプラインを構成して、通常のインフラストラクチャとアプリケーションのデプロイを自動化します。
- アプリケーションに必要な Azure リソースをデプロイします。
インフラストラクチャの管理を自動化する
Terraform テンプレート ベースの構成ファイル構文を使用して、反復可能で予測可能な方法でAzureリソースを構成します。 インフラストラクチャ管理の自動化には、次の利点があります。
- インフラストラクチャをデプロイおよび管理する際の人的エラーの可能性を軽減します。
- 同じテンプレートを複数回デプロイして、同一の開発環境、テスト環境、実稼働環境を作成することができます。
- 必要に応じて作成することで、開発環境とテスト環境のコストを削減します。
インフラストラクチャの変更を適用する前に理解する
リソース トポロジが複雑になるにつれて、インフラストラクチャの変更の意味と影響を理解することが困難になる場合があります。
Terraform CLI を使用すると、プランを適用する前にインフラストラクチャの変更を検証してプレビューできます。 インフラストラクチャの変更を安全な方法でプレビューすると、次のような利点があります。
- チーム メンバーは、提示されている変更とその影響を理解することによってより効率的に共同作業ができます。
- 開発プロセスの早い段階で意図しない変更をキャッチできます。
次のステップ
環境に応じて、Terraform をインストールして構成します。
Note
Azure Storage アカウントの変換では、サポート対象の帯域外変更が発生し、Terraform がストレージ アカウントの置換を計画する原因となることがあります。 これらの変換中に予期しない再作成を防ぐ方法については、ステートフルなAzure リソースの Terraform ドリフトの防止に関するページを参照してください。
Terraform の構成: まだ行っていない場合は、次のいずれかのオプションを使用して Terraform を構成します。