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
Yona
March 17, 2025
0
2.2k
Illust_Terraform
Yona
March 17, 2025
Tweet
Share
More Decks by Yona
See All by Yona
Easy choice of IaC
yonasou
1
290
re:growth 2024
yonasou
0
440
Using figma is a good thing
yonasou
1
620
IoT_Greengrass_Begginer
yonasou
0
280
Grafana_IoT_Data_DataLake
yonasou
0
870
terraform_module_ Beginner
yonasou
10
180k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Documentation Writing (for coders)
carmenintech
73
5k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
A designer walks into a library…
pauljervisheath
207
24k
Rails Girls Zürich Keynote
gr2m
95
14k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
4 Signs Your Business is Dying
shpigford
184
22k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Embracing the Ebb and Flow
colly
86
4.8k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
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 道具なので、使うことを目的とするとモチベーション が持続しないかも 最後に個人的な意見を