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
420
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
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
570
クラウド食堂とは?
hiyanger
0
200
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
760
全身全霊で取り組んだ 2024 Qiita アドベントカレンダー
hiyanger
0
41
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
1
190
【AWS】EC2 基本アーキテクチャ(ハンズオン付き)
hiyanger
0
77
もういっそ AWS できなくても AWS できるようになるシステム作った
hiyanger
3
300
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
3
710
AWS 構成図を S3 にアップするだけで Terraform のコードを git push / pull request から terraform plan まで自動で動作するシステム
hiyanger
10
3.4k
Other Decks in Technology
See All in Technology
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
7
63k
AIと共同執筆してより質の高い記事を書こう
riyaamemiya
1
330
続・やっぱり余白が大切だった話
kakehashi
PRO
3
320
経済メディア編集部の実務に小さく刺さるAI / small-ai-with-editorial
nkzn
2
350
AI 코딩 에이전트 더 똑똑하게 쓰기
nacyot
0
540
テストって楽しい!開発を加速させるテストの魅力 / Testing is Fun! The Fascinating of Testing to Accelerate Development
aiandrox
0
170
Terraform にコントリビュートしていたら Azure のコストをやらかした話 / How I Messed Up Azure Costs While Contributing to Terraform
nnstt1
1
470
LINE 購物幕後推手
line_developers_tw
PRO
0
430
自動化の第一歩 -インフラ環境構築の自動化について-
smt7174
1
130
Previewでもここまで追える! Azure AI Foundryで始めるLLMトレース
tomodo_ysys
2
650
Computer Use〜OpenAIとAnthropicの比較と将来の展望〜
pharma_x_tech
6
1k
RubyKaigi NOC 近況 2025
sorah
1
780
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Statistics for Hackers
jakevdp
799
220k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
The World Runs on Bad Software
bkeepers
PRO
68
11k
BBQ
matthewcrist
88
9.6k
RailsConf 2023
tenderlove
30
1.1k
Six Lessons from altMBA
skipperchong
28
3.8k
Designing for Performance
lara
608
69k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
840
Practical Orchestrator
shlominoach
187
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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