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
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Taisei Ito
November 23, 2019
Technology
990
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
820
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
110
Cloudflare Meetup Nagano Vol.2
kaedemalu
0
2.1k
20220214_Future Tech Night
kaedemalu
0
2.5k
20210910_nyle
kaedemalu
0
1.1k
20210827 Future Tech Night
kaedemalu
0
4.6k
CNDO2021 Open Policy Agent
kaedemalu
1
1.5k
20210210 Terraform meetup ONLINE
kaedemalu
0
700
Future Talk Night 20201118
kaedemalu
0
250
Other Decks in Technology
See All in Technology
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
400
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.5k
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
2
510
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
240
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
170
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
320
徹底討論!ECS vs EKS!
daitak
0
120
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
0
280
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
140
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.2k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
600
Optimising Largest Contentful Paint
csswizardry
37
3.7k
How to build a perfect <img>
jonoalderson
1
5.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Visualization
eitanlees
152
17k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Unsuck your backbone
ammeep
672
58k
We Are The Robots
honzajavorek
0
250
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
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