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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Recruit
PRO
August 25, 2022
Technology
2
670
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
まなび領域における生成AI活用事例
recruitengineers
PRO
2
95
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
140
AIを用いたカスタマーサポートの業務プロセス・組織変革の実現
recruitengineers
PRO
1
80
問い合わせ自動化の技術的挑戦
recruitengineers
PRO
2
150
「Air ビジネスツールズ」のクライアントサポートにおける生成 AI 活用
recruitengineers
PRO
0
61
AI活用のためのアナリティクスエンジニアリング
recruitengineers
PRO
1
70
SaaS事業のデータマネジメント事例
recruitengineers
PRO
0
71
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
160
LLM のプロダクト導入における開発の裏側と技術的挑戦
recruitengineers
PRO
1
100
Other Decks in Technology
See All in Technology
「ヒットする」+「近い」を同時にかなえるスマートサジェストの作り方.pdf
nakasho
0
120
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4k
Secure Boot 2026 - Aggiornamento dei certificati UEFI e piano di adozione in azienda
memiug
0
140
A Gentle Introduction to Transformers
keio_smilab
PRO
1
230
【SLO】"多様な期待値" と向き合ってみた
z63d
2
310
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
270
AI Agentにおける評価指標とAgent GPA
tsho
1
300
Ultra Ethernet (UEC) v1.0 仕様概説
markunet
3
200
男(監査)はつらいよ - Policy as CodeからAIエージェントへ
ken5scal
5
730
GitLab Duo Agent Platform + Local LLMサービングで幸せになりたい
jyoshise
0
120
Shifting from MCP to Skills / ベストプラクティスの変遷を辿る
yamanoku
2
220
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
14k
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Navigating Team Friction
lara
192
16k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
950
Scaling GitHub
holman
464
140k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Agile that works and the tools we love
rasmusluckow
331
21k
The Language of Interfaces
destraynor
162
26k
Bash Introduction
62gerente
615
210k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
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