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.1k
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
81
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
540
Kubernetes だけじゃない!Amazon ECS で実現するクラウドネイティブな GitHub Actions セルフホストランナー / CNDW2024
ponkio_o
PRO
6
830
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.4k
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
MIRU 2026 チュートリアル
keisuke198619
0
810
ガバメントクラウドでのランサムウェア対策
techniczna
1
760
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.5k
AIがコードを書く時代、人間は何を保証するのか———馬場さんと考える、開発者に求められる新しい責任と価値 - TECH PLAY
netmarkjp
0
1.3k
AI エージェント時代のデジタルアイデンティティ
fujie
3
1.4k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
120
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
0
830
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
180
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
JavaScript 研修 (2026)
recruitengineers
PRO
0
260
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
1.5k
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
210
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.1k
Docker and Python
trallard
47
4.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
480
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Optimizing for Happiness
mojombo
378
71k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
240
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
460
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The SEO identity crisis: Don't let AI make you average
varn
0
520
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
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