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
TerraformでEC2 Auto Scaling構築してみた
Search
tessy
July 25, 2023
Technology
4
1k
TerraformでEC2 Auto Scaling構築してみた
Terraformを利用して、EC2 Auto Scalingを構築してみました。
Terraformの第一歩としての説明や、ベストプラクティス的なフォルダ構成などを簡単に説明しています。
tessy
July 25, 2023
Tweet
Share
More Decks by tessy
See All by tessy
ALBがついに対応したmTLS認証でトラストストア、パススルーを検証してみた
tessy
1
3.5k
Cloudflareで取得したドメインをRoute53+ACMで管理する
tessy
0
260
EC2 AutoScalingでスケーリングポリシー設定を失敗してうまく行かなった件とその対策
tessy
0
840
Other Decks in Technology
See All in Technology
人と組織に偏重したEMへのアンチテーゼ──なぜ、EMに設計力が必要なのか/An antithesis to the overemphasis of people and organizations in EM
dskst
5
610
RAID6 を楔形文字で組んで現代人を怖がらせましょう(実装編)
mimifuwa
0
300
Evolution on AI Agent and Beyond - AGI への道のりと、シンギュラリティの3つのシナリオ
masayamoriofficial
0
170
Goss: Faiss向けの新しい本番環境対応 Goバインディング #coefl_go_jp
bengo4com
0
1.4k
KiroでGameDay開催してみよう(準備編)
yuuuuuuu168
1
130
Goでマークダウンの独自記法を実装する
lag129
0
210
Yahoo!ニュースにおけるソフトウェア開発
lycorptech_jp
PRO
0
350
AIドリブンのソフトウェア開発 - うまいやり方とまずいやり方
okdt
PRO
9
600
サービスロボット最前線:ugoが挑むPhysical AI活用
kmatsuiugo
0
190
トヨタ生産方式(TPS)入門
recruitengineers
PRO
2
220
Product Management Conference -AI時代に進化するPdM-
kojima111
0
220
Go で言うところのアレは TypeScript で言うとコレ / Kyoto.なんか #7
susisu
6
1.8k
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
The Language of Interfaces
destraynor
160
25k
Done Done
chrislema
185
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
Building Adaptive Systems
keathley
43
2.7k
The World Runs on Bad Software
bkeepers
PRO
70
11k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Agile that works and the tools we love
rasmusluckow
329
21k
Documentation Writing (for coders)
carmenintech
73
5k
Transcript
EC2 Auto Scaling ⽇本IBM ⼿嶋 達也 2023/7/25 で 作成してみた。
⾃⼰紹介 @tterima Teshima-Tatsuya 主なAWS資格
IaC(Infrastructure As Code)であり、インフラ環境(主にCloud)をコード化して管理可能なOSS HCL(Hashicorp Configuration Language)という独⾃の⾔語で設定を記述する。 ▪公式サイト https://www.terraform.io/ 主にローカルにterraformコマンドをインストールして実⾏する。 Terraform
Cloudというものもある。
Terraformで出来ること 各種プロバイダを利⽤してインフラを構築することが出来る。 ▪プロバイダ⼀覧 https://registry.terraform.io/browse/providers 各種Cloudやローカルリソース なども扱える ▪AWSプロバイダ https://registry.terraform.io/providers/hashicorp/aws/latest
公式サイトの⾒⽅ Resources →作成対象 Data Sources →既存のリソース情報を参照
初期設定 下記から環境に応じたインストールを⾏う。 • https://www.terraform.io/downloads Macの場合はこれだけ。WindowsはexeをDL可能 各種プロバイダに応じた設定を⾏う。
Terraformはじめの⼀歩 〜サブネットを構築してみる〜
サブネット構築(構成) • VPC内にサブネットが⼀つ存在する例を作成する。
サブネット構築(初期設定) TerraformをAWS上で扱うためには、terraformが必要な権限 を有しているアカウントを利⽤する必要がある。 Terraformはデフォルトでは「~/.aws/credentials」の情報を 利⽤するため、aws cliをインストールして「aws configure」 を実⾏して初期設定する。 もしくは環境変数にアカウント情報を追加する
サブネット構築(フォルダ構成) . └ main.tf
サブネット構築(リソース定義) プロバイダ設定 VPCリソース サブネットリソース Terraformはコマンド実⾏するフォルダに存在する*.tfファイルを⾛査する。 今回は1ファイルだが、上記の設定をファイル分割しても良いし、同じファイルにしても良 い。 ⾒通しを良くするためには、ファイル分割をするのが良い。
サブネット構築(リソース反映) • terraform init • terraformで利⽤するプロバイダ、モジュール等を初期設定
サブネット構築(リソース反映) • terraform plan • 実⾏計画の表⽰(実⾏時エラーは防げないため、過信は禁物) • terraform apply •
環境への反映 未設定の部分は デフォルト値が⼊る ARNなど、実際に作成した後に 確定する値は作成するまで不明
サブネット構築(リソース反映) 反映後は「stateファイル」と呼ばれるファイルに実際の結果 が反映される。
State(構成ファイル)について Terraformは実⾏結果をstateと呼ばれるファイルに記録する。 この記録と現在の設定ファイルをチェックして、差分が存在する場合は差分反映を⾏ う。 同時に、実際のインフラ環境のチェックもして、差分がある場合は、設定ファイルを 基に正しい設定に戻すことも可能。 なお、このファイルには機密データが⼊り込む場合があるため、 絶対にパブリックリポジトリ等にアップしないこと!! (githubとかに置くと簡単に侵⼊されちゃうよ) デフォルトの設定だとローカルにファイルを保存するが、複数⼈で作業する場合は、
同⼀のStateを⾒る必要があるため、通常S3等に配置し、DynamoDBで実⾏時の排他 制御を⾏う。
EC2 Auto Scalingを構築する
EC2 Auto Scaling(構成)
EC2 Auto Scaling(フォルダ構成) . ├── env │ └── prod │
├── backend.tf │ ├── main.tf │ ├── provider.tf │ └── variables_vpc.tf │ └── test │ ├── …. └── modules ├── elb ├── iam ├── s3 ├── vpc │ ├── ….tf └── web-server ├── ….tf mainでモジュール呼び出し 変数はvariables_XXX 設定情報などはその他ファイル それぞれのまとまりをmoduleとして表現 して、環境ごとに同じ設定を使う。 変数でそれぞれの環境の差分を管理してい く
EC2 Auto Scaling(各ファイル抜粋) main.tf variables_vpc.tf aws_subnet.tf これらを作成し、main.tfがあるフォルダに移動して、以下を実⾏すると、 あっという間に環境の出来上がり • terraform
plan • terraform apply
Terraform(その他IaaC)を上⼿に利⽤するために。 • 対象のリソースで何を作成する必要があるのかをコンソール上な どで把握する。 • 作ってみたら、ステップバイステップでapplyまで実施して、 都度、エラーチェック等を⾏う。 • リソース間の作成順序を保つために、「vpc_id =
aws_vpc.main.id」のようにほかリソースを参照する • 、「vpc_id = “xxxxxx”」のような書き⽅だとterraformは順序を検知出来 ない • モジュールを活⽤する。 • とにかく検証を繰り返す!壊して何度も作り直す!
終わり