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
310
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
もくもく会はなぜ良いのか?
hiyanger
0
42
AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン
hiyanger
0
72
AWS Codeシリーズで構築したTerraformパイプラインのユーザー側IAM
hiyanger
0
120
AWS Codeシリーズを使った TerraformのCICDパイプラインの作り方
hiyanger
1
480
技術領域や裁量を飛躍させる転職
hiyanger
0
37
AWS環境にTenableしたら わらわら問題がでた話
hiyanger
0
97
IaC(CloudFormaitonでログ運用と監視システムを作ってみて)
hiyanger
0
85
CloudFormationとTerraformを 比較してみた
hiyanger
1
660
AWS CloudFormationで作るログ運用と監視システム
hiyanger
0
140
Other Decks in Technology
See All in Technology
リアルお遍路+SORACOM IoT
ozk009
1
140
20240912 JJUGナイトセミナー
mii1004
0
140
やってやろうじゃないかメカアジャイル! / Let's do it, mechanical agile!
psj59129
1
690
「自動テストのプラクティスを効果的に学ぶためのカードゲーム」 ( #sqip2024 )
teyamagu
PRO
2
180
Agile in Automotive Industry, puzzles and lights.
hiranabe
3
1.4k
Cloud Run と GitHub Template Repository による軽量なアプリケーションプラットフォーム/ #nikkei_tech_talk
nikkei_engineer_recruiting
0
110
内製化を目指す事業会社が、システム開発会社と共に進める「開発生産性改善」の取り組み事例 #devsumi
yuwji
1
120
PDF Viewer作成の今までとこれから
hunachi
0
480
Classmethod AI Talks(CATs) #1 司会進行スライド(2024.09.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol1_2024-09-19
shinyaa31
0
140
タイミーのレコメンドにおける ABテストの運用
ozeshun
1
200
Google CloudのLLM活用の選択肢を広げるVertex AIのパートナーモデル
nayuts
0
130
テスト”ケース”駆動開発 で手戻りをなくそう
ryohma0510
0
330
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
21
3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
38
9.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Raft: Consensus for Rubyists
vanstee
136
6.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Facilitating Awesome Meetings
lara
49
6k
Testing 201, or: Great Expectations
jmmastey
36
7k
Making Projects Easy
brettharned
113
5.8k
How to train your dragon (web standard)
notwaldorf
85
5.6k
GraphQLとの向き合い方2022年版
quramy
43
13k
The Cost Of JavaScript in 2023
addyosmani
42
5.7k
The Invisible Customer
myddelton
119
13k
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