Terraform

クラウド | IT用語集

この用語をシェア

概要・定義

Terraformは、HashiCorp社が開発したオープンソースのIaC(Infrastructure as Code)ツールです。2014年に初版がリリースされ、インフラストラクチャをコードで定義・管理することで、クラウドリソースの作成、更新、削除を自動化します。

TerraformはHCL(HashiCorp Configuration Language)という宣言的な設定言語を使用し、複数のクラウドプロバイダーやサービスに対応しています。AWS、Azure、Google Cloud Platform、Kubernetes、GitHub、DataDogなど、3000以上のプロバイダーに対応しており、マルチクラウド環境での一貫した管理を実現します。

主要な特徴・利点

1. 宣言的設定

インフラストラクチャの理想的な状態を定義し、Terraformが現在の状態と理想状態の差分を自動的に検出・適用します。

2. マルチクラウド対応

同一の設定言語と操作方法で、複数のクラウドプロバイダーやサービスを管理できます。

3. プラン・実行の分離

変更前に実行計画を確認できるため、予期しない変更を防ぐことができます。

4. 状態管理

terraformステートファイルで管理対象リソースの状態を追跡し、チーム開発での一貫性を保ちます。

5. 依存関係の自動解決

リソース間の依存関係を自動的に解析し、適切な順序で作成・削除を行います。

主要コンポーネント

1. 設定ファイル(.tf)

HCLで記述されたインフラストラクチャの定義ファイルです。

2. State(状態ファイル)

管理対象リソースの現在の状態を記録するファイルです。

3. Provider

各クラウドサービスやAPIと通信するためのプラグインです。

4. Module

再利用可能なTerraform設定のまとまりです。

5. Backend

状態ファイルの保存場所と実行環境を管理します。

使用例・実装方法

基本的なEC2インスタンスの作成

# main.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "web_server" {
  ami           = "ami-0c55b159cbfafe1d0"
  instance_type = "t3.micro"
  
  tags = {
    Name = "WebServer"
    Environment = "production"
  }
}

output "instance_ip" {
  value = aws_instance.web_server.public_ip
}

最新動向(2025-2026年)

TerraformはHashiCorpが2023年にBSL(Business Source License)に変更したことで大きな転換点を迎え、コミュニティからOpenTofuというフォークが生まれました。

  • OpenTofu(Terraform OSS代替) - HashiCorpのライセンス変更に対応して誕生したOSSフォーク。Linux Foundation傘下で開発が活発で、2025年にはOpenTofu 1.9が利用可能。多くのCIプロバイダーがOpenTofuのサポートを追加
  • Terraform 1.9/1.10 - テストフレームワークの改善、ephemeralリソース(一時的なシークレット管理)、stateファイルの暗号化機能が追加
  • HCP Terraform(旧Terraform Cloud) - HashiCorp Cloud Platformとの統合が強化。ドリフト検出、プランのコスト予測(Infracost統合)、ポリシー管理(OPA/Sentinel)が充実
  • AI支援IaC - GitHub Copilot、Cursor等のAIコーディングツールがTerraform/OpenTofuコードの生成・レビューに対応し、インフラコードの記述が効率化
  • Pulumi・AWS CDKとの競争 - プログラム言語(TypeScript/Python/Go)でインフラを記述するPulumiやAWS CDKがシェアを拡大。HCL vs プログラミング言語の議論が続く

よくある質問(FAQ)

Q. TerraformとOpenTofuどちらを使うべきですか?

新規プロジェクトなら現状どちらでも使えます。TerraformはHashiCorpの商用サポートとHCP Terraformとの統合が魅力です。OpenTofuはApache 2.0ライセンスで完全OSSであり、コミュニティ主導の開発が進んでいます。企業での商用利用を検討している場合は、ライセンス要件を確認した上でどちらかを選択してください。既存のTerraformコードはほぼそのままOpenTofuでも動作します。

Q. Terraformのstateファイルをチームで共有するには?

チーム開発では、stateファイルをローカルではなくリモートバックエンドに保存することが必須です。一般的な方法は、AWSならS3+DynamoDB(ステートロック用)をバックエンドとして設定することです。HashiCorp Cloud Platform(HCP Terraform)のRemote Stateを使う方法も便利です。ローカルにstateファイルを保持すると、チームの誰かが更新した際に他のメンバーのstateが古くなり、コンフリクトやリソース重複の原因になります。

Q. TerraformとAnsibleの違いは何ですか?

Terraformはインフラのプロビジョニング(VMやネットワーク、クラウドリソースの作成・管理)に特化した宣言型ツールです。Ansibleはサーバーの設定管理(ソフトウェアのインストール、設定ファイルの管理等)に強みを持つ手続き型ツールです。クラウドインフラはTerraformで構築し、その上で動くサーバーの設定管理にAnsibleを使うという組み合わせも一般的です。

外部リンク

関連用語

この用語についてもっと詳しく

Terraformに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。

カテゴリ

クラウド IT用語集