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 EnterpriseやTerraform CloudのAPIを活用して、一...
Search
Recruit
PRO
August 25, 2022
Technology
2
630
Terraform EnterpriseやTerraform CloudのAPIを活用して、一歩踏み込んだTerraform運用自動化を! / HashiTalks_sudo
2022/08/25_HashiTalks: Japanでの、須藤の講演資料になります
Recruit
PRO
August 25, 2022
Tweet
Share
More Decks by Recruit
See All by Recruit
Javaで作る RAGを活用した Q&Aアプリケーション
recruitengineers
PRO
1
150
問題解決に役立つ数理工学
recruitengineers
PRO
12
2.8k
Curiosity & Persistence
recruitengineers
PRO
2
200
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
420
成長実感と伸び悩みからふりかえる キャリアグラフ
recruitengineers
PRO
1
200
リクルートの オンプレ環境の未来を語る
recruitengineers
PRO
3
370
LLMのプロダクト装着と独自モデル開発
recruitengineers
PRO
1
370
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 ビジネス編
recruitengineers
PRO
3
210
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 技術編
recruitengineers
PRO
2
270
Other Decks in Technology
See All in Technology
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
960
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
150
FOSS4G 2025 KANSAI QGISで点群データをいろいろしてみた
kou_kita
0
390
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.7k
LangSmith×Webhook連携で実現するプロンプトドリブンCI/CD
sergicalsix
1
210
Flutter向けPDFビューア、pdfrxのpdfium WASM対応について
espresso3389
0
130
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
6.9k
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
160
ドメイン特化なCLIPモデルとデータセットの紹介
tattaka
2
580
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
490
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
0
100
OSSのSNSツール「Misskey」をさわってみよう(右下ワイプで私のOSCの20年を振り返ります) / 20250705-osc2025-do
akkiesoft
0
150
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Site-Speed That Sticks
csswizardry
10
690
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Embracing the Ebb and Flow
colly
86
4.7k
We Have a Design System, Now What?
morganepeng
53
7.7k
A better future with KSS
kneath
238
17k
Documentation Writing (for coders)
carmenintech
72
4.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Transcript
Terraform Enterpriseや Terraform CloudのAPIを 活⽤して、⼀歩踏み込んだ Terraform 運⽤⾃動化を︕ 2022.08.25 HashiTalks: Japan
Yu SUDO & Shotaro IWASE
2022.08.25 HashiTalks Yu SUDO @ リクルート インフラソリューションユニット 2 SRE部 クラウドグループ
クラウドの横断基盤を管理・運⽤・改善 している組織。 AWS基盤チームSENTOのリーダー。
2022.08.25 HashiTalks Yu SUDO @ リクルート ねこを飼っています 娘が産まれました 3
2022.08.25 HashiTalks Shotaro IWASE @ NTTテクノクロス - デジタルツイン事業部 第三事業ユニット 熱帯⿂を飼っています
のんびり旅⾏/写真撮影 4
2022.08.25 HashiTalks 組織の紹介 SENTO基盤とSENTOチーム 5
2022.08.25 HashiTalks リクルートの主要事業 6
2022.08.25 HashiTalks ライフスタイル領域・SaaS領域の事業 7 旅⾏、飲⾷、美容、 Air Business Toolsを中⼼に 関連サービスやアプリを提供している事業領域
2022.08.25 HashiTalks 8〜12 Engineers リクルートのライフスタイル領域・SaaS領域のための AWS基盤 SENTO 104 AWS Accounts
8
2022.08.25 HashiTalks CCoE Cloud Center of Excellence SENTOチームの特性 IRE Infrastructure
Reliability Engineering 9
2022.08.25 HashiTalks CCoE 規範的・助⾔的活動 プロダクトに対する伴⾛ 新機能の検討・検証 EOSL対応 SENTOチームの特性 IRE 基盤コンポーネント
ID管理, 踏み台, VPC管理, 専⽤線, WAF, NWF, メールGW, リアルタイム監査, etc → Terraform活⽤︕ 10
2022.08.25 HashiTalks HashiCorp Virtual Strategy Day Japan vol.2 の発表もどうぞ︕ 11
2022.08.25 HashiTalks Terraform運⽤⾃動化の背景 12
2022.08.25 HashiTalks 定期的な構成差分チェックをしたい • プロダクトとSENTO基盤でアカウントを共有しており、SENTO基盤で管理している部分に ついてもプロダクトが操作することが可能 • Terraformで構築・運⽤している環境に対して、しばらく時間が経過してからソースコードを 変更したときに、plan時にそれまで認識していなかった差分を⽣じることがあった •
公式にDrift Detection機能が発表されるよりも前だった 100を超えるWorkspaceに対して⼀⻫に操作したい • 全アカウントに対して、再度Run(plan)をかけ直したいケースがあった • applyのapprove待ちになっているRun(plan)をすべてDiscardしたいケースがあった • Workspace数が100を超えているので、そういった操作が必要になったときに⼤きな負担 だった Terraform運⽤⾃動化の背景 13
2022.08.25 HashiTalks 47種類のJSON APIが公開されてる、 って知ってました︖ GUI上で実施可能なほぼすべての操作が APIとしても利⽤可能︕ → Runs API
と Organizations API、 Workspaces API で やりたいことが実現できる︕ ということで、2つの事例を紹介していきます https://www.terraform.io/cloud-docs/api-docs/run Terraform EnterpriseやTerraform Cloudの JSON API 14
2022.08.25 HashiTalks Terraform管理リソースの Drift Detection 15
2022.08.25 HashiTalks SENTOチームとプロダクトチームの責任共有 • SENTO基盤において、AWSアカウントの構築・管理(AWS+Terraform)はSENTOチーム • 基盤上でのサービス構築・運⽤はプロダクトチーム 基盤側の管理リソースをプロダクトが変更することを⼀部許容 • SCP(Service
Control Policy)でタグベースのガードレールはあるものの、限界がある • プロダクト側のカスタマイズで、Terraformコードと実際のリソースに乖離が発⽣することがある • 差分があるときに、リソースを元に戻すか、リソースに合わせてコードを変更するか、連携したい 差分を検知して知らせてくれる機能がなかった • PRが作成されて、Terraform Enterprise上でRun(plan)が実⾏されるまで気付くことができない Terraform管理リソースのDrift Detection 16
2022.08.25 HashiTalks Private subnet Drift Detectionのシステム構成 17 Amazon ECS Recruit
Product AWS Accounts GitHub Enterprise (Terraform Code) JSON API Notification to Slack SENTO Team AWS Step Functions Amazon EventBridge Workspace⼀覧を取得 各WorkspaceでSpeculative Planを作成 Plan結果をチェック 差分を検知、またはplanが異常終了したら通知 SENTO AWS Account SENTO VPC planを多数実⾏する=実⾏時間が15分を超えると想定 実⾏には Lambda ではなく ECS+Fargate を利⽤ Step FunctionsからECSタスクを起動することで、エラー時にリトライ EventBridgeで定期的にステートマシンを実⾏して差分を⾃動検知
2022.08.25 HashiTalks 2022年6⽉のHashiConf Europeで発表、同等の機能が公式に提供されるようです https://www.hashicorp.com/blog/terraform-cloud-adds-drift-detection-for-infrastructure-management Drift Detection公式サポート 18
2022.08.25 HashiTalks 多数のWorkspaceでの ⼀⻫Re-Run、⼀⻫Discard 19
2022.08.25 HashiTalks 全WorkspaceにDiscardをかけたいユースケース • planでは問題なさそうに⾒えるがapplyでコケるケースなど • 最近では、AWS Provider v4.0のS3のBreaking changesが原因で発⽣
• 100を超えるWorkspace数のため、Applyがコケた場合のリカバリの負担が⼤きい • 本番環境でapply承認待ちのRunはすべて⼿動でDiscardしていた 全WorkspaceにRe-Runをかけたいユースケース • 他のリソースの作成タイミングと近すぎる場合や、depends_onが意図通りにならない場合 など、applyでエラーになった後にRe-Runすると解消するケース • state import後の正常性確認として、Re-Runでplanを実⾏して差分がないことを確認 したい、というケース ⼀⻫Re-Run、⼀⻫Discard 20
2022.08.25 HashiTalks ⼀⻫Re-Run、⼀⻫Discardのシステム構成 21 SENTO AWS Account SENTO VPC Private
subnet Recruit Product AWS Accounts JSON API SENTO Team 各WorkspaceのCurrent runのステータスをチェックしてRun APIを実⾏ [⼀⻫Discard] planned状態であればdiscardを実⾏ [⼀⻫Re-Run] statusがfinal stateに該当する場合は新たなRunを作成 ⼀⻫Discard、⼀⻫Re-Runの実⾏にはLambdaを選択 Drift Detectionと異なりplan結果の確認が不要で 短時間で処理が完了する LambdaはJenkinsからAWS CLIでinvokeする Lambda function ⾃動化ツールのひとつとしてJenkinsを利⽤している ⼀⻫Discard、⼀⻫Re-Runのジョブを追加した 必要になったときにジョブを実⾏する invoke GitHub Enterprise (Terraform Code)
2022.08.25 HashiTalks まとめ 22
2022.08.25 HashiTalks Drift Detectionでプロダクトチームによるリソース変更を素早く検知できるように • moduleに機能を追加しようとして想定外のplan差分が出て混乱する、といったトラブルを 予防できるようになった • プロダクト側が検証等で⼀時的な設定変更をして元に戻すのを忘れた場合や、好ましくな い状態に変更された場合も、⾃動検知できるようになった
⼀⻫Re-Run、⼀⻫Discardの仕組みで業務負担が軽減した • 100超のWorkspaceに対して1つずつ Re-Run / Discard をする必要がなくなった 定期的に⾃動実⾏したい操作がある、業務フロー上⼿動操作が多く負担、 といった課題をお持ちの場合は、ぜひJSON APIを利⽤して⾃動化を検討 してみましょう︕ 運⽤⾃動化によって 23
ありがとうございました 24