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
1.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.6k
Cloudflareで取得したドメインをRoute53+ACMで管理する
tessy
1
300
EC2 AutoScalingでスケーリングポリシー設定を失敗してうまく行かなった件とその対策
tessy
0
850
Other Decks in Technology
See All in Technology
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
27
19k
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
9
4.5k
サブドメインテイクオーバー事例紹介と対策について
mikit
16
7.5k
20251102 WordCamp Kansai 2025
chiilog
1
550
こんな時代だからこそ! 想定しておきたいアクセスキー漏洩後のムーブ
takuyay0ne
3
120
Pythonで構築する全国市町村ナレッジグラフ: GraphRAGを用いた意味的地域検索への応用
negi111111
0
120
AIの個性を理解し、指揮する
shoota
3
640
次世代のメールプロトコルの斜め読み
hirachan
3
390
DMMの検索システムをSolrからElasticCloudに移行した話
hmaa_ryo
0
370
Logik: A Free and Open-source FPGA Toolchain
omasanori
0
140
Snowflakeとdbtで加速する 「TVCMデータで価値を生む組織」への進化論 / Evolving TVCM Data Value in TELECY with Snowflake and dbt
carta_engineering
0
160
進化する大規模言語モデル評価: Swallowプロジェクトにおける実践と知見
chokkan
PRO
3
470
Featured
See All Featured
Speed Design
sergeychernyshev
32
1.2k
Unsuck your backbone
ammeep
671
58k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
[RailsConf 2023] Rails as a piece of cake
palkan
57
6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
640
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
The Invisible Side of Design
smashingmag
302
51k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
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は順序を検知出来 ない • モジュールを活⽤する。 • とにかく検証を繰り返す!壊して何度も作り直す!
終わり