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
Codeシリーズで作るTerraformのCICDパイプラインの概要
Search
hiyanger
January 16, 2024
Technology
2
450
Codeシリーズで作るTerraformのCICDパイプラインの概要
2024/1/18 jaws朝会
https://jawsug-asa.connpass.com/event/301825/
hiyanger
January 16, 2024
Tweet
Share
More Decks by hiyanger
See All by hiyanger
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
12
3k
(Amazon Bedrock 基礎)生成 AI の活用に導くシステム構築の基本とセキュリティの実装
hiyanger
4
81
CIer に在籍した 3年間 でやったこと
hiyanger
2
130
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
660
クラウド食堂とは?
hiyanger
0
250
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
960
全身全霊で取り組んだ 2024 Qiita アドベントカレンダー
hiyanger
0
64
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
1
280
【AWS】EC2 基本アーキテクチャ(ハンズオン付き)
hiyanger
0
110
Other Decks in Technology
See All in Technology
LLMで構造化出力の成功率をグンと上げる方法
keisuketakiguchi
0
780
Agent Development Kitで始める生成 AI エージェント実践開発
danishi
0
150
JAWS AI/ML #30 AI コーディング IDE "Kiro" を触ってみよう
inariku
3
360
ロールが細分化された組織でSREと協働するインフラエンジニアは何をするか? / SRE Lounge #18
kossykinto
0
210
猫でもわかるQ_CLI(CDK開発編)+ちょっとだけKiro
kentapapa
0
3.4k
【CEDEC2025】『Shadowverse: Worlds Beyond』二度目のDCG開発でゲームをリデザインする~遊びやすさと競技性の両立~
cygames
PRO
1
350
金融サービスにおける高速な価値提供とAIの役割 #BetAIDay
layerx
PRO
1
820
Amazon Bedrock AgentCoreのフロントエンドを探す旅 (Next.js編)
kmiya84377
1
140
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
6.3k
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
120
Lambda management with ecspresso and Terraform
ijin
2
160
【OptimizationNight】数理最適化のラストワンマイルとしてのUIUX
brainpadpr
2
470
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Site-Speed That Sticks
csswizardry
10
760
Side Projects
sachag
455
43k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Visualization
eitanlees
146
16k
How STYLIGHT went responsive
nonsquared
100
5.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
750
Embracing the Ebb and Flow
colly
86
4.8k
Six Lessons from altMBA
skipperchong
28
3.9k
Transcript
Codeシリーズで作る TerraformのCICDパイプライン概要
プロフィール 名前:檜山 準(ひやま じゅん) 所属:I◯◯◯ お仕事:クラウドエンジニア(設計、構築、運用保守) https://twitter.com/hiyanger https://qiita.com/hiyanger https://zenn.dev/hiyanger 最近よく使う技術:AWS、IaC、CI/CD
出身:栃木県 よかったら フォローしてね!
もくじ 全体構成 この構成にした理由 各環境のデプロイ方法 クロスアカウント 承認フェーズ 実際に運用して困ったこと
全体構成
全体構成 黒線:パイプラインのメイン動作 緑線:アーティファクト系の動作 オレンジ線:Terraformのバックエンド動作
なんでこの構成なの?
なんでこの構成? ・パイプライン:メンバーや環境間でコードとAWSリソースの整合性を常にとれる状態にできる。 ・CodeCommitを使う理由:コードをリソースと同じくAWS内で完結することができる(セキュア) ・クロスアカウント:検証と商用でリポジトリをわける必要がなくGit管理がしやすい
各環境へのデプロイ
検証環境へのデプロイ developブランチにマージすると検証環境のパイプラインが動作し、検証環境にリソースがデプロイされる
商用環境へのデプロイ(クロスアカウント) mainブランチにマージすると商用環境のパイプラインが動作し、商用環境にリソースがデプロイされる
クロスアカウント
クロスアカウント ・検証CodeCommit用ロールに商用CodePipelineロールからのAssumeRoleを許可 ・商用アーティファクトS3にKMSを設定し、検証CodeCommitからのPutを許可 (アーティファクトはterraformのarchive_fileのようなterraform planでファイルに変更が入る場合に使われる) ※コンソール上から不可の設定が多々あり。AWS CLIから設定して、それをTerraformに組み込む
承認フェーズ
承認フェーズ(IAMポリシー) ・developからmainへのマージはIAMポリシーの設定で管理グループしかマージできない ・商用のplan→apply間のCodePipeline/Approvalは管理グループしか承認できない
承認フェーズ CodePipeline 実際のパイプラインはこんな感じ。 Approvalフェーズまできたら 承認してあげればOK!
実際に運用して困ったこと
実際に運用して困ったこと × 改善が難しい デプロイは基本的にコードを経由する必要があるため、構築の瞬発力が落ちる IaCの特性上やむを得ない。どうしても急ぎなら手動とかで。 plan/applyでエラーが起こると構築が止まってしまう planはローカルで。applyまで検証したいなら別環境とかでやる。 手動変更やローカルから直applyされると、都度確認が必要になる テスト中はやむを得ない手動変更とかが起きる。 その間はパイプラインを止めておくなど、うまくスケジュールする。
共通リソースがあるので、商用だけ一部先行着手とかが難しい developとmainは共通化されるので共通リソースも中途半端に デプロイされてしまう。先行してやるなら手動やローカルから流す。 ※チーム構成 全体4名(ガッツリ書く人2名、そこそこ書く人2名、Lambda等は別部隊で記述) ◯ 改善が可能 terraformを使えるメンバーが少なかったので、applyの依頼が集中 少なくともインフラチームはみんな使えた方がいい。 記述方法が個人間で差がでる 事前に軽い規約は作ったが、まだまだ弱かった。 開発同様、より強い規約の制定が必要。
Thanks!! 実際に使ってみて、いろいろ問題点はありましたが、大規模構 築やるならパイプラインの存在はほぼ必須かなと思いました。 最初はわちゃわちゃしますが、慣れればそれなりに運用も安定 しました。後続環境のデプロイが一瞬なのもの爽快です。 ぜひ本パイプラインの構築を検討してみてください! 本資料 https://speakerdeck.com/hiyanger/codesirizudezuo-ruterraf ormnocicdpaipurain https://twitter.com/hiyanger
https://qiita.com/hiyanger https://speakerdeck.com/hiyanger https://zenn.dev/hiyanger