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を使うポイント/The point I use Terraform
Search
muryoimpl
March 16, 2019
Programming
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
私がTerraformを使うポイント/The point I use Terraform
2019/03/16(土) に開催された HashiCorp Terraform & Vault Enterprise 勉強会 in 金沢 での発表です。
muryoimpl
March 16, 2019
More Decks by muryoimpl
See All by muryoimpl
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
2.2k
人魚とたわむれる
muryoimpl
0
67
Kanzawa.rbのLT大会を支える技術の裏側を変更する Ruby on Rails + Litestream 編
muryoimpl
0
2.3k
Kanazawa.rb LT大会用/kzlt コマンドの説明 2024/01版
muryoimpl
0
3.1k
kzltコマンドの新たなソリューションについて
muryoimpl
0
3.1k
俺とTODOアプリ~Linearの変~
muryoimpl
0
2.9k
POSIX文字クラスでの躓き
muryoimpl
0
2.4k
/kzlt コマンドとは
muryoimpl
0
1.1k
meetup.kzrb.org の更新を考える 事前激闘編
muryoimpl
0
1.7k
Other Decks in Programming
See All in Programming
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
270
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
480
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.4k
Hono + Inertia + React で LP を構築した話
oukayuka
2
190
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
150
Cloudflare is Agents
chimame
0
190
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.4k
Dockerfile CMD for Node.js
grazie1999
0
160
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
源内ハンズオン概要編
hideg
0
240
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
190
信頼性の目標を誰も求めてない
shubox
0
470
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Building Applications with DynamoDB
mza
96
7.2k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Deep Space Network (abreviated)
tonyrice
0
280
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
510
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
A Soul's Torment
seathinner
7
3.5k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
The Invisible Side of Design
smashingmag
301
52k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
800
BBQ
matthewcrist
89
10k
The SEO identity crisis: Don't let AI make you average
varn
0
550
Transcript
私が Terraform を使うポイント HashiCorp Terraform & Vault Enterprise 勉強会 in
金沢 2019年03月16日(土) 無量井 健 from Kanazawa.rb
Contents • 自己紹介 • Terraform 利用者としての私の立ち位置 • Terraform を選んだポイント •
Terraform を使うときに私が意識しているポイント
自己紹介 • name: 無量井 健 a.k.a @muryoimpl • 2018年8月から金沢に戻ってきたリモートワーカー •
3.times { muryoimpl.participate_in ‘Kanazawa.rb’ } • Terraform はお仕事で使ったり、個人開発で使ってみたり しています
Terraform 利用者としての私の立ち位置 • ※あくまで個人の意見/感想です • Terraform 利用歴は1年くらい • AWS に環境を作る際に使っている
• インフラ構築を専門に扱っている人ではない • 中小規模の環境を作ることがほとんど
を選んだポイント
Terraform を選んだポイント 1. 即時実行されず、実行前に差分がわかる 2. 作ったものは簡単に壊せる 3. 比較的読みやすい DSL とドキュメントがある
4. Terraform の不得意なところを許容できた
私が Terraform を 選んだポイント `terraform apply` を入力したとしても、必ず差分を 表示して実行していいか確認してくれる。 ※即実行してくれ!っていう人もいそう 私はこれに救われている…
- あの設定忘れてた!を流す前に気づく - 焦って無駄打ち|削除!が減った - ここが変わるってわかる安心感 - 定義のリファクタリングに便利←ポイント 1. 即時実行されず、実行前に 差分がわかる 2. 作ったものは簡単に壊せる 3. 比較的読みやすいDSLとド キュメントがある 4. Terraform の不得意なとこ ろを許容できた
私が Terraform を 選んだポイント `terraform destroy` するだけで作ったものが削除 できる。 以下は必要ない! -
消す際の定義変更 or 消すタスクの追加 - 削除の手間を惜しんで飛んでいくお金 - 中途半端に残った設定を運用中の設定から削 除する苦痛を味わわなくて済む 1. 即時実行されず、実行前に 差分がわかる 2. 作ったものは簡単に壊せる 3. 比較的読みやすいDSLとド キュメントがある 4. Terraform の不得意なとこ ろを許容できた
私が Terraform を 選んだポイント DSL - JSON程ごちゃごちゃでなく、YAMLほどindent や配列の記法に気を使わなくてもいい - formatter
が付属していて整形できる terraform fmt コマンド - resource.name.attribute でアクセスできるの が好き 例) aws_instance.bastion.id ドキュメント - 設定値に説明がある - 割と設定例が載ってる - フォント小さいけどそのおかげで遷移、スクロー ルが少ない 1. 即時実行されず、実行前に 差分がわかる 2. 作ったものは簡単に壊せる 3. 比較的読みやすいDSLとド キュメントがある 4. Terraform の不得意なとこ ろを許容できた
私が Terraform を 選んだポイント Ansible にあるような “--tags” で部分適用する - 差分判断して適用してくれるから不要
- ディレクトリをわけることで設定の塊ごとに実行 できるようにして回避できる アプリを deploy する - Terraform は “Define infrastructure as code to increase operator productivity and transparency.” != deploy tool と割り切った - deploy は別のツールを使う 例) ecs-deploy ちょっととっつきにくい 繰り返し expression - count と element と index の組み合わせ… - 数が少ない場合は無理に繰り返さない、慣れる - 0.12で for … in, for_each が入るかも 1. 即時実行されず、実行前に 差分がわかる 2. 作ったものは簡単に壊せる 3. 比較的読みやすいDSLとド キュメントがある 4. Terraform の不得意なとこ ろを許容できた
ここまで: Terraform を選んだポイント 1. 即時実行されず、実行前に差分がわかる 2. 作ったものは簡単に壊せる 3. 比較的読みやすい DSL
とドキュメントがある 4. Terraform の不得意なところを許容できた 便利に使わせていただいております
を使うときに 私が意識するポイント
Data Source, Random provider を活用する Data Source は名前等の情報から既存リソースの情報を取得できる。 Random はパスワード等の自動生成に利用できる。
- resource の情報をvariable として持たなくてもよい - 少ない手間で定義上にもたなければならない秘匿情報も減らせる Vault や AWS System Manager Parameter Store 用 Data Sourceもある ので、秘匿情報をそちらに登録しておいて参照、ということも可能。
汎用性、再利用を必要になるまで考えない やりたいことは “今必要な環境を作る”ことなので 無理にmodule作らない、不 要なoptionalな属性を変数にして消耗しない - 環境は対象によって異なる == 再利用が難しい、のが現実 -
まず今必要な環境のためだけの定義を書く - 必要になるまで module は使わない - module の定義は override できるけど、override で “module の設定を 潰す” が入ってくると途端に読みにくくなる - 論理的な分割はファイルとディレクトリで行う
消したい単位でディレクトリ分割する `terraform destroy` は有効活用したいの で、一緒に消せない、消したくないものは 独立させる。 - backend 用の S3
buckt - ネットワーク作り直したいけど、ECR の docker image は消したくない etc ※これは実験的にmoduleを 使ったものなので module使てるやん!の ツッコミはナシでお願いします
ここまで: Terraform を使うときに意識するポイント 1. Data Source, Random provider を活用する 2.
汎用性、再利用を必要になるまで考えない 3. 消したい単位でディレクトリ分割する
消耗せずに楽しくさくっと 環境構築していきましょう