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
DevelopersIO 2022 俺のTerraform Pipeline
Search
takakuni
July 29, 2022
Technology
0
1.5k
DevelopersIO 2022 俺のTerraform Pipeline
takakuni
July 29, 2022
Tweet
Share
More Decks by takakuni
See All by takakuni
巷で話題の SOCI についてのお話
takakuni
0
92
NW-JAWS #11 re:Cap 2023 Amazon Q network trouble shooting について
takakuni
0
900
re:Invent 2023 コンテナイメージスキャンどうなった!?
takakuni
0
1.4k
AWS Engineer Meetsup 2023 登壇資料
takakuni
0
3.1k
JAWS-UG 朝会 #43 登壇資料
takakuni
0
890
JAWS-UG 横浜 #54 資料
takakuni
0
540
JAWS-UG 朝会 #40 登壇資料
takakuni
0
870
JAWS-UG 朝会 #36 登壇資料
takakuni
3
1.9k
JAWS-UG 朝会 #33 登壇資料
takakuni
0
1.5k
Other Decks in Technology
See All in Technology
地理空間データ可視化・解析・活用ソリューション Pacific Spatial Solutions (PSS)
pacificspatialsolutions
0
300
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
150
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
130
MixIT 2024 - Pulumi : Gérer son infra avec son langage de programmation préféré
ju_hnny5
0
110
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
880
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
4
590
BPStudyの200回を中心にIT業界を振り返る。そしてこれから
haru860
3
310
2024春 注目のWeb系 OSS & SaaS 3選
makies
0
120
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
140
JAWS-UG Bedrock Claude Night
yamahiro
3
640
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
240
AWS学習者向けにAzureの解説スライドを作成した話
handy
3
110
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
79
43k
Git: the NoSQL Database
bkeepers
PRO
422
63k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
227
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
648
58k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
The Cult of Friendly URLs
andyhume
74
5.7k
Navigating Team Friction
lara
178
13k
Docker and Python
trallard
34
2.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
The Cost Of JavaScript in 2023
addyosmani
16
3.9k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Producing Creativity
orderedlist
PRO
337
39k
Transcript
俺のTerraform Pipeline AWS事業本部コンサルティング部 たかくに
2 ⾃⼰紹介 名前︓たかくに 所属︓AWS事業本部コンサルティング部 ⼊社︓2022年1⽉にジョイン 好きなAWSサービス︓Amazon VPC Twitter︓@takakuni_
3 アジェンダ ・お題 ・私の考えたアーキテクチャ ・ワークフローをざっくり解説 ・アーキテクチャ解説 ・詰まった点やこだわった点 ・まとめ
4 お題 ある企業ではAWSリソースのデプロイツールでTerraformを 採⽤しています。 企業ではさらなるIaC化推進の⼀環として、デプロイフローを CI/CDで実装することを検討しています。 あなたはこのCI/CDパイプラインをどのように設計しますか︖
5 私の⾒解 唯⼀解はないと思います。 (みんな違ってみんないい)
6 ツールの⼀例
7 私の考えたアーキテクチャ
8 私の考えたアーキテクチャ
9 ワークフロー
10 ワークフロー
11 ワークフロー
12 ワークフロー
13 ワークフロー
14 ワークフロー
15 ワークフロー
16 ワークフロー
17 ワークフロー
18 ワークフロー
19 アーキテクチャ解説
20 アーキテクチャ解説
21 アーキテクチャ解説
22 アーキテクチャ解説 (Lambda) CodeBuild (tfsec)の実⾏内容 exclude.ymlの例 tfsec -s --no-color --config-file
exclude.yml . tfsec -s --no-color --config-file exclude.yml . --format junit > reports/tfsec/report.xml --- exclude: # Ignoreしたいルールを記載 - aws-iam-enforce-mfa - aws-vpc-add-description-to-security-group
23 アーキテクチャ解説
24 アーキテクチャ解説 (tfsec) なぜ、Secrets Managerを使うのか →「Docker Hubのイメージ取得制限」を回避するため 添付画像:docker docsより引用
25 解決⽅法 ① Secrets Managerを使⽤して、認証ユーザー経由でイメー ジを取得する。 ②NAT Gatewayを使⽤して、IPアドレスを変更してイメージ を取得する。 ③イメージをECRに保存して、ECRからイメージを取得する。
26 解決⽅法 (Secrets Manager) ・Docker Hubへログインして認証 ユーザーとしてイメージを取得 ・「レジストリの認証情報」では、 Secrets Managerが必要
添付画像:AWS ナレッジセンターより引用
27 解決⽅法 (NAT Gateway)
28 解決⽅法 (ECR)
29 解決⽅法 ① Secrets Managerを使⽤して、認証ユーザー経由でイメー ジを取得する。 ②NAT Gatewayを使⽤して、IPアドレスを変更してイメージ を取得する。 ③イメージをECRに保存して、ECRからイメージを取得する。
30 解決⽅法 ① Secrets Managerを使⽤して、認証ユーザー経由でイメー ジを取得する。 →新しいイメージを使いたい。コスト最適化。 ②NAT Gatewayを使⽤して、IPアドレスを変更してイメージ を取得する。
→NAT Gatewayの使⽤⽤途が「CI/CDパイプラインに限る」 場合、コスパが悪い。 ③イメージをECRに保存して、ECRからイメージを取得する。 →バージョン管理が⼤変。古いイメージの使い回しの恐れ。
31 解決⽅法 “Too Many Requests.” でビルドが失敗する…。AWS CodeBuild で IP ガチャを回避するために
Docker Hub ロ グインしよう!という話 Docker オフィシャルイメージが ECR Public で利用可能 になりました #reinvent
32 アーキテクチャ解説
33 アーキテクチャ解説
34 アーキテクチャ解説 printenvコマンドの出⼒結果(⼀部抜粋)
35 アーキテクチャ解説
36 アーキテクチャ解説
37 アーキテクチャ解説 [AWS × Terraform] plan できるけど apply できない GitOps
な IAM ユーザーポリシーの設定方法 ・アーティファクト⽤のS3バケットへ の操作権限 ・S3、DynamoDBの暗号化で使⽤する KMSキーへの操作権限 ・CloudWatch Logsへのビルドログの 配信権限
38 まとめ
39 まとめ ・なるべくAWSリソースを使⽤した設計をご紹介 ・CodeBuildからDocker Hubへのイメージプルには注意 ・CodePipelineでは「名前空間」で値の受け渡しが可能 ・terraform planのIAMロールは「ReadOnlyAccess」が有効 TerraformのCI/CDパイプラインを実装してみた
None