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のCI/CD - monorepoとTerraform Cloud
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Riki Makita
September 29, 2021
Programming
910
0
Share
TerraformのCI/CD - monorepoとTerraform Cloud
HashiTaslks Japan 2021
Riki Makita
September 29, 2021
More Decks by Riki Makita
See All by Riki Makita
What Platform SRE does at Money Forward
grezar
0
2.5k
マネーフォワードのマイクロサービス基盤のこれまでとこれから
grezar
1
2.3k
A Brief Introduction to Make an API Client in Go
grezar
0
150
Other Decks in Programming
See All in Programming
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
570
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
2
270
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
3.4k
RTSPクライアントを自作してみた話
simotin13
0
440
Modding RubyKaigi for Myself
yui_knk
0
880
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
190
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
580
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
360
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
450
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
420
AIエージェントの隔離技術の徹底比較
kawayu
0
460
Featured
See All Featured
Everyday Curiosity
cassininazir
0
220
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Typedesign – Prime Four
hannesfritz
42
3.1k
Bash Introduction
62gerente
615
210k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
520
A Tale of Four Properties
chriscoyier
163
24k
The Spectacular Lies of Maps
axbom
PRO
1
790
My Coaching Mixtape
mlcsv
0
140
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Transcript
TerraformのCI/CD - monorepoとTerraform Cloud HashiTalks 2021
自己紹介 牧田 力 • 2017年 7月 マネーフォワード入社 • サービスインフラグループ •
主にAWSとマルチテナント Kubernetesの運用を担当
今日話すこと Terraformにおけるmonorepoとは マネーフォワードのインフラについて multi reposと比較したmonorepoの利点 monorepoで複数のTerraform versionを利用する
マネーフォワードのインフラにつ いて
Architecture Overview
FYI より詳しく知りたい方は以下のスライドを参照してください https://speakerdeck.com/0gajun/multi-tenant-eks-muti-account-architecture-at-money-forward
Terraformにおけるmonorepoと は
Terraformにおけるmonorepoとは 本セッション内ではmonorepoを以下のように定義 複数のworkspace及びmoduleがサブディレクトリを切 る形で単一のリポジトリ内でバージョン管理されている 状態
multi reposとmonorepoの比較
CI/CDのメンテナンスビリティ • CI/CDの設定をすべてのworkspaceに対し てまとめて行える • CIならformatterやlinter、policy as codeな どのチェック •
CI/CDの設定はrepository毎に必要 Monorepo 👍 Multi Repos 👎
複数workspaceのplanをまとめてトリガーできる • moduleの変更時にそれを利用する workspaceのplanをトリガーできる • workspaceのplanが失敗していた場合は 変更直後にそれに気づくことができるので 原因の特定と修正が比較的容易 • moduleと利用側のworkspaceのrepository
別れているので、moduleの変更をトリガー としてworkspace側のplanを走らせるのは 面倒 • 時間がたってからworkspace側でplanを走 らせたときに初めて失敗したことに気づき、 変更から発見までが遅れる Monorepo 👍 Multi Repos 👎
コードの可視性が高い • 複数のworkspaceが一つのrepositoryにま とまっているので検索が比較的容易 • 複数のworkspaceに変更を加える際にもま とめて変更してPRをまとめることができる • workspace毎にrepositoryが別れているの でコードの検索が面倒
• repositoryの数だけPRが必要になる Monorepo 👍 Multi Repos 👎
コードベースの権限管理 • GitHubであればCODEOWNERSなどを用 いてサブディレクトリ毎に CODEOWNERを 設定する必要があるためやや複雑になる • Repository単位で権限をコントロールすれ ばよく、比較的わかりやすい Monorepo
👎 Multi Repos 👍
monorepoで複数のTerraform versionを利用する
複数のTerraform versionの共存 monorepoで複数versionのTerraformを共存させる場合に formatterやlinterのルールがTerraformのメジャーバージョンごとに 違うことが問題になる
複数のTerraform versionの共存 各workspaceに対応するサブディレクトリに .terraform-versionを置 いてworkspaceで利用しているTerraform versionを判定できるよう にしている
複数のTerraform versionの共存 それぞれ.terraform-versionの中身をもとに実行対象となるサブディレクトリを絞り込む 例:1.0.x系のTerraformを利用しているworkspaceを探すワンライナー ここで絞り込んだサブディレクトリに対して forを回してformattterやlinterを実行する
複数のTerraform versionの共存 CIでは各メジャーバージョン毎に代表する versionをひとつ選び、絞 り込んだサブディレクトリに対して実行している
おわり