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
prismatixでのTerraform運用で活用しているツールの紹介
Search
NobuhiroNakayama
April 13, 2023
Technology
1
1.6k
prismatixでのTerraform運用で活用しているツールの紹介
NobuhiroNakayama
April 13, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
11
3.8k
Microsoft Build 2025 技術/製品動向 for Microsoft Startup Tech Community
torumakabe
2
250
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
160
生成AIでwebアプリケーションを作ってみた
tajimon
2
140
~宇宙最速~2025年AWS Summit レポート
satodesu
1
1.8k
初めてのAzure FunctionsをClaude Codeで作ってみた / My first Azure Functions using Claude Code
hideakiaoyagi
1
210
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
140
ハノーバーメッセ2025座談会.pdf
iotcomjpadmin
0
160
Welcome to the LLM Club
koic
0
160
AIの最新技術&テーマをつまんで紹介&フリートークするシリーズ #1 量子機械学習の入門
tkhresk
0
130
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
170
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
180
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Music & Morning Musume
bryan
46
6.6k
Designing for Performance
lara
609
69k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Adopting Sorbet at Scale
ufuk
77
9.4k
The Pragmatic Product Professional
lauravandoore
35
6.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Transcript
prismatixでのTerraform運用で 活用しているツールの紹介 2023/04/11 prismatix事業部 Nakayama Nobuhiro
自己紹介 • 中山 順博(なかやま のぶひろ) • prismatix事業部 SREチーム • 2017年10月にJoin
• 2022年3月にprismatix事業部へ異動
Agenda • prismatixについて • Atlantisによるterraform plan / applyの自動化 • tflint
/ Terraform-docs / Trivyによる改善
本日の資料等について • 資料(ブログ)は公開します • デモで利用するGitHubリポジトリも参照できるようにしています • https://github.com/nakayamanobuhiro/day-one-terraform-demo
prismatixとは • EC / CRM特化型プラットフォーム • 注⽂や決済といった各機能のまとまりをマイクロサービス化 • EC /
CRMに必要な各種機能をAPIとして提供 • ヘッドレスコマースのバックエンド側 • クラスメソッドのB2B自社サービス ECサイトCRM基盤構築|戦略的OMOを実現するAPIプラットフォーム https://prismatix.jp/
prismatixの技術スタック • Development • Java, Spring Boot, docker, Elasticsearch (on
EC2), GitHub, CircleCI, IntelliJ IDEA • Infrastructure • AWS • ECS on Fargate, RDS (Aurora for MySQL), DynamoDB, Elasticache (Redis), Kinesis Stream, SQS, SNS, CloudWatch • Monitoring • Datadog, Sentry, pingdom
prismatixの(インフラにおける)特徴と課題 • AWSアカウントが多い • prismatixは「シングルテナント」でサービスを提供 • 顧客数×環境数(本番 / ステージング /
開発 / 他) • 現在、100以上のAWSアカウントを運用・管理 • 顧客毎に異なるバージョンを利用 / 必要な機能だけをマイクロサービスとして提供 • 構成のパターンが多い / アクセス数やその傾向も顧客毎に異なる • 複雑化したデプロイフロー • 2016年11月から事業スタート • 逐次拡張した事で複雑化 / やっていることに対して利用しているツールが多い AWSリソースの管理にTerraformを活用
Terraformとは? • クラウドインフラストラクチャを管理するためのオープンソースのイン フラストラクチャ自動化ツール • クラウドプロバイダ(AWS、Google Cloud、Microsoft Azureなど)を 含む、様々なプラットフォームに対応 •
インフラストラクチャをコードで記述し、そのコードをバージョン管理 することが可能
例:S3バケット provider "aws" { region = "ap-northeast-1" } resource "aws_s3_bucket"
"example" { bucket = "example-bucket" acl = "private" tags = { Terraform = "true" Environment = "dev" } }
Atlantisとは? • Terraformによるインフラストラクチャのプロビジョニングを自動化する ためのオープンソースのツール • Pull Requestをトリガーとして、Terraformのコードの変更を検知し、 terraform init /
fmt / plan / applyを自動化 • GitHub、GitLab、Bitbucketといったバージョン管理システムと連携 • Dockerイメージとして提供され、簡単なインストールと設定を行えばす ぐに利用することが可能 • AWS上にAtlantisの環境を構築するためのTerraformモジュールもある
Atlantisの利用イメージ(1)
Atlantisの利用イメージ(2) version: 3 automerge: true projects: - name: environment dir:
environment terraform_version: v1.4.4 autoplan: when_modified: ["*.tf"] enabled: true apply_requirements: [mergeable, approved] workflow: default workflows: default: plan: steps: - run: terraform fmt -check=true -diff=true -write=false - init - plan apply: steps: - apply
Atlantisの利用イメージ(3)
Atlantisのいいところ • PRを通したレビュー・承認により、誤った内容をapplyするリスクを低減 • PR上でのコミュニケーションを後で参照しやすい • Slackでの過去のやりとりを探すのはめんどくさい • ローカルでテスト(terraform plan)する必要がない
Demo(1) • GitHubに対してPull requestを作成 • terraform planの自動実行 • コメントによるterraform apply
• Approveは省略 ※Atlantisのサーバーは公式のTerraformモジュールで構築済&GitHubのリポジトリに対するWebhookの設定は実施済み
導入中のツール • 現在、GitHub Actionsで以下のツールを導入中 • tflint • tfsec Trivy •
terraform-docs
tflint • Terraformのコードを静的解析して、問題を検出するためのツール • 例えば、非推奨の記述、未使用の変数の検出、など • Terraformのベストプラクティスに基づいた検証ルールを提供 • プラグインによる拡張も可能 •
https://github.com/terraform-linters/tflint-ruleset-aws • CI/CDツールとの連携が可能
tfsec • Terraformのコードを静的解析して、セキュリティ上の問題を検出するた めのツール • 例えば、AWSリソースのパブリックアクセスの有効化、暗号化の不足、セキュリテ ィグループの設定の不備など • 多くのクラウドプロバイダーに対応 •
AWS、GCP、Azureなど • CI/CDツールとの連携が可能
tfsecからTrivyへの移行が推奨されてた • tfsec is joining the Trivy family • https://github.com/aquasecurity/tfsec/discussions/1994
• tfsec自体も当面はサポートされるっぽい?
Trivy • コンテナ環境(Dockerイメージ、Kubernetesオブジェクト)で使用され るパッケージや依存関係の脆弱性をスキャンするツール • 脆弱性スキャンだけでなく、ミス検知やセキュリティベストプラクティスのチェッ クも実行可能 • Terraformにも対応 •
スキャン結果を複数のフォーマット(JSON、HTMLなど)で出力可能 • シェルスクリプトやAPIを介して使用することができ、CI/CDツールと統 合しやすい
terraform-docs • Terraformのコードのドキュメンテーションを自動生成するためのツール • 各リソースの説明、変数、出力などをドキュメント化することが可能 • 複数の出力形式をサポート • Markdown、JSON、YAML、HCLなど •
CI/CDツールとの連携が可能
Demo(2) • GitHub actionsでPush時にこれらのツールを自動実行 • tflintで未使用の変数定義と非推奨の記述を検出 • tfsecでセキュリティリスクを検出 • terraform-docsでモジュールのリソース・変数・出力をドキュメント化
まとめ • prismatixでは100以上のAWSアカウントを管理 • 現時点では部分的にTerraformとatlantisを活用して構成管理・デプロイ を効率化 • 全面的なTerraformでの管理に移行しつつ、より効率的な運用を模索中 ダレカタスケテー
We are hiring! • クラウドインフラエンジニア リーダー候補 (自社サービスECプラットフォームの運用・改善) • クラウドインフラエンジニア (自社サービスECプラットフォームの運用・改善)
詳しくはWebで! https://careers.classmethod.jp/requirements/
参考情報 • Atlantis Documentation • https://www.runatlantis.io/docs/ • AWS Terraform module
which runs Atlantis on AWS Fargate • https://registry.terraform.io/modules/terraform-aws-modules/atlantis/aws/latest
参考情報 • terraform-linters/tflint • https://github.com/terraform-linters/tflint • terraform-linters/setup-tflint • https://github.com/terraform-linters/setup-tflint •
terraform-linters/tflint-ruleset-terraform • https://github.com/terraform-linters/tflint-ruleset-terraform
参考情報 • aquasecurity/tfsec • https://github.com/aquasecurity/tfsec • tfsec is joining the
Trivy family • https://github.com/aquasecurity/tfsec/discussions/1994 • aquasecurity/trivy • https://github.com/aquasecurity/trivy • aquasecurity/trivy-action • https://github.com/aquasecurity/trivy-action • Aqua Vulnerability Database • https://avd.aquasec.com/misconfig/aws
参考情報 • terraform-docs • https://terraform-docs.io/ • terraform-docs/terraform-docs • https://github.com/terraform-docs/terraform-docs/ •
terraform-docs/gh-actions • https://github.com/terraform-docs/gh-actions