Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン
Search
hiyanger
March 31, 2024
Technology
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン
2024/3/12 自社内にて実施
hiyanger
March 31, 2024
More Decks by hiyanger
See All by hiyanger
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
270
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
14
4.1k
(Amazon Bedrock 基礎)生成 AI の活用に導くシステム構築の基本とセキュリティの実装
hiyanger
4
150
CIer に在籍した 3年間 でやったこと
hiyanger
2
440
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
820
クラウド食堂とは?
hiyanger
0
490
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
1.6k
全身全霊で取り組んだ 2024 Qiita アドベントカレンダー
hiyanger
0
140
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
1
540
Other Decks in Technology
See All in Technology
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
330
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
0
200
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
0
300
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
300
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
200
安心して変更できるWebフロントエンドの作り方
pirosikick
5
2.8k
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.1k
事業課題から技術的負債に向き合う
sansantech
PRO
2
2k
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
870
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
400
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
260
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.3k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Abbi's Birthday
coloredviolet
4
10k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
260
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
Site-Speed That Sticks
csswizardry
13
1.5k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
890
Transcript
CONFIDENTIAL AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン アイレット株式会社
CONFIDENTIAL 予定 2 ① Terraform 基礎 ② 構成とか ③ ハンズオン
CONFIDENTIAL 3 1.Terraform基礎
CONFIDENTIAL Terraform 基礎 4 AWSリソースは一般的にAWSコンソールからぽちぽちしてデプロイするか、 AWS CLIを使って端末コンソールからデプロイしますが、Terraformは デプロイ情報をコード化し、まとめてAWSリソースをデプロイできるようになります。 インフラのコード化はIaCと呼ばれTerraformはその中の代表的なツールです。 コード化することのメリットとしては以下があげられます。
・GUI特有の操作ミスがなくなる ・リソースの複製、復元が容易 ・Git利用で変更管理が可能
CONFIDENTIAL 利用はとっても簡単で、 ざっくり下記の4点で可能です。 ①Terraformインストール ②AWSとの接続設定 ③コード記述 ④Terraformコマンドの実行 Terraform 基礎 利用方法
5
CONFIDENTIAL 6 2.パイプライン構成
CONFIDENTIAL パイプラインとは 7 コードを変更すればビルド、デプロイまで自動で流れてくれるシステムのことです。 CICDパイプラインと呼ばれたりもします。
CONFIDENTIAL パイプラインの構成 Terraform 8 CodeCommitでコードを編集すれば、CodePipeline→CodeBuildがTerraformを動作させる仕組みです。 CodeCommitはdevelopとmainという2つのブランチにわかれており、developを編集すれば開発、mainを編集すれば商用で Terraformが動作します。 今回使うのは developのみ!
CONFIDENTIAL Git運用 ブランチの使い方 9 下記の流れで各ブランチを更新します。 ① feature/機能名 ブランチ作成/プッシュ ② develop(検証)プルリクエスト/マージ
③ main(商用)プルリクエスト/マージ
CONFIDENTIAL Git運用 コード記述のルール 10 ここからは少し具体的なお話です。前述の通りパイプラインの運用にGit(CodeCommit)の運用が必要です。 コードは可読性からくる保守性の向上のため、一定の記述の統一性をもたせています。 そのため、コードは同系統のリソース記述を参考に記述するようにしてください。下記にポイントを記載します。 ・コメント ・Terraformリソース名 ・AWSリソース名
・環境変数の利用 ・ポリシーの外だし (同系統のポリシーが つくられる場合)
CONFIDENTIAL Git運用 コミットメッセージの書き方 11 featureブランチへのpush時にコミットメッセージ (どこのなにを更新したか)を求められます。 コミット履歴が一目でわかるよう、 下記の規則にのっとって記述してください。 ・prefix fix:バグ修正
add:新規(ファイル)機能追加 update:機能修正(バグではない) remove:削除(ファイル) ・記述例 [add] CICD [add] CodeBuild [fix]CodeBuild ReadOnelyAccess
CONFIDENTIAL Git運用 .gitignore 12 Gitでpushさせないファイルが記述されています。もし今 後該当するファイルが追加された場合は、ここに記述を追 加してください。 主にzipやterraform providerのファイルが対象になって います。
大容量のファイルを追加してしまうと、git cloneに時間 がかかってしまったりするのでそこも注意です。
CONFIDENTIAL ディレクトリ構成 13 modules →common(環境共通リソース) →network.tf(VPC、サブネット) ec2.tf s3.tf bucketpolicy(バケポリjson格納用) dev
→main.tf provider.tf(AWSのprofile名をここに記述) backend.tf(terraformのリソース管理ファイル.tfstateの格納先などを記述) variable.tf terraform.tfvars prd 今回は使わない(一応mainにマージするとBグループアカウントにあるパイプラインが動く) .gitignore(git push除外ファイル) ※各環境配下 buildspec_apply.yml(codebuild用ファイル) buildspec.plan.yml(codebuild用ファイル)
CONFIDENTIAL Terraform ハンズオン 14 1.端末plan用 terraform1.5.7インストール https://qiita.com/kamatama_41/items/ba59a070d8389aab7694 VSCodeに拡張もいれる「HashiCorp Terraform」 2.CodeCommit→cicd-tf→developブランチからfeatureブランチを作成
feature/XXX 3.IAMからcodecommit認証情報をダウンロードしてVSCodeでgit clone→作成したfeatureブランチに切り替え 4.ローカルからのplan用にAWSクレデンシャルをstg/provider.tfへ記述(push時にはコメントアウトする) 5.Terraformコード作成 https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/resources/codecommit_repository ※リソース名の頭には「dev」をつけましょう 「${env}」という記述でstg/terraform.tfvarsから取得できます。 (環境固有の変数が設定可能。環境共通変数はlocal変数で記述できる。変数の動きは重要なので余裕あれば適当に使ってみるとよいかも アカウント番号とか差し替えが起こりやすいものがでてきたら変数使ってみてください。コンフリクトしたらうまく調整。) ① VPC/サブネット作成 https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/resources/default_vpc できそうなら ② ①へEC2作成 https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/resources/instance できそうなら ③ S3へ①からフローログ設定(バケポリDeleteBucket禁止だけ記述。外出しで記述すること/環境名は変数で記述 P10) https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/data-sources/s3_bucket 6.端末からのterraform init/terraform planでデプロイ確認 7.VSCodeでステージング→コミット→git push 8.CodeCommitからdevelopへプルリクエスト→マージ(実施時に声をかけること) 9.Codepipelineにてterraform planを確認できたら手動でApproval(承認)する 10.terraform applyが正常に流れれば完了(最後にローカルからterraform destroyしとく) planの確認は自端末から、 実際のapplyはパイプラインから流します! (パイプラインを流すのは手間なので、planは さくっとterraformコマンドを流せる時端末も使う) ここまでみんな一緒にやる ここからはVPCだけで9までの流れみせて、 そのあとは各自やってもらう 各リソースはデプロイさえできれ ばOK。なので、EC2につながると かリソースレベルの動作確認は 基本不要。