TerraformとIaCの基本

Terraform(テラフォーム)はHashiCorpが開発したInfrastructure as Code(IaC)ツールです。AWS・GCP・Azureなどのクラウドリソースをコードで宣言的に定義し、自動でプロビジョニング・変更・削除できます。

TerraformとCloudFormationの比較

項目 Terraform AWS CloudFormation
マルチクラウド ○(主要クラウド全対応) ×(AWSのみ)
言語 HCL(直感的) JSON/YAML
ステート管理 tfstateファイル AWSが管理
コミュニティ 大(Terraformレジストリ) AWSコミュニティ

Terraformの基本コード例(AWS EC2)

provider "aws" {
  region = "ap-northeast-1"
}

resource "aws_instance" "web" {
  ami           = "ami-0123456789"
  instance_type = "t3.micro"

  tags = {
    Name = "WebServer"
  }
}

基本コマンド

terraform init    # プロバイダをダウンロード
terraform plan    # 変更内容を事前確認(ドライラン)
terraform apply   # インフラを実際に作成・変更
terraform destroy # リソースを削除

ベストプラクティス

  • tfstateをリモート管理:S3+DynamoDB(AWSの場合)でチーム共有
  • モジュールで再利用:VPC・セキュリティグループ等を共通化
  • variables.tfで変数管理:環境(dev/staging/prod)の切り替えを容易に
  • terraform planをCIで実行:Pull Request時に変更差分を自動確認

IaCで「インフラの差分がコードレビューで見える」環境を作ることで、クラウドコストの暴走や設定ミスを大幅に削減できます。