1. 概要
override.tfとは何か- 使い方とファイル名のルール
- ユースケース(テスト環境のバックエンド上書き・ローカル開発)
- 注意点とアンチパターン
override.tf(または*_override.tfという名前のファイル)は、既存のTerraform設定を上書きするための特別なファイルです。チームの共通設定を変更せずに、個人の開発環境やテスト環境だけの設定を追加できます。
2. 仕組みと優先順位
通常のTerraformはすべての.tfファイルをマージして1つの設定として処理します。override.tfは同じリソース/変数/output/backendブロックを定義すると、通常のファイルの設定を上書きします。
project/
├── main.tf # 通常の設定
├── backend.tf # チームのS3バックエンド設定
└── override.tf # ローカル開発用の上書き設定(.gitignoreに追加)
3. ファイル名のルール
override.tf— 任意のディレクトリに1つ*_override.tf—backend_override.tf、local_override.tfのような名前- これらのファイルは通常の
.tfファイルと同じディレクトリに置く
4. 実際のユースケース: ローカル開発でS3バックエンドを上書き
# backend.tf(チームの共通設定)
terraform {
required_version = ">= 1.9"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
backend "s3" {
bucket = "my-company-tfstate"
key = "prd/terraform.tfstate"
region = "ap-northeast-1"
}
}
provider "aws" {
region = "ap-northeast-1"
}
variable "environment" {
description = "環境名"
type = string
default = "prd"
}
# override.tf(ローカル開発用 — .gitignoreに追加)
# S3バックエンドをローカルのtfstateに上書き
terraform {
backend "local" {
path = "./local.tfstate"
}
}
# prd環境の変数をdev用に上書き
variable "environment" {
default = "dev"
}
5. テスト環境でのバックエンド上書き
# backend_override.tf(テスト用)
terraform {
backend "s3" {
bucket = "my-company-tfstate-test" # テスト用バケット
key = "test/terraform.tfstate"
region = "ap-northeast-1"
}
}
6. .gitignoreとの組み合わせ
個人のローカル設定は.gitignoreに追加してGitにコミットしないようにします。
# .gitignore
override.tf
*_override.tf
local.tfstate
local.tfstate.backup
.terraform/
.terraform.lock.hcl
ただし、チーム全員で使うoverride.tfはGitにコミットします(例: テスト用のバックエンド設定)。
7. 注意点とアンチパターン
注意点1: override.tfを使いすぎると設定の追跡が困難になる
本来の設定とoverride.tfの設定が離れているため、「どこが上書きされているか」を把握しにくくなります。
注意点2: 部分的な上書きになる(完全置換ではない)
objectやblock内の一部の属性だけを上書きできます。未指定の属性は元の設定が使われます。
アンチパターン:
# ❌ 本来の設定を複雑にするためのoverride.tfは使わない
# チームのコードレビューで見落とされやすい
# ✅ 環境差異はvariableやworkspaceで管理する(推奨)
variable "environment" {
type = string
}
8. 関連記事
- backend — stateファイルの保存場所 — S3バックエンドの設定
- 環境分離のパターン比較 — ディレクトリ分離の推奨パターン
- terraform workspace の使い方 — workspaceによる環境分離
- HCLスタイルガイド — チームで統一するための規則
- JSON構文(HCL代替)— .tf.jsonで書くTerraform
- variable(入力変数)— 定義・型・バリデーション
9. まとめ
override.tf(または*_override.tf)は既存の設定を上書きする特別なファイル- ローカル開発でS3バックエンドをlocal backendに切り替える・変数のデフォルト値を変える用途に使う
- 個人のローカル設定は
.gitignoreに追加してチームに影響を与えない - 乱用すると設定の追跡が困難になるため、variableやworkspaceで代替できないか先に検討する
動作確認バージョン: Terraform >= 1.9 公式ドキュメント: https://developer.hashicorp.com/terraform/language/files/override