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
320
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
テックブログのレベルを上げるために 抑えておくべき3つのポイント
hiyanger
0
69
もくもく会はなぜ良いのか?
hiyanger
0
54
AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン
hiyanger
0
88
AWS Codeシリーズで構築したTerraformパイプラインのユーザー側IAM
hiyanger
0
130
AWS Codeシリーズを使った TerraformのCICDパイプラインの作り方
hiyanger
1
510
技術領域や裁量を飛躍させる転職
hiyanger
0
46
AWS環境にTenableしたら わらわら問題がでた話
hiyanger
0
100
IaC(CloudFormaitonでログ運用と監視システムを作ってみて)
hiyanger
0
92
CloudFormationとTerraformを 比較してみた
hiyanger
1
720
Other Decks in Technology
See All in Technology
AIとともに歩んだライブラリアップデートの道のり/ vue-fes-japan-2024-link-and-motivation
lmi
2
120
運営11年目タイトルを守る最強の盾の有効性と活用法
mixi_engineers
PRO
2
110
ReSTIRの数理と実装 (rtcamp10)
yumcyawiz
0
130
不要なリソースを自動で定期的に整理する方法 ~Sandboxアカウントのコストを削減しよう!~
amixedcolor
4
200
怖くないオフライン機能開発 〜基本的な技術で実現する現場向けオフライン機能 / Developing offline functions without fear ~ Offline functions for the field realized with basic technology
kaminashi
1
150
いまいまMySQL2024 @ OSC Nagaoka
sakaik
3
240
Microsoft 365 でデータセキュリティを強化しよう
sophiakunii
2
430
Amazon CloudWatchで小さく始めるWebサービスのオブザーバビリティ / How to start Observability for Web Sevices with Amazon CloudWatch
sms_tech
3
160
プログラミング写経のすすめ
natsutan
0
110
スタサプ ForSCHOOLアプリのシンプルな設計
recruitengineers
PRO
3
770
塩野義製薬様のAWS統合管理戦略:Organizations設計と運用の具体例
tkikuchi
0
290
今日から始める技術的負債の解消
leveragestech
3
420
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
Thoughts on Productivity
jonyablonski
67
4.2k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
The Cult of Friendly URLs
andyhume
77
6k
A Modern Web Designer's Workflow
chriscoyier
692
190k
Building Applications with DynamoDB
mza
90
6k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
It's Worth the Effort
3n
183
27k
Why Our Code Smells
bkeepers
PRO
334
57k
How to train your dragon (web standard)
notwaldorf
87
5.6k
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