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
3.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
85
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
550
Kubernetes だけじゃない!Amazon ECS で実現するクラウドネイティブな GitHub Actions セルフホストランナー / CNDW2024
ponkio_o
PRO
6
840
Renovate ではじめる運用レスなライブラリ更新 / 令和最新版 他人に自慢したいヤバいCI/CD LT会 @ yabaibuki.dev #2
ponkio_o
PRO
1
370
Amazon ECS で作るスケーラブルなセルフホストランナー / GitHub Actions Meetup Tokyo #4
ponkio_o
PRO
2
1.3k
業務で使えるかもしれない…!?GitHub Actions の Tips 集 / CI/CD Test Night #7
ponkio_o
PRO
49
23k
aqua で始める CI-Friendly なツール管理
ponkio_o
PRO
3
1.9k
set-terraform-matrix という Actions を作った / set-terraform-matrix-actions
ponkio_o
PRO
0
710
NGINX Ingress Controller を活用した Retty のサービス開発とモニタリング / NGINX ユーザー会 2022 春
ponkio_o
PRO
0
290
Other Decks in Technology
See All in Technology
データエンジニアの困りごとをDevinと一緒に解消する
10xinc
2
840
2026/09/10 Spring_Bootから_Jakarta_EE_MicroProfileへの移行
megascus
0
140
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
110
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
150
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
1.1k
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
280
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
110
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
320
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
260
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
190
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
450
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
260
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
What's in a price? How to price your products and services
michaelherold
247
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Odyssey Design
rkendrick25
PRO
2
800
Building the Perfect Custom Keyboard
takai
2
860
The browser strikes back
jonoalderson
0
1.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Test your architecture with Archunit
thirion
2
2.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Amusing Abliteration
ianozsvald
1
290
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