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
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
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development with AI-DLC
yoshidashingo
0
180
EventBridge Connection
_kensh
5
700
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
6
4.9k
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
540
How Timee Delivers Day 1 Production Ready LLM Features
tomoyks
0
180
手塩にかけりゃいいってもんじゃない
ming_ayami
0
550
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
770
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
910
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
920
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
630
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
180
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
220
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Prompt Engineering for Job Search
mfonobong
0
340
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
First, design no harm
axbom
PRO
2
1.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Accessibility Awareness
sabderemane
1
140
Making Projects Easy
brettharned
120
6.7k
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