新入社員のユウタは、Terraformを使ってAWSのインフラを自動で構築する仕事を任されていた。
ユウタ:「課長、Terraformを使ってサーバーを立てたんですけど、設定を変更して再適用したら、思ってたのと違うリソースが消えたり作られたりしてしまって…」
課長:「それ、Terraform State(テラフォームステート)の扱いが原因かもしれないな。」
ユウタ:「State…って何ですか?」
課長:「Terraformが管理しているインフラの“今の状態”を記録しておくファイルのことさ。このファイルがあるから、Terraformは“どこを変更すればいいか”を判断できるんだ。」
ユウタ:「stateって、“状態”とか“状況”、“身分”を表す単語でしたよね。ステータス(status)も似た意味の言葉ですし。」
課長:「そうそう、いいところに気がついたね。TerraformのStateは、構築したインフラの“状態”を記録するもの。たとえば、“どのリージョンに何個サーバーがあるか”や、“それがどの設定で作られているか”っていう情報が詰まってるんだ。」
ユウタ:「つまりTerraformは、そのStateファイルを見て“今の状態”を把握して、設定ファイルとの差分をもとに“何をすべきか”を判断するんですね。」
課長:「そのとおり!それがあるからTerraformは、無駄なリソースを作ったり壊したりせず、必要な変更だけを加えてくれるんだ。」
ユウタ:「逆に、Stateがズレてたり、なくなったりすると、Terraformは“今どうなってるか”を見失っちゃう…?」
課長:「そうなると、設定ファイルどおりに“ゼロから作り直し”しちゃうこともあるから危険なんだよ。Stateは“記憶”や“台帳”みたいな役割だから、ちゃんと守る必要があるんだ。」
ユウタ:「なるほど……Terraformって“何をするか”だけじゃなくて、“今どうなってるか”まで把握してるんですね。まさにインフラの記憶装置!」
課長:「うん。だからStateファイルは単なるオマケじゃなく、Terraformの“心臓部”みたいなものなんだよ。複数人で運用する場合は、リモートバックエンド(例:S3 + DynamoDB)を使って、Stateを安全に保つことも大切だよ。」
ユウタ:「なるほど、Terraformの力を本当に活かすには、Stateの仕組みもきちんと理解する必要があるんですね。」
課長:「そうだね。Terraformについては色々な本が出ているから一度読んでみるといいよ。」
用語 | 概要 | 役割 |
---|---|---|
Terraform | インフラ構築の自動化ツール | 設定ファイルから環境を構築 |
Terraform State | 現在のインフラ状態を記録するファイル | 状態の差分から変更内容を判断 |
Stateがない場合 | 現状を認識できず、再構築のリスク | 状態が不明になり誤動作の恐れ |
大手クラウドインテグレーターであるサイバーエージェントでは、複数チームでAWSのインフラをTerraformで構築・管理しています。その際、Terraform StateをS3とDynamoDBで管理することで、複数人による競合やStateファイルの破損を防いでいます。
また、ある自治体では、災害時の情報発信サイトをクラウドで構築しており、そのインフラはTerraformで管理されています。StateファイルはGitHub Actionsと連携して、インフラの状態とコードの整合性を常に保つように設定されています。
こうした運用によって、インフラの変更履歴を追跡できるだけでなく、自動化による作業の効率化と安定運用が実現しています。
Terraform Stateの主な役割はどれ?
A:AWSアカウントを管理する
B:Terraformの実行履歴を保存する
C:Terraformが管理するインフラの状態を記録する
Terraform Stateファイルの正しい管理方法として最適なのはどれ?
A:ローカルPCのデスクトップに保存する
B:クラウドの共有ストレージでバージョン管理する
C:USBメモリにコピーして持ち歩く
Terraform Stateがなかった場合、Terraformはどうなる?
A:現在のインフラの状態を認識できない
B:自動で最新の状態をGoogleから取得する
C:状態がなくても完璧に動く
→ Terraform Stateは、インフラの現在の状態を記録するファイルです。
→ 複数人で使う場合は、S3などのリモートストレージで管理するのがベストです。
→ StateがないとTerraformは変更箇所を特定できず、誤った操作をするリスクがあります。