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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Riki Makita
September 29, 2021
Programming
920
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
160
Other Decks in Programming
See All in Programming
霧の中の代数的エフェクト
funnyycat
1
490
React本体のコードリーディング
high_g_engineer
1
140
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
630
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
430
Foundation Models frameworkで画像分析
ryodeveloper
1
600
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.6k
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
480
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
120
Built Our Own Background Agent at LayerX
layerx
PRO
9
5.1k
Featured
See All Featured
Side Projects
sachag
455
43k
Designing for humans not robots
tammielis
254
26k
Claude Code のすすめ
schroneko
67
230k
From π to Pie charts
rasagy
0
260
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
450
New Earth Scene 8
popppiees
3
2.5k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
440
Amusing Abliteration
ianozsvald
1
240
Building Applications with DynamoDB
mza
96
7.2k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
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をひとつ選び、絞 り込んだサブディレクトリに対して実行している
おわり