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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
YuyaKoda
PRO
October 23, 2025
Technology
2.4k
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
74
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
340
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
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
100
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
240
AIはどのように 組織のアジリティを変えるのか?
junki
4
1k
徹底討論!ECS vs EKS!
daitak
0
130
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
150
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Android の公式 Skill / Android skills
yanzm
0
160
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
100
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
0
180
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
Chainlitで作るお手軽チャットUI
ynt0485
0
270
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.5k
Featured
See All Featured
Between Models and Reality
mayunak
4
340
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Marketing to machines
jonoalderson
1
5.5k
Optimizing for Happiness
mojombo
378
71k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Designing for Performance
lara
611
70k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
How GitHub (no longer) Works
holman
316
150k
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