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 リポジトリで頑張る Continuous Version Upda...
Search
YuyaKoda
PRO
October 23, 2025
Technology
2.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大規模 Terraform リポジトリで頑張る Continuous Version Update / CI/CD Test Night #8
YuyaKoda
PRO
October 23, 2025
More Decks by YuyaKoda
See All by YuyaKoda
Introduction to dag-andersen/argocd-diff-preview
ponkio_o
PRO
0
75
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
520
Kubernetes だけじゃない!Amazon ECS で実現するクラウドネイティブな GitHub Actions セルフホストランナー / CNDW2024
ponkio_o
PRO
6
810
Renovate ではじめる運用レスなライブラリ更新 / 令和最新版 他人に自慢したいヤバいCI/CD LT会 @ yabaibuki.dev #2
ponkio_o
PRO
1
350
Amazon ECS で作るスケーラブルなセルフホストランナー / GitHub Actions Meetup Tokyo #4
ponkio_o
PRO
2
1.2k
業務で使えるかもしれない…!?GitHub Actions の Tips 集 / CI/CD Test Night #7
ponkio_o
PRO
49
23k
aqua で始める CI-Friendly なツール管理
ponkio_o
PRO
3
1.4k
set-terraform-matrix という Actions を作った / set-terraform-matrix-actions
ponkio_o
PRO
0
700
NGINX Ingress Controller を活用した Retty のサービス開発とモニタリング / NGINX ユーザー会 2022 春
ponkio_o
PRO
0
280
Other Decks in Technology
See All in Technology
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
430
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
200
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.4k
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
180
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
200
フィジカル版Github Onshapeの紹介
shiba_8ro
0
320
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
310
Agile and AI Redmine Japan 2026
hiranabe
4
480
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
150
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
330
From Prompt Engineering to Loop Engineering
shibuiwilliam
1
220
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
140
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
310
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
170
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
BBQ
matthewcrist
89
10k
Transcript
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
1 大規模 Terraform リポジトリで頑張る Continuous Version Update 2025 Oct 23rd Yuya Koda
AbemaTV, Inc. All Rights Reserved Yuya Koda ABEMA の Cloud
Platform チーム所属のエンジニア Google Cloud を中心とした ABEMA のインフラ周りを手広く みています。業務では YAML か JSON か HCL か Markdown を書いていることが多いです。たまに Go も。 趣味はコーヒーでマイブームはぬか漬けを作ること 2 Profile ponkio_o
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
Terraform 使っている人?✋ 3
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
(自動/手動/頻度問わず) バージョン更新できている人?✋ 4
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
(自動/手動問わず) 継続的にバージョン更新できている人?✋ 5
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
継続的に自動でバージョン更新できている人?✋ 6
AbemaTV, Inc. All Rights Reserved ABEMA の Terraform 事情 7
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
8 ABEMA の Terraform リポジトリ ABEMA の Terraform リポジトリは、Platform Team 以外の開発者も PR を出し、自身で plan / apply とマージまでを行う • 単一リポジトリに複数のサービスが存在する monorepo 構成 • サービスごとにディレクトリを区切って各ディレクトリにオーナーが存在 ◦ CODEOWNERS で設定し、コードーオーナーのレビューを必須にしている • ステートファイルはサービス x 環境ごとに分割 ◦ 現時点で 2000 以上
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
9 ディレクトリ構成イメージ 各サービスごとにオーナーが存在しており「サービス x 環境」でステートファイルが分割されている
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
10 Atlantis Terraform の実行には Atlantis を利用していて、開発者自身で plan / apply を行えるようにしている (IAM など一部の変更は Platform Team のレビューを必須にする仕組みを入れている) https://www.runatlantis.io/
AbemaTV, Inc. All Rights Reserved Terraform とバージョン更新 11
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
12 なぜ継続的なバージョン更新が必要か? 短期的には必須ではないが、Terraform / Terraform Provider を継続的にバージョンアップすることは とても大切 • Terraform 本体の新機能への追従 • 各 Provider の新機能への追従 ◦ 新機能を使わなくても Provider のバージョンは上がり続けるのでそのうち困る • Terraform を動かすキッカケを作る ◦ コード化しても、使い続けないとそのうち実リソースの乖離 (いわゆる Drift) が起き始める ▪ そして乖離がデカくなると IaC の運用を諦めてしまう
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
13 Terraform はバージョン更新を自動化しやすい Terraform はその性質上、アプリケーションのライブラリなどに比べてバージョン更新作業を自動化 しやすい • (最近は) 破壊的変更がほとんどない ◦ 単純にバージョンをインクリメントするだけで OK • terraform plan コマンドで実行計画を表示できる ◦ 基本的には plan が通って差分が出なければ OK ◦ CI では差分発生時に exit 2 してくれる plan の -detailed-exit オプションが便利 • 仮にバグが混入していても実リソースに影響を与えない ◦ 極論 terraform apply しない限り勝手に実リソースが壊れたりしない
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
14 バージョン更新作業を自動化する 定期的なアップデートを手動でやるのは結構大変なのと、数が増えると追いつかなくなるので何かしら自 動化の仕組みは必須。便利なサービスやツールがあるのでそれを活用するのがオススメ • 自動で PR を作ってくれるサービス ◦ Dependabot ◦ Renovate • ファイルを更新してくれるツール ◦ minamijoyo/tfupdate
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
15 Renovate ABEMA では Dependabot に比べて高度な設定ができ Automerge する仕組みも整備されているため Renovate (セルフホスト版) を採用している。セルフホスト版を利用している理由は後述 https://github.com/renovatebot/renovate
AbemaTV, Inc. All Rights Reserved 自動化で直面した課題 16
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
renovate-approve が使えない問題 17
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
18 renovate-approve とは Renovate では renovate-approve という GitHub Apps が提供されており、これを用いることで Automerge を有効化した PR に対して Approve を付与することができるため、Approve を必須にしている リポジトリで Renovate の PR を automerge したい時に便利 https://github.com/apps/renovate-approve
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
19 CODEOWNERS と GitHub Apps 先ほど話したように Terraform リポジトリでは CODEOWNERS ファイルを用いてコードオーナーを設定 し、コードオーナーの Approve を必須にしているが、GitHub App はコードオーナーに指定できない。 そのため renovate-approve で Approve を付与してもマージ条件を満たせない
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
20 解決策 マシンアカウントを指定することはできるので、renovate-approve の利用を諦めて、マシンアカウント を用いて Renovate の PR に Approve を付与する CI を作ることに…😭
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
マネージド版 Renovate が使えない問題 21
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
22 マネージド版 Renovate の制約 マネージド版の Renovate はマシンスペックやタイムアウトの制約が存在する。 最初は問題なかったが、対象ディレクトリを増やしていくと実行に時間がかかるように…(15分以上) https://docs.renovatebot.com/mend-hosted/overview/
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
23 解決策 Renovate はセルフホスト可能なので GKE クラスタ上で動かすことにした (CronJob で定期実行) これによりスペックやタイムアウトは自分たちでハンドリングできる上にキャッシュも利用可能になった
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
24 Tips: セルフホストの場合 renovate-approve はどうなる? セルフホスト版 Renovate を利用する場合、renovate-approve もセルフホストが必要になる ドキュメントは存在しないが、単なる Webhook サーバで実装が公開されているので比較的簡単に構築 できる (実装は70行ほど) https://github.com/renovatebot/renovate-approve-bot
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
Renovate の PR 通知がノイズになる問題 25
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
26 通知のノイズ問題 Branch Protection の「Require review from Code Owners」を有効化すると指定したコードオーナーが reviewer として強制アサインされ Renovate の PR が作られるたびにコードオーナーに通知される
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
27 解決策 バージョン等が記載される .tf ファイルの命名規則が揃っていたので、特定のファイルだけコードオーナー を外した。 CODEOWNERS ファイルでは明示的にオーナーを指定しない場合にコードオーナーを外すことができる
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
28 CODEONWERS Bypass 対策 コードオーナーを設定しないようにしたファイルに対して resource blockを書き込むことでコードオーナー のレビューをバイパスできてしまう 😱 Atlantis の Custom Workflows でバージョンなどが記載されるファイルをパースし resource block が存在 していたら CI を fail させることで Bypass を対策した
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
29 副次的な効果 特定ファイルのコードオーナーが不在になったことで、renovate-approve が使えるようになった 👍👍👍 (先ほど話した通り、Renovate がセルフホストのため renovate-approve もセルフホスト)
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
Drift 問題 30
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
31 Drift 問題 いざ Renovate を動かしてみると Drift が大量発生 🤯 • 手動変更が加えられていて差分が出ているパターン • apply を忘れてマージしたパターン (Atlantis では PR コメントで apply をトリガーするため) • 社内 Module がバグっていて無限に差分が出るパターン • Provider アップデートに伴うスキーマ変更 などなど…いずれも人間が手動で対応する必要がある
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
32 解決策 Drift が発生している PR は自動的に close し、更に Issue を自動生成して担当者をアサインするように した。対応ドキュメントも用意し、みんなでちまちま修正していった
AbemaTV, Inc. All Rights Reserved 今後について 33
AbemaTV, Inc. All Rights Reserved AbemaTV, Inc. All Rights Reserved
34 今後について • 頑張って全部ディレクトリ正常化したい ◦ 2000 以上対象があるうち、ようやく半分くらい正常化できた • 各サービスオーナーが自律的に Drift を解消できるようにしたい ◦ 今は Cloud Platform チームが直している
AbemaTV, Inc. All Rights Reserved