Terraformの始め方 — クラウド契約なしでplan・applyを試す
設定を書き、変更案を読み、反映する
- クラウドなしでinit・plan・applyを試す
- HCLのresourceとoutputを読む
- 変更案と表示結果を確認する
- stateと秘密情報の扱いを説明する
最初のゴール:あいさつが出て、変更案を読める
クラウドのアカウントや認証キーは不要です。Terraform 1.4以降の組み込みリソース terraform_data を使い、外部サービスへの作成やprovisionerの実行を含めない演習にします。
1. Terraformを用意する
公式インストール案内からOSとCPUに合う配布物を入手します。WindowsではZIPを展開し、terraform.exe があるフォルダをPATHへ追加するか、その実行ファイルのパスで呼び出します。macOSのHomebrewなら次の公式tapが使えます。
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform version
Linuxは公式のディストリビューション別手順を使います。いずれも terraform version で版を確認。新しい練習用フォルダを作り、その中で以下を進めます。
2. main.tfを保存する
terraform {
required_version = ">= 1.4.0"
}
resource "terraform_data" "greeting" {
input = "ひよこ"
}
output "greeting" {
value = "こんにちは、${terraform_data.greeting.output}!"
}
resource は管理する対象、input は今回の値、output は取り出す結果です。terraform_data は組み込みプロバイダーを使うので、外部プロバイダーの設定・ダウンロードは必要ありません。
3. 変更案を確認して反映する
terraform init
terraform fmt
terraform validate
terraform plan
terraform apply
terraform output
plan に 1 to add が出ることを確認します。apply の変更案にも目を通して yes を入力すると、結果に greeting = "こんにちは、ひよこ!" が出ます。output でも確認できます。
次に input = "ペンギン" に変え、plan を再実行。通常は同じ対象をその場で更新する ~ と差分が出ます。反映したければ apply し、あいさつの変化を確かめましょう。plan の + は追加、- は削除、~ は更新、-/+ は作り直しです。クラウドでは作り直しがデータや停止時間に影響することもあります。
stateは「対応を記録する台帳」
ローカル演習では terraform.tfstate が生成されます。設定ファイルそのものとは別です。値やリソース情報を保持するので、手作業で書き換えず、Gitに含めません。保存したplanファイルにも機密値が入ることがあります。
練習フォルダに置く .gitignore の例です。
.terraform/
*.tfstate
*.tfstate.*
*.tfplan
保存planに別の名前を使う場合も除外します。外部プロバイダーを使うプロジェクトでは、選んだ版などを記録する .terraform.lock.hcl は通常コミットします。sensitiveは暗号化やstateへの保存禁止ではありません。
チームではリモートバックエンドの暗号化・アクセス制御・同時実行のロックを設計します。S3バックエンドには use_lockfile によるロックがあり、DynamoDB方式は公式で非推奨です。リモートへ置くだけで安全になるわけではありません。
終了と、つまずいたとき
今回の練習フォルダで terraform destroy を実行し、対象を確認して yes を入力すると、管理した値のリソースが削除されます。これは「誤ったapplyを何でも取り消す」命令ではありません。本番で慌ててdestroyや -target を使わず、まず差分・影響範囲・復旧方法を確認します。
- コマンドが見つからない:PATHと実行ファイルの場所を確認し、ターミナルを開き直す。
- 対象が表示されない:main.tfを保存したフォルダで実行しているか確認する。
- 構文エラー:validateの行番号を読む。全角の引用符を使っていないかも確認する。
次はHCLの用語解説で構文を整理し、AWS入門でクラウドの権限と料金を学んでから、外部サービスの作成へ進めます。
参考資料
2026年10月9日確認。
- HashiCorp — Install Terraform — 公式配布とOS別導入
- HashiCorp — terraform_data — 組み込みリソースとinput/output
- HashiCorp — terraform plan — 変更案と表示記号
- HashiCorp — Sensitive data — state・planとsensitiveの条件
- HashiCorp — S3 backend — use_lockfileとDynamoDB方式の非推奨
- HashiCorp — terraform_data 1.4 — 1.4でのinput/output