「インフラをコードで管理したい」と思い立ったとき、最初の選択肢に上がるのがTerraformです。AWS CDKやCloudFormationもありますが、マルチクラウド対応でシンプルな宣言型構文のTerraformは、学習コストと実用性のバランスに優れています。この記事では、Terraform初心者が最初に押さえるべきポイントを5つに絞って解説します。
1. tfstateファイルの管理が最重要
Terraformで最も重要な概念が terraform.tfstate です。このファイルには、Terraformが管理しているリソースの現在の状態が記録されています。このファイルを失うと、Terraformはどのリソースを管理しているか分からなくなり、大惨事になります。
# S3バックエンドの設定(必須!)
terraform {
backend "s3" {
bucket = "my-terraform-state-bucket"
key = "production/terraform.tfstate"
region = "ap-northeast-1"
dynamodb_table = "terraform-lock"
encrypt = true
}
}
ローカルにtfstateを置くのは個人の検証環境だけにしましょう。チームで運用する場合はS3 + DynamoDB(ロック機構)が鉄板です。
2. ディレクトリ構成を最初に決める
terraform/
├── environments/
│ ├── production/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ ├── outputs.tf
│ │ └── terraform.tfvars
│ └── staging/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ └── terraform.tfvars
└── modules/
├── vpc/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
├── ecs/
└── rds/
環境(production / staging)ごとにディレクトリを分け、共通のリソース定義はmodulesにまとめます。こうすることで、同じ構成を環境ごとに変数だけ変えて展開できます。
3. variablesとlocalsの使い分け
variable は外部からの入力、locals は内部での計算値に使います。この区別を意識するだけで、コードの可読性が大幅に向上します。
# variables.tf — 外部から注入する値
variable "environment" {
type = string
description = "環境名(production, staging, development)"
}
variable "app_name" {
type = string
default = "myapp"
}
# main.tf — 内部で計算する値
locals {
name_prefix = "${var.app_name}-${var.environment}"
common_tags = {
Project = var.app_name
Environment = var.environment
ManagedBy = "terraform"
}
}
4. plan → apply の習慣を徹底する
terraform apply を直接実行するのではなく、必ず terraform plan で差分を確認する習慣をつけましょう。CI/CDパイプラインでも、PRのタイミングで plan を実行し、レビューしてからマージ後に apply するフローが安全です。
# 差分確認
terraform plan -out=plan.tfplan
# 確認済みのplanを適用
terraform apply plan.tfplan
5. データソースを活用する
既存リソースの情報を参照するには data ソースを使います。手動で作成したリソースや別のTerraform管理下のリソースと連携する際に重宝します。
# 既存のVPCを参照
data "aws_vpc" "existing" {
filter {
name = "tag:Name"
values = ["production-vpc"]
}
}
# 最新のAmazon Linux 2023 AMIを取得
data "aws_ami" "al2023" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["al2023-ami-*-x86_64"]
}
}
まとめ
Terraformは奥が深いツールですが、この5つのポイントを押さえておけば、実務で困ることはかなり減ります。最初は小さなリソース(S3バケットやIAMロールなど)から始めて、徐々にVPCやECSのような複雑なリソースに挑戦していくのがおすすめです。

コメント