Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
tfstate を失った話 ― そういえば、tfstate どこだっけ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
田邊正燿
September 04, 2026
7
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
tfstate を失った話 ― そういえば、tfstate どこだっけ
エンジニア人生における最大の失敗LT
田邊正燿
September 04, 2026
More Decks by 田邊正燿
See All by 田邊正燿
生成AI活用にブレーキをかけない シャドーAI時代のブラウザセキュリティ
masaterutanabe
0
55
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Technical Leadership for Architectural Decision Making
baasie
3
550
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
270
Paper Plane
katiecoart
PRO
2
53k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
For a Future-Friendly Web
brad_frost
183
10k
Evolving SEO for Evolving Search Engines
ryanjones
0
280
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Transcript
エンジニア人生における最大の失敗 tfstate を失った話 ― そういえば、 tfstate どこだっけ 田邊 正燿 KDDIアイレット株式会社
アジェンダ 01 何が起きたか 02 なぜ作り直したか 03 何を変えたか
Profile たなべ まさてる 田邊 正燿 KDDIアイレット株式会社 セキュリティ事業部クラウド・イノベーション本部 Security Platform Engineeringセクション
Forward Deployed Engineerグループ 経歴 2024年7月アイレット入社、今年4月からセキュリティ事業部に移動 クラウドセキュリティのプリセールス・導入支援を担当 温泉旅行が好き teru_engineer
結論から ― tfstate を失って、復旧せずに、全部手動で消して作り直しました。 確認する側にいたのは私でした。 state をどこに置くか。 その観点が、私のチェックに入っていませんでした。 4
tfstate は、インフラの台帳 コード (.tf) あるべき姿を書く tfstate aws_instance.web = i-0a1b2c3d AWS
リソース 実際に動いているもの この対応表が無いと、 Terraform は実物を認識できない。 台帳が消えても、実物は動き続ける。 5
始まりは SaaS導入のための terraform apply Terraform 公式モジュール tfstate 4種 CloudFormation StackSet
7つ AWSアカウント 300 各アカウントに IAMロールと KMSキー、リージョンごとに EventBridge ルール 14〜15リージョンに展開。スタックインスタンスは大量 6
聞いたときには、もう消えていた Q.そういえば、 tfstate どこだっけ ? A.「CloudShell で terraform apply しました」
CloudShell で apply 誰も見られない $HOME 120日経過で 自動削除 $HOME は private to you。通知も記録も残らない。 誰も、消えたことに気づいていなかった。 出典: AWS 公式 https://docs.aws.amazon.com/cloudshell/latest/userguide/limits.html 7
壊れてないのに、直せない リソースを作り直そうとして、plan を打った。 terraform plan Plan: 3 to add, 0
to change, 0 to destroy. リソースを削除しようとして、destroy を打った。 terraform destroy Destroy complete! Resources: 0 destroyed. 「成功」と出るのに、実物は 1つも消えていない。 ※ 当時の画面ではなく、手元の検証環境で再現した出力 8
消す対象は、 Terraform の外側にあった 300 アカウントに配られていた 14リージョン state から見えるのは数十リソース。実体は StackSet 7つの配下。
9
問いは「どう主導権を取り戻すか」だった A B C import で state を復旧 ツールで 一括生成
全消しして 作り直す 選んだのは C。理由を1枚で説明します。 10
3案を、同じ物差しで並べた A import で state 復旧 工数 大 確実性 低
B ツールで一括生成 工数 中 確実性 低 C 全消しして作り直す 工数 小 確実性 高 見たのは「復旧できるか」ではなく「復旧に見合うか」。 11
なぜ import を採らなかったのか import は、これから捨てるものを、 台帳に載せ直す作業だった。 import 作り直し state を1つずつ復元
terraform apply 一発 基準は「復旧できるか」ではなく「復旧に見合うか」だった。 12
手動で消して回ったのは、 7つの StackSet だった Step1.消す Step2.戻す StackSet からスタックインスタンスを削除 更新した tf
ファイルで terraform apply スタックインスタンスは大量。でも操作の単位は StackSet だった。 13
違いは、証跡があったかどうかだけだった tfstate CloudFormation 個人環境にあり、消えた AWS が状態を保持していた 0 destroyed StackSet 単位で撤去
同じインフラなのに、証跡がある層だけが助けてくれた。 (まとめて消せる単位が無かったら、300アカウントを1つずつ…ゾッとする😱) 14
やることは、証跡が残る場所に移すだけだった コードを Git 管理へ 必要なチームメンバーが見られる場所に置く state を個人環境から出す ローカルや CloudShell に置かない
S3 バックエンドに置く バージョニングとロックを有効にする ただし本当は、作る前に決めておくべきでした。 15
まとめ 120日間、誰も気づきませんでした。 個人の環境に置いた tfstate は、消えても誰も気づけない。 証跡が残る場所に置いて初めて、管理していると言える。 あなたの tfstate は、どこにありますか。 16
ご清聴ありがとうございました