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
14
3.7k
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
2026/8/2 栃木ゆる勉強会
https://tochigi-study.connpass.com/event/352995/
オフライン / 20名程度
hiyanger
August 02, 2025
Tweet
Share
More Decks by hiyanger
See All by hiyanger
(Amazon Bedrock 基礎)生成 AI の活用に導くシステム構築の基本とセキュリティの実装
hiyanger
4
110
CIer に在籍した 3年間 でやったこと
hiyanger
2
260
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
740
クラウド食堂とは?
hiyanger
0
370
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
1.3k
全身全霊で取り組んだ 2024 Qiita アドベントカレンダー
hiyanger
0
94
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
1
390
【AWS】EC2 基本アーキテクチャ(ハンズオン付き)
hiyanger
0
200
もういっそ AWS できなくても AWS できるようになるシステム作った
hiyanger
3
350
Other Decks in Programming
See All in Programming
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
940
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.3k
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
180
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
3
1k
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
490
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
4
760
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
250
チームをチームにするEM
hitode909
0
450
Deno Tunnel を使ってみた話
kamekyame
0
320
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
310
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.1k
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
Building AI with AI
inesmontani
PRO
1
620
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
55
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
75
Code Reviewing Like a Champion
maltzj
527
40k
So, you think you're a good person
axbom
PRO
1
1.9k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
150
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
250
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
36
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