Terraform on Azure は、HashiCorp 製のマルチクラウド IaC ツール Terraform を Azure リソース管理に使用する組み合わせです。 Bicep が Azure 専用 DSL なのに対し、Terraform はマルチクラウド対応 (3,000+ Provider) で既存資産活用・OSS コミュニティ強いという特徴。 本記事では、Provider 選定・State 管理・Module 設計・CI/CD 統合を網羅的に整理します。
| 項目 | Bicep | Terraform |
|---|---|---|
| 開発元 | Microsoft | HashiCorp |
| 対応クラウド | Azure 専用 | マルチクラウド (3,000+ Provider) |
| 言語 | Bicep DSL | HCL |
| State 管理 | 不要 (ARM が自動) | 必要 (Azure Storage / Terraform Cloud) |
| 最新 Azure 機能 | 即時サポート | 遅れることあり (AzAPI で回避可) |
| 料金 | 無料 | OSS 無料 / Cloud は有料 |
| 適用シーン | Azure 専用・最新機能優先 | マルチクラウド・既存資産 |
新規 Azure 専用プロジェクトは Bicep、マルチクラウド / 既存 Terraform プロジェクトは Terraform、というのが現代の選定基準。
| 項目 | AzureRM Provider | AzAPI Provider (2022 公開) |
|---|---|---|
| 位置付け | 標準 | 補完 |
| 動作 | Azure REST API ベースの専用関数 | Azure REST API を直接呼び出す汎用 |
| リソース数 | 3,000+ 専用関数 | azapi_resource 1 つで全リソース |
| 最新機能対応 | 数ヶ月遅れることあり | 即時対応 |
| 用途 | 標準パターン | Preview 機能・最新追加リソース |
標準パターン: AzureRM Provider をベースとして使用、Preview 機能や最新追加リソースのみ AzAPI Provider で対応。両者は同一 Terraform プロジェクト内で混在可能。
Terraform State はインフラの現在状態を JSON で記録したファイル、terraform plan / apply の基準。デフォルトはローカル、本番は必ずリモート Backend に保管。
terraform {
backend "azurerm" {
resource_group_name = "rg-tfstate"
storage_account_name = "stgtfstate001"
container_name = "tfstate"
key = "prod.terraform.tfstate"
use_oidc = true
}
}Terraform Cloud (有料 SaaS) も Backend として利用可能で、より高度な State 管理を提供します。
Terraform Module は再利用可能な Terraform コードユニット。
infra/
├── main.tf # エントリポイント・Provider 設定
├── variables.tf # 入力変数
├── outputs.tf # 出力値
├── modules/
│ ├── network/ # VNet / NSG / Subnet
│ ├── compute/ # VM / App Service / AKS
│ ├── storage/ # Storage Account / Container
│ └── identity/ # Managed Identity / Key Vault
└── environments/
├── dev.tfvars
├── stage.tfvars
└── prod.tfvarsmodule "network" {
source = "./modules/network"
vnet_name = var.vnet_name
address_space = ["10.0.0.0/16"]
location = var.location
resource_group_name = azurerm_resource_group.main.name
}
module "compute" {
source = "./modules/compute"
vm_name = var.vm_name
subnet_id = module.network.app_subnet_id
resource_group_name = azurerm_resource_group.main.name
depends_on = [module.network]
}Azure Verified Modules (AVM、2024 GA) は Microsoft が品質保証する Terraform Module セットで、業界ベストプラクティス準拠の参考実装です。
エンタープライズでは AVM を基礎にカスタマイズが定石。Module 化により大規模 IaC のメンテナンス性が劇的向上します。
両者は競合せず併用可能。代表的な併用パターン:
Drift Detection は、Terraform State と実際の Azure リソース状態の差分を検出する操作。Azure Portal や CLI でリソースが手動変更された場合、State と乖離が発生、次回 terraform apply で意図しない変更が発生するリスク。
terraform plan -refresh-only: State を最新リソースに合わせて更新terraform apply -refresh-only: 差分適用terraform import: 新規リソースを State に取り込み定期的な Drift Detection を CI/CD パイプラインに組み込む (週次など) ことで、手動変更の早期発見が可能。Azure Policy の Deny Effect で手動変更そのものを禁止する組み合わせがエンタープライズの標準パターンです。
terraform fmt -check + terraform validateterraform plan -out=tfplan、変更内容予測terraform apply tfplanname: Terraform Apply
on:
push:
branches: [main]
jobs:
terraform:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: hashicorp/setup-terraform@v3
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- run: terraform init
- run: terraform plan -out=tfplan
- run: terraform apply tfplanOIDC / Workload Identity Federation で AzureRM Provider 認証 (Secret 不要)、Backend 認証も同様。Pull Request 時に Plan 結果を PR コメントに自動投稿する Pattern も標準実装。
Terraform on Azure とは?
Terraform on Azure は、HashiCorp 製のマルチクラウド IaC ツール Terraform を Azure リソース管理に使用する組み合わせ。AzureRM Provider (Microsoft 公式メンテナンス) で Azure リソースを HCL (HashiCorp Configuration Language) で宣言的に定義、terraform plan / apply コマンドで Azure に適用。Bicep が Azure 専用 DSL で最新機能即時サポートなのに対し、Terraform はマルチクラウド対応 (AWS / GCP / Azure / Kubernetes / SaaS など 3,000+ Provider) で既存資産活用・OSS コミュニティ強い。新規 Azure 専用プロジェクトは Bicep、マルチクラウド / 既存 Terraform プロジェクトは Terraform、というのが現代の選定基準です。
AzureRM Provider と AzAPI Provider の違いは?
AzureRM Provider: 標準の Azure リソース管理 Provider、Microsoft 公式メンテナンス、Azure REST API ベース、リソースタイプごとに専用関数 (azurerm_storage_account など 3,000+ リソース)、Terraform Registry で公開。AzAPI Provider: 2022 年に Microsoft が公開した新 Provider、Azure REST API を直接呼び出す汎用リソース (azapi_resource)、AzureRM Provider 未対応の新規 Azure 機能・Preview 機能を即座に利用可能 (AzureRM は数ヶ月遅れることあり)。標準パターン: AzureRM Provider をベースとして使用、Preview 機能や最新追加リソースのみ AzAPI Provider で対応。両者は同一 Terraform プロジェクト内で混在可能で、リソースタイプごとに使い分け可能です。
Terraform State の管理は?
Terraform State はインフラの現在状態を JSON で記録したファイル、terraform plan / apply の基準。デフォルトはローカル (terraform.tfstate)、本番は必ずリモート Backend に保管。Azure 標準パターン: 1) Azure Storage Account の Blob Container を Backend として使用、2) State Lock (同時更新防止) を Storage Account の Blob Lease で実現、3) State 暗号化 (Customer-Managed Key)、4) Versioning + Soft Delete で誤削除対策、5) Microsoft Entra ID 認証で State へのアクセス制御。Backend 設定例: terraform { backend 'azurerm' { resource_group_name = '...' storage_account_name = '...' container_name = '...' key = 'prod.terraform.tfstate' } }。Terraform Cloud (有料 SaaS) も Backend として利用可能で、より高度な State 管理を提供します。
Module の設計は?
Terraform Module は再利用可能な Terraform コードユニット。標準ディレクトリ構造: 1) main.tf (エントリポイント・Provider 設定)、2) variables.tf (入力変数)、3) outputs.tf (出力値)、4) modules/ (機能別モジュール: network・compute・storage)、5) environments/ (環境別 tfvars)。Terraform Registry や社内 Git で Module 公開、複数プロジェクトで再利用。Microsoft 公式の Azure Verified Modules (AVM、2024 GA) は Microsoft が品質保証する Terraform Module セットで、業界ベストプラクティス準拠の参考実装。エンタープライズでは AVM を基礎にカスタマイズが定石。Module 化により大規模 IaC のメンテナンス性が劇的向上、Bicep の Module 機能と同様の効果を提供します。
Bicep と Terraform を併用できますか?
可能、両者は競合せず併用可能。代表的な併用パターン: 1) Azure 専用リソースは Bicep、マルチクラウド要件 (AWS RDS など) は Terraform、2) 新規開発は Bicep、既存 Terraform 資産は維持、3) Microsoft の最新機能 (Preview 含む) は Bicep / AzAPI、安定機能は Terraform AzureRM。両者を Azure DevOps / GitHub Actions の同一パイプライン内で順次実行可能。CI/CD パイプライン例: Stage 1 (Bicep で Hub VNet 構築) → Stage 2 (Terraform で AWS リソース + AKS) → Stage 3 (Bicep で Azure SaaS 構成)。組織のスキルセット・既存資産・要件で柔軟に使い分けるのが現実的な戦略です。
State の Drift Detection は?
Drift Detection は、Terraform State と実際の Azure リソース状態の差分を検出する操作。Azure Portal や CLI でリソースが手動変更された場合 (Terraform 外の変更)、State と乖離が発生、次回 terraform apply で意図しない変更が発生するリスク。対応コマンド: terraform plan -refresh-only (State を最新リソースに合わせて更新)・terraform apply -refresh-only (差分適用)・terraform import (新規リソースを State に取り込み)。定期的な Drift Detection を CI/CD パイプラインに組み込む (週次など) ことで、手動変更の早期発見が可能。Azure Policy の DenyEffect で手動変更そのものを禁止する組み合わせがエンタープライズの標準パターンです。
GitHub Actions / Azure Pipelines への統合は?
標準パターン: 1) Lint (terraform fmt -check + terraform validate)、2) Init (Backend 接続)、3) Plan (terraform plan -out=tfplan、変更内容予測)、4) Manual Approval (Production の場合)、5) Apply (terraform apply tfplan)。GitHub Actions では hashicorp/setup-terraform Action 使用、Azure Pipelines では TerraformInstaller Task と TerraformTaskV4 Task の組み合わせ。OIDC / Workload Identity Federation で AzureRM Provider 認証 (Secret 不要)、Backend 認証も同様。Pull Request 時に Plan 結果を PR コメントに自動投稿する Pattern も標準実装。詳細は Bicep チュートリアル記事の CI/CD パターンが Terraform にもそのまま応用可能です。
関連認定試験は?
AZ-400 (DevOps Engineer Expert) のドメイン 3 で IaC として Bicep / ARM と並んで Terraform が問われる本領域の本命認定。AZ-104 (Administrator) で IaC 基礎、AZ-305 (Solutions Architect Expert) でアーキテクト視点での IaC 戦略選定 (Bicep vs Terraform)。Microsoft 外の認定: HashiCorp Certified: Terraform Associate (ベンダ中立、Terraform の標準認定、年 1 回更新)、Terraform 専門家として転職市場で評価される。AZ-400 + Terraform Associate の二刀流が DevOps エンジニアの強い武器、特にマルチクラウド企業で重宝されます。
関連記事・技術深掘り
Azure Bicep チュートリアル|ARM 後継 IaC の基本構文・モジュール化・What-If・CI/CD 統合【2026 年版】
Azure 純正 IaC ツール Bicep の完全チュートリアル。ARM JSON との違い・基本構文 (param/var/resource/module/output)・モジュール化ベストプラクティス・What-If デプロイ・GitHub Actions / Azure Pipelines 統合・ARM からの移行手順・関連認定試験 (AZ-104 / AZ-204 / AZ-400 / AZ-305) を日本語で網羅。
GitHub Actions vs Azure Pipelines 完全比較|CI/CD 選定・Self-hosted Runner・OIDC 認証【2026 年版】
GitHub Actions と Azure Pipelines を完全比較。機能差・Marketplace エコシステム・Self-hosted Runner / Agent・OIDC (Workload Identity Federation) 認証・Matrix Build・Composite Action / Reusable Workflow・DevSecOps 統合・関連認定試験 (AZ-400 / AZ-204) を日本語で網羅。
Azure DevOps エンジニア キャリアロードマップ|AZ-104 → AZ-400 → SC-100 シニア DevOps への道【2026 年版】
Azure DevOps Engineer になるための認定取得ロードマップ完全版。AZ-900 → AZ-104 → AZ-400 の王道ルート、GitHub と Azure DevOps の両方を扱う AZ-400 の構成、Kubernetes 認定 (CKA / CKAD / CKS) との二刀流、IaC (Bicep / Terraform) 戦略、年収レンジまで日本語で網羅。
AZ-400 完全ガイド|Microsoft Azure DevOps Engineer Expert 出題範囲・学習リソース・合格戦略【2026 年版】
Microsoft Certified: DevOps Engineer Expert (AZ-400) の完全ガイド。5 ドメインの出題範囲、Azure DevOps と GitHub の両方を網羅、IaC (Bicep / ARM / Terraform)、CI/CD パイプライン設計、DevSecOps、SRE プラクティス、3-4 ヶ月の合格ロードマップ、AZ-305 / SC-100 との二刀流戦略を日本語で網羅。
本記事の技術情報は AzureRM Provider Documentation およびMicrosoft Terraform on Azure Documentation に基づいています。 本記事は Microsoft Corporation の公式商品ではなく、いかなる提携・後援関係もありません。 Microsoft、Azure は Microsoft group of companies の商標です。Terraform は HashiCorp の商標です。 情報は 2026 年 5 月 24 日時点の公式公開資料に基づきます。最新情報は必ず公式ページをご確認ください。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
AZ-900 完全ガイド|Microsoft Azure Fundamentals 出題範囲・学習リソース・合格戦略
Microsoft Azure Fundamentals (AZ-900) の 2026 年 1 月 14 日改訂版に対...
Azure 認定資格ロードマップ 2026 完全版|全 26 試験の体系と大型再編 (AI-901/AI-103/SC-500)
Microsoft Azure 認定資格 全 26 試験 (現行 23 + 退役 3) の 2026 年版ロードマップ。...
AI-901 完全ガイド|Azure AI Fundamentals 新試験
Microsoft Certified: Azure AI Fundamentals (AI-901) の出題範囲・Mi...
Microsoft Entra ID 入門|旧 Azure AD から学ぶ ID 管理 (AZ-900/SC-900/AZ-104 必須知識)
Microsoft Entra ID (旧 Azure Active Directory) の入門解説。2023 年 7...
DP-900 完全ガイド|Azure Data Fundamentals 出題範囲・学習リソース・合格戦略
Microsoft Azure Data Fundamentals (DP-900) の完全ガイド。4 ドメインの出題範...