Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
今晩から始めるTerraform
Search
Taisei Ito
November 23, 2019
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
今晩から始めるTerraform
Taisei Ito
November 23, 2019
More Decks by Taisei Ito
See All by Taisei Ito
Grafana Meetup Japan Vol. 6
kaedemalu
1
960
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
130
Cloudflare Meetup Nagano Vol.2
kaedemalu
0
2.3k
20220214_Future Tech Night
kaedemalu
0
2.6k
20210910_nyle
kaedemalu
0
1.1k
20210827 Future Tech Night
kaedemalu
0
4.7k
CNDO2021 Open Policy Agent
kaedemalu
1
1.5k
20210210 Terraform meetup ONLINE
kaedemalu
0
720
Future Talk Night 20201118
kaedemalu
0
270
Other Decks in Technology
See All in Technology
生き様としてのSRE
hokkai7go
1
170
攻撃 3 時間 vs 復旧 10 時間。アクセスキー流出の非対称性を体感するために CTF を作った話
kazzpapa3
1
140
GCASアップデート(202607-202610)
techniczna
1
110
2拠点SRE活動始めてみた | sogaoh's LT @ ホンマでっかSRE勉強会 #3
sogaoh
PRO
0
240
`go get`したらELFが降ってきた件
taiyow
0
170
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
770
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
160
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
520
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
150
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
210
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
3
2.1k
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
180
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Talk to Developers About Accessibility
jct
2
610
Visualization
eitanlees
153
17k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
390
Making Projects Easy
brettharned
120
6.8k
Producing Creativity
orderedlist
PRO
348
41k
Making the Leap to Tech Lead
cromwellryan
135
10k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
490
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How to make the Groovebox
asonas
2
2.5k
Transcript
今日から始めるTerraform GDG Devfest Shinshu 2019/11/23 Taisei Ito 今晩
Taisei Ito • Twitter/Github ◦ @kaedemalu • ITコンサル&インフラエンジニア @ Future
Corp. ◦ GCP & Terraform • 好きなもの ◦ スキー ◦ クラフトビール ◦ カメラ ◦ 食べること
今日の内容 • Terraformとは • 簡単な例 • 使ってみて便利だったもの • まとめ
Terraform とは • HashiCorp社製のインフラをコードで管理するツール ◦ Infrastructure as Code(IaC) ▪ ex.)
AWS Cloudformation • HCL(HashiCorp Configuration Language)という言語で記述 されている ◦ 拡張子は .tf • 様々なベンダーに向けて使用できる ◦ 今日は(もちろん)話しませんが...。
Terraform とは • HashiCorp社製のインフラをコードで管理するツール ◦ Infrastructure as Code(IaC) ▪ ex.)
AWS Cloudformation • HCL(HashiCorp Configuration Language)という言語で記述 されている ◦ 拡張子は .tf • 様々なベンダーに向けて使用できる ◦ 今日は(もちろん)話しませんが...。
インスタンス立ててみます
事前準備 • サービスアカウントの作成 ◦ jsonキーを発行して作業ディレクトリに配置 • 以下のコードを使ってGCEインスタンス作成します provider "google" {
credentials = file("account.json" ) project = "project-name" } resource "google_compute_instance" "sample_instance" { name = "gdg-instance" zone = "asia-northeast1-a" machine_type = "n1-standard-1" network_interface { network = "default" } boot_disk { initialize_params { image = "debian-cloud/debian-9" } } }
$ terraform apply
None
冪等性をみてみる • タグを付け加えてみます ◦ “foo”と”bar”の2つ provider "google" { credentials =
file("account.json" ) project = "project-name" } resource "google_compute_instance" "sample_instance" { name = "gdg-instance" zone = "asia-northeast1-a" machine_type = "n1-standard-1" network_interface { network = "default" } boot_disk { initialize_params { image = "debian-cloud/debian-9" } } tags = ["foo", "bar"] }
$ terraform apply
None
便利な機能 • terraform fmt でコードの整形ができる ◦ go fmtと機能的には一緒 provider "google"
{ credentials = file("account.json") project = "project_name" region = "us-central1" } ... provider "google" { credentials = file("account.json") project = "project_name" region = "us-central1" } ... terraform fmt
便利な機能 • workspaceの利用 ◦ 同一コードでstg or prdなどを分けることができる provider "google" {
credentials = file("account.json" ) project = "project_name" region = "us-central1" } resource "google_compute_instance" "sample_instance" { name = "${terraform.workspace}-sample-instance" zone = "us-central1-a" machine_type = "n1-standard-1" } インスタンス名を振 り分けられる
最後に • Terraformを使う時はドキュメント必須!! ◦ リソースなど網羅されている ◦ GUIで使えるパラメーターは揃っている • バージョンで使える機能が変わる ◦
workspaceは0.12から使えるようになった • リソースの消し忘れがなくなる ◦ terraform destroy で綺麗に削除できる
最後に • Terraformを使うに当たって公式は必須!! ◦ リソースなど網羅されている ◦ GUIで使えるパラメーターは揃っている • バージョンで使える機能が変わる ◦
workspaceは0.12から使えるようになった • リソースの消し忘れがなくなる ◦ terraform destroy で綺麗に削除できる • 学習コスト高くない!
エンジニア募集中です!! Tech blog