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
Riki Makita
September 29, 2021
Programming
0
870
TerraformのCI/CD - monorepoとTerraform Cloud
HashiTaslks Japan 2021
Riki Makita
September 29, 2021
Tweet
Share
More Decks by Riki Makita
See All by Riki Makita
What Platform SRE does at Money Forward
grezar
0
2.4k
マネーフォワードのマイクロサービス基盤のこれまでとこれから
grezar
1
2.2k
A Brief Introduction to Make an API Client in Go
grezar
0
140
Other Decks in Programming
See All in Programming
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
430
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
Vibe codingでおすすめの言語と開発手法
uyuki234
0
160
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
280
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
CSC307 Lecture 01
javiergs
PRO
0
650
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
150
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
Grafana:建立系統全知視角的捷徑
blueswen
0
270
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
460
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.5k
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
440
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
420
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
61
47k
What's in a price? How to price your products and services
michaelherold
246
13k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Darren the Foodie - Storyboard
khoart
PRO
0
2.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
The browser strikes back
jonoalderson
0
290
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
140
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をひとつ選び、絞 り込んだサブディレクトリに対して実行している
おわり