Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
prismatixでのTerraform運用で活用しているツールの紹介
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
NobuhiroNakayama
April 13, 2023
Technology
2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
prismatixでのTerraform運用で活用しているツールの紹介
NobuhiroNakayama
April 13, 2023
Other Decks in Technology
See All in Technology
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
740
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
210
しろおびから始める!ログ活用の第一歩
shumei_ito
0
960
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
360
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
230
フィンテック養成勉強会#68
finengine
0
150
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Navigating Team Friction
lara
192
16k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
Facilitating Awesome Meetings
lara
57
7.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
ラッコキーワード サービス紹介資料
rakko
1
5.4M
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
570
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Unsuck your backbone
ammeep
672
58k
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