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
500
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
14
3.8k
(Amazon Bedrock 基礎)生成 AI の活用に導くシステム構築の基本とセキュリティの実装
hiyanger
4
110
CIer に在籍した 3年間 でやったこと
hiyanger
2
270
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
750
クラウド食堂とは?
hiyanger
0
380
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
1.3k
全身全霊で取り組んだ 2024 Qiita アドベントカレンダー
hiyanger
0
96
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
1
410
【AWS】EC2 基本アーキテクチャ(ハンズオン付き)
hiyanger
0
200
Other Decks in Technology
See All in Technology
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
190
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
440
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
110
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
250
配列に見る bash と zsh の違い
kazzpapa3
3
170
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
780
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
190
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
4
430
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
340
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
680
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
The Limits of Empathy - UXLibs8
cassininazir
1
220
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
Agile that works and the tools we love
rasmusluckow
331
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Ethics towards AI in product and experience design
skipperchong
2
200
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
150
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
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