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
Illust_Terraform
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yona
March 17, 2025
2.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Illust_Terraform
Yona
March 17, 2025
More Decks by Yona
See All by Yona
Kiroを使ってドキュメント管理を少し楽にしてみた
yonasou
0
1k
Grafana_Claude_Code
yonasou
1
1k
project_offline_communication
yonasou
0
32
Easy choice of IaC
yonasou
1
420
re:growth 2024
yonasou
0
640
Using figma is a good thing
yonasou
1
870
IoT_Greengrass_Begginer
yonasou
0
400
Grafana_IoT_Data_DataLake
yonasou
0
1.2k
terraform_module_ Beginner
yonasou
11
190k
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
840
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Chasing Engaging Ingredients in Design
codingconduct
0
220
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
390
Transcript
イラストで理解するTerraform
自己紹介 【名前】 与那嶺 創(よなみね そう) 【所属】 クラスメソッド株式会社 ソリューションアーキテクト 【ひとこと】 ガバメントクラウド初心者です
ピザのアイコンでブログ書いてます!
01 02 03 04 Terraformとは? Terraformは何が嬉しいの? Terraformはどうはじめればいいの? まとめ アジェンダ
Terraformって聞いたことあるけど何がいいんだろう? やってみたいけど、何から始めたらいいんだろう? 対象の読者
Terraformとは? IaC CDK Terraform CloudFomation
平たく言うと コード インフラをコードで管理できるツール インフラストラクチャ
え?それの何が嬉しいの?
こんな経験ありませんか? 構築の手順書を作らないといけないけど 画面のキャプチャをとるのが大変 手順書通りにやってたつもりだけど いつの間にかミスしてた 画面で操作すると構築に時間がかかる 今と同じ環境をもう一つ 作りたいけど面倒
コード インフラストラクチャ コードでインフラを管理すると何が嬉しいのか?
コード インフラストラクチャ コードでインフラを管理すると何が嬉しいのか? t i 同じコードであれば同じリソースが生成されg i 誰がやっても同じリソースが生成されg i コードが存在すればすぐに構築できg
i gitで管理すればコードの差分から変更履歴が追える
構築の手順書を作らないといけないけど 画面のキャプチャをとるのが大変 手順書通りにやってたつもりだけど いつの間にかミスしてた 画面で操作すると構築に時間がかかる テスト環境用に同じ環境を 作りたいけど面倒
よし!全部Terraformで管理するぞ〜!!
全然うまくいかない
この機能何に使うの? このファイル何に使うの? ディレクトリ構成が複雑 ファイルの依存関係が 分からない なぜうまくいかない?
ミニマムにスタートして 1つずつ成功体験を積み重ねましょう! SandBox環境など、学習用の環境があると尚良し
でも、何から始めたらいいんだ...
面 倒 な こ と を 発 見 面 倒
な こ と を 発 見 改 善 改 善 最 小 限 の 実 装 まずはここから
main.tfのみ project main.tf
terraform { required_providers { aws = { source = "hashicorp/aws"
version = "~> 5.0" } } } provider "aws" { region = "ap-northeast-1" } resource "aws_vpc" "example" { cidr_block = "10.0.0.0/16" } project main.tf main.tf terraform AWS Provider の設定 AWSリソースを定義 ここに追加していく
project main.tf main.tf resource "aws_vpc" "example" { cidr_block = "10.0.0.0/16"
... } resource "aws_internet_gateway" "example" { .. } resource "aws_s3_bucket" "example" { ... } resource "aws_instance" "example" { ... } resource "aws_cloudwatch_log_group" "example" { ... } リソースが増えてくると... CloudWatch S3 VPC EC2 Internet Gateway
どこに何が書いてあるんだ? 巻物化 巻物化
面 倒 な こ と を 発 見 面 倒
な こ と を 発 見 改 善 改 善 最 小 限 の 実 装 今ココ!
ファイルの分離 project network.tf storage.tf compute.tf project main.tf 目的やリソースごとにファイルを分離 ...
project network.tf storage.tf compute.tf ... CloudWatch EC2 VPC S3 Internet
Gateway 管理しやすくなったぜ!
面 倒 な こ と を 発 見 面 倒
な こ と を 発 見 改 善 改 善 最 小 限 の 実 装 今ココ!
project network.tf storage.tf ... 順調順調!!
project network.tf storage.tf ... リソース名のprefix ,タグなど 同じ値を設定するの面倒だな..
面 倒 な こ と を 発 見 面 倒
な こ と を 発 見 改 善 改 善 最 小 限 の 実 装 またココ!
変数の分離 project network.tf s3.tf ... variables.tf 変数を管理するファイル
project network.tf s3.tf ... variables.tf variable “ " { description
= "Tag name" type = string default = "demo" tag_name resource "aws_vpc" "example" { ... tags = {Name = "${ }-vpc”} } tag_name variables.tf network.tf 変数を取得
面 倒 な こ と を 発 見 面 倒
な こ と を 発 見 改 善 改 善 最 小 限 の 実 装 今ココ!
これって何か解決方法ないのかな?と思ったら、調べてみましょう! HashiCorpのスタイルガイドが参考になります!! リンク: https://developer.hashicorp.com/terraform/language/style
それはそう。 でも、Terraformのファイルを効率的に管理するには その機能が何のために存在して、 どんな依存関係があるか理解しないと トラブルが起きたら困るのは君だよ? じゃあ、最初から全部盛り混んでおけば いいんじゃないの?
面 倒 な こ と を 発 見 面 倒
な こ と を 発 見 面 倒 な こ と を 発 見 改 善 改 善 改 善 サイクルをぐるぐる回しましょう!!
R stateファイルはどこで管理したらいいんだろう..2 R シークレットはどこで管理すればいいんだろう..2 R 複数環境にデプロイするにはどうすればいいんだろう..2 R 複数人で開発するにはどうすればいいんだろう..2 R マルチアカウントの場合にはどうすればいいんだろう...
壁にあたる度にTerraformの便利な機能を発見すると思います!
Terraformはリソースをコードで管理でき 最初から全てはうまくいかな スモールスタートで成功体験を詰む まとめ
e Terraformが全てを解決してくれるとは思っていなb e 常にTerraformが最適なIaCツールだとも思っていなb e 手動で作成/管理する方が向いているケースもあE e 道具なので、使うことを目的とするとモチベーション が持続しないかも 最後に個人的な意見を