0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

最初の数週間で覚えておきたいTerraform初心者向けTips10選

0
Last updated at Posted at 2026-08-04

はじめに

Terraformを触り始めたばかりの頃は、terraform apply を実行して結果を見るだけで精一杯になりがちです。この記事では、難しい関数や複雑な機能ではなく、最初の数週間で知っておくと素直に「知ってよかった」と思えるTipsを10個集めました。

image01.png


Tips1 .gitignore に .terraform/ と *.tfstate* を入れる

terraform init を実行すると .terraform/ フォルダ(プロバイダの実行ファイルなど)が、terraform apply を実行すると terraform.tfstate(現在の管理状態)が生成されます。Google Cloudの場合、terraform.tfstate にはCloud SQLの初期パスワードやサービスアカウントキーの値がそのまま残ることがあるため、どちらも最初にGitへコミットしないよう設定しておきます。

# .gitignore
.terraform/
*.tfstate
*.tfstate.backup

後から気づいてGit履歴を消すのは手間がかかるので、リポジトリを作った直後にやっておくのがおすすめです。


Tips2 terraform.tfvars は書くだけで自動的に読み込まれる

変数の値を渡すとき、-var-file オプションを指定しなくても、ファイル名を terraform.tfvars にしておくだけで terraform plan / apply が自動的に読み込んでくれます。

project/
├── main.tf
├── variables.tf
└── terraform.tfvars   # 自動で読み込まれる
# terraform.tfvars
project_id = "my-project-id"
region     = "asia-northeast1"

毎回長いコマンドを打たなくて済みます。


Tips3 terraform fmt でインデントを自動整形する

スペースの数や揃え方を手で直す必要はありません。terraform fmt を実行すると、公式の標準スタイルに自動で整形してくれます。

$ terraform fmt

サブディレクトリに分けている場合は -recursive を付けると配下すべてがまとめて整形されます。

$ terraform fmt -recursive

Tips4 terraform validate でapply前に構文だけ素早く確認する

terraform plan はGoogle CloudのAPIに問い合わせるため、多少時間がかかります。単純な書き間違い(閉じ括弧の数が合わない、型が違うなど)を確認したいだけなら、terraform validate の方が速く終わります。

$ terraform validate
Success! The configuration is valid.

保存するたびに軽く実行しておくと、細かいミスにその場で気づけます。


Tips5 terraform plan の記号の意味を覚える

terraform plan の出力には、行の先頭に記号が付きます。この意味を知っておくだけで、差分の見方が一気に楽になります。

記号 意味
+ 新規作成
- 削除
~ そのままの場所で変更
-/+ 削除してから作り直す(一度リソースが消える)

特に -/+ は、意図せず一度リソースが消えてしまうことがあるため、apply の前に必ず注目します。Google Cloudでは、たとえば google_compute_instance の zone を書き換えると、この -/+ になります。ゾーンは作成後に変更できない属性のため、Terraformは一度インスタンスを削除してから新しいゾーンで作り直します。

image02.png


Tips6 required_providers でバージョンを固定する

バージョンを指定しないままにしておくと、数ヶ月後に「昨日まで動いていたのに急に動かなくなった」ということが起こり得ます。使っているproviderのバージョンを最初から固定しておくと安心です。

terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 6.0"
    }
  }
}

~> 6.0 は「6.x系の中で最新」を意味し、メジャーバージョンが変わる大きな変更だけを避けられます。


Tips7 variable に description を書いておく

変数に説明を書かなくてもTerraformは動きますが、description を書いておくと、他の人(あるいは数ヶ月後の自分)がコードを読んだときに、その変数が何のためのものかすぐ分かります。

variable "region" {
  type        = string
  description = "リソースを作成するリージョン(例: asia-northeast1)"
}

terraform plan で変数の入力を求められたときにも、このdescriptionが表示されます。


Tips8 -var でファイルを編集せずに値を一時的に上書きする

いつもと違う値で1回だけ試したいとき、.tf ファイルや .tfvars を書き換える必要はありません。-var オプションでその場限りの値を渡せます。

$ terraform plan -var="region=asia-northeast2"

ファイルの値は変更されないため、試した後に戻し忘れる心配もありません。

image03.png


Tips9 terraform console で式の結果を試しに確認する

複雑な文字列の組み立てや条件式を書く前に、実際にどんな値になるのか確認したい場合があります。terraform console を使うと、apply せずに対話的に式を試せます。

$ terraform console
> "${var.project_id}-bucket"
"my-project-id-bucket"
> upper("tokyo")
"TOKYO"
> exit

書いてから間違いに気づくより、先に手元で試した方が早いです。


Tips10 terraform show で今の管理状態を読みやすく確認する

terraform.tfstate ファイルを直接開いて読むのは大変です。terraform show を使うと、現在Terraformが管理しているリソースの内容を人間が読める形式で表示してくれます。

$ terraform show

「このリソース、今どんな設定値になっているんだっけ」を確認したいときに、ファイルを直接見るよりずっと読みやすいです。.tf に書いた覚えのない self_link や id のような、Google Cloud側で自動採番された値を確認したいときにも使えます。


まとめ

Tips 効果
.gitignore に .terraform/ *.tfstate* を追加 大きいファイル・機密情報の誤コミットを防ぐ
terraform.tfvars 変数ファイルを自動読み込み
terraform fmt / -recursive コードを自動整形
terraform validate applyより速く構文だけ確認
plan の記号(+ - ~ -/+) 差分を素早く正しく読む
required_providers バージョン固定で不意の破壊を防ぐ
variable の description 変数の意図を残す
-var ファイルを変えずに一時的に値を上書き
terraform console applyせず式の結果を試す
terraform show 現在の状態を読みやすく確認

どれも構成を大きく変えずに、明日からそのまま使えるものばかりです。


参考ドキュメント

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?