古い手順は、いったん疑う

yamashi-tech.comには、2020年に書いたMac向けTerraform環境構築の記事が残っている。6年経てば、install方法もversionも周辺の常識も変わる。検索で見つかるからといって、そのまま使い続けるのはまずい。

2026年9月7日にHashiCorp公式のInstallページを確認した時点では、macOS向けにHomebrew tap経由の手順が案内され、表示versionは1.16.1だった。version番号は更新されるので、この記事より公式ページを優先してほしい。

Homebrewで入れる

Homebrewが使えるMacなら、HashiCorp公式tapを追加してTerraformをinstallする。Intel MacとApple siliconで別の手順を覚えるより、package managerへ任せるほうが更新もしやすい。

install後はterraform versionで、実際に呼ばれているbinaryとversionを確認する。別のTerraformがPATHの先にいる場合は、ここで気づける。

公式tapからinstallして確認
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform version

作業ディレクトリを初期化する

Terraformの設定を書いたディレクトリでterraform initを実行すると、必要なproviderやmoduleが準備される。続けてterraform fmt -checkとterraform validateを使えば、formatと構成の整合性を分けて確認できる。

validateには先にinitが必要。validateが成功しても、cloud上の権限や実際のresource作成まで保証するわけではない。applyの前にはplanを読み、意図しない変更がないか人が確認する。

初期化と静的な確認
terraform init
terraform fmt -check
terraform validate
terraform plan

lock fileはcommitする

terraform initは.terraform.lock.hclを作る。このファイルには、選ばれたprovider versionとchecksumが記録される。次の実行でも同じproviderを選びやすくするため、Terraform公式はversion controlへ含めることを勧めている。

providerを更新したいときはterraform init -upgradeを使う。ただし、lock fileの差分を見ずに自動更新しない。何が変わったかを確認してからcommitする。

stateと秘密はcommitしない

terraform.tfstate、backup、.terraformディレクトリ、保存したplan、秘密を含むtfvarsはGitへ入れない。stateにはresource情報だけでなく、値によっては秘密が残ることもある。

逆に、.tf、.terraform.lock.hcl、秘密を含まないexample変数はソースとして残す。何でもignoreするのではなく、再現に必要なものと漏らしてはいけないものを分ける。

.gitignoreの最小例
.terraform/
*.tfstate
*.tfstate.*
*.tfplan
*.auto.tfvars

installできた、で終わらせない

環境構築の記事で一番困るのは、コマンドを貼って終わっていること。version確認、init、format、validate、lock file、stateの扱いまで繋がって、ようやく最初の1歩になる。

実際にcloudへresourceを作るところは、providerと認証方法で話が変わる。まずはMacでTerraformが動いて、安全に設定を書き始められればOK。