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.7k
prismatixでのTerraform運用で活用しているツールの紹介
NobuhiroNakayama
April 13, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
衛星画像超解像化によって実現する2D, 3D空間情報の即時生成と“AI as a Service”/ Real-time generation spatial data enabled_by satellite image super-resolution
lehupa
0
130
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
4
460
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
370
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
4
360
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
1
160
AWS IoT 超入門 2025
hattori
0
290
三菱電機・ソニーグループ共同の「Agile Japan企業内サテライト」_2025
sony
0
130
社内報はAIにやらせよう / Let AI handle the company newsletter
saka2jp
8
1.3k
社内お問い合わせBotの仕組みと学び
nish01
1
540
Git in Team
kawaguti
PRO
3
330
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
3
5.5k
"プロポーザルってなんか怖そう"という境界を超えてみた@TSUDOI by giftee Tech #1
shilo113
0
170
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Building Adaptive Systems
keathley
43
2.8k
Rails Girls Zürich Keynote
gr2m
95
14k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
Designing for humans not robots
tammielis
254
26k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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