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.1k
人魚とたわむれる
muryoimpl
0
62
Kanzawa.rbのLT大会を支える技術の裏側を変更する Ruby on Rails + Litestream 編
muryoimpl
0
2.2k
Kanazawa.rb LT大会用/kzlt コマンドの説明 2024/01版
muryoimpl
0
3.1k
kzltコマンドの新たなソリューションについて
muryoimpl
0
3.1k
俺とTODOアプリ~Linearの変~
muryoimpl
0
2.8k
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
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
370
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
280
React本体のコードリーディング
high_g_engineer
1
140
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
110
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
410
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.8k
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
170
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
180
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
690
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
430
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The SEO identity crisis: Don't let AI make you average
varn
0
530
Designing for Timeless Needs
cassininazir
1
440
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
How to build a perfect <img>
jonoalderson
1
5.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Making Projects Easy
brettharned
120
6.7k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
170
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
410
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
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. 消したい単位でディレクトリ分割する
消耗せずに楽しくさくっと 環境構築していきましょう