Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TerraformのCI/CD - monorepoとTerraform Cloud
Search
Riki Makita
September 29, 2021
Programming
930
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.4k
A Brief Introduction to Make an API Client in Go
grezar
0
160
Other Decks in Programming
See All in Programming
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
590
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
490
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
430
Intent as Code
shoppingjaws
6
720
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
150
スマート反転とウェブアクセシビリティ
camiha
0
180
Webの地図
yosuke_furukawa
PRO
6
3.9k
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
130
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Product Roadmaps are Hard
iamctodd
55
13k
Evolving SEO for Evolving Search Engines
ryanjones
0
280
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
270
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
Become a Pro
speakerdeck
PRO
31
6.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
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をひとつ選び、絞 り込んだサブディレクトリに対して実行している
おわり