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
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
Search
hiyanger
August 02, 2025
Programming
4k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
2026/8/2 栃木ゆる勉強会
https://tochigi-study.connpass.com/event/352995/
オフライン / 20名程度
hiyanger
August 02, 2025
More Decks by hiyanger
See All by hiyanger
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
220
(Amazon Bedrock 基礎)生成 AI の活用に導くシステム構築の基本とセキュリティの実装
hiyanger
4
140
CIer に在籍した 3年間 でやったこと
hiyanger
2
390
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
800
クラウド食堂とは?
hiyanger
0
460
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
1.5k
全身全霊で取り組んだ 2024 Qiita アドベントカレンダー
hiyanger
0
130
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
1
510
【AWS】EC2 基本アーキテクチャ(ハンズオン付き)
hiyanger
0
280
Other Decks in Programming
See All in Programming
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.8k
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
190
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
150
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
1.7k
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.7k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
200
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
210
Webフレームワークの ベンチマークについて
yusukebe
0
200
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
360
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
250
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
170
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Rails Girls Zürich Keynote
gr2m
96
14k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
Automating Front-end Workflow
addyosmani
1370
210k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
We Have a Design System, Now What?
morganepeng
55
8.2k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
650
The agentic SEO stack - context over prompts
schlessera
0
840
Embracing the Ebb and Flow
colly
88
5.1k
Transcript
Terraform 使うなら 公式スタイルガイドを読もう 〜重要項目 10選〜
自己紹介 名前 / 檜山 準(ひやんが) 職種 / AWS エンジニア (CIer
所属) 出身 / 栃木県 趣味 / ギター 🎸 @hiyanger
もくじ ※ Terraform とは ※ スタイルガイドとは 1. フォーマットしよう 2. ファイル名
3. Linter を使う 4. リソースの命名 5. リソース記述順 6. .gitignore への追加 7. バージョンの固定 8. モジュールの作り方 9. ディレクトリ構成 10. state の取り扱い
Terraformと スタイルガイド
Terraformとは シンプルな コード化が できる!!
スタイルガイドとは Terraformの利用における ベストプラクティスが書かれた資料! v1.12 のお話しです! ※スタイルガイド外の補足マーク→
スタイルガイド 10選!
1. フォーマットする gitへ push する前に terraform fmt (-recursive)
2. ファイル名 backend.tf main.tf outputs.tf provider.tf variables.tf network.tf storage.tf compute.tf
network.tf security _group.tf alb.tf route53.tf 左のファイルを基本に行数が増えてきたら分割を検討。 100~200行くらいが目安。 接続はスネークケース
3. Linterを使う tflint を導入して tflint
4. リソースの命名 NG resource aws_instance webAPI- aws-instance {...} OK resource
"aws_instance" "web_api" {...} 🙅 リソースタイプは含めない
5. リソース記述順 読みやすさ(依存関係)だけを考慮して並べる! (ビルド方法には影響しない)
6. .gitignore への追加 .terraform 配下 .tfstate 関連 .terraform.tfstate.lock.info .tfvars .terraform.lock.hcl
は プロバイダ固定のため除外しない!
7. バージョンの固定 provider と terraform は固定させておく! (チームで共有)
8. モジュールの作り方 リソースのグループ化を意識する! (大きすぎず、小さすぎず)
9 .(みんな大好き)ディレクトリ構成 main.tf → ファイル分割 → modulesの利用 → 環境分岐(prd/dev)→ state
分 割 スタイルガイドの言及部分 この仕組みだけ頭にいれておけばOK!
10. ステートファイルの取り扱い ‼ ステートファイルはシークレット情報を含むため共有しない 通常シークレット情報を使ってリソースをデプロイすると、 ステートに記録されてしまうが、v1.10で追加された write-only attributes(wo) を使うと回避できる! プロバイダ依存なとこだけ注意
まとめ
まとめ 1. フォーマットしよう → terraform fmt(-recursive) 2. ファイル名 → main
からすこずつ粒度を小さくする 3. Linter を使う → tflint 4. リソースの命名 → リソースタイプいれない & スネークケース 5. リソース記述順 → 依存順に上から 6. .gitignore への追加 → state 関連 7. バージョンの固定 → provider と terraform 8. モジュールの作り方 → リソースのグループ化を意識する 9. ディレクトリ構成 → 基本はmoduleで必要なら環境分岐 10. state の取り扱い → 共有しない(woで回避できる)
参考 ・モジュール 推奨パターン https://developer.hashicorp.com/terraform/tutorials/modules/pattern-module-creatio n ・モジュール 標準構造 https://developer.hashicorp.com/terraform/language/modules/develop/structure ・stateにシークレットを表示させない(Terraform
v1.11) https://zenn.dev/terraform_jp/articles/tf-write-only-attributes