【入門#8】TerraformでEC2を作ろう
今回の目標
Terraformを使って、EC2を作ります。
将来的には下記のシステム構成図になるように進めていきますが、今回はその中のEC2に絞って解説します。
◯今回のシステム構成図の全体像
関連記事:https://zenn.dev/alt_tanuki/articles/7c1f97da33496b
前提
下記記事で作成したサブネット/セキュリティグループ/IAMロールを使用していきます。
【入門#4】TerraformでAWS基礎のネットワーク(VPC/サブネット等)を作ろう
【入門#5】Terraformでセキュリティグループを作ろう
【入門#6】TerraformでIAMロール(EC2用)を作ろう
ではやっていきましょう!
EC2を書いていきます
よくある例として、EC2はcompute.tfに記載していきます。
compute.tfを手動作成し、下記を記述していきます。
# EC2
resource "aws_instance" "cask_tokyo_ec2" {
ami = "ami-0b6e7ccaa7b93e898"
instance_type = "t2.micro"
key_name = "cask-tokyo-ec2"
# network
subnet_id = aws_subnet.cask_tokyo_ec2_subnet_public1.id
associate_public_ip_address = true
vpc_security_group_ids = [aws_security_group.cask_tokyo_ec2_sg_ec2.id]
# IAM Role
iam_instance_profile = aws_iam_instance_profile.cask_tokyo_ec2_profile_ec2.name
# Storage
root_block_device {
volume_size = 8
volume_type = "gp3"
iops = 3000
throughput = 125
delete_on_termination = true
}
# Tag
tags = {
Name = "cask-tokyo-ec2"
}
}
各パラメータ解説
AWSの画面になぞらえて解説します。
AMI
◯ソース
ami = "ami-0b6e7ccaa7b93e898"
◯AWSコンソール
選択したいAMIのIDを探し、amiに貼り付けていきます。
インスタンスタイプ
◯ソース
instance_type = "t2.micro"
◯AWSコンソール
キーペア
ここだけ少し変わっていて、キーペアはあらかじめAWSコンソールで手動作成が必要です。
そのキー名を指定する形となります。
◯ソース
key_name = "cask-tokyo-ec2"
◯AWSコンソール
ネットワーク設定
VPCはサブネットIDを指定することで、サブネットのVPCが設定されます。
セキュリティグループは複数の紐づけも可能です。
◯ソース
# VPC / サブネット
subnet_id = aws_subnet.cask_tokyo_ec2_subnet_public1.id
# パブリックIPの有効/無効
associate_public_ip_address = true
# セキュリティグループ
vpc_security_group_ids = [aws_security_group.cask_tokyo_ec2_sg_ec2.id]
◯AWSコンソール
IAMロール
IAMロール作成時に一緒に作ったプロファイル名をしていします。
◯ソース
iam_instance_profile = aws_iam_instance_profile.cask_tokyo_ec2_profile_ec2.name
◯AWSコンソール
ここだけインスタンス作成画面でなく、作成後に設定できるものです。
ストレージ
デフォルト設定をそのままいれるくらいです!
◯ソース
root_block_device {
volume_size = 8
volume_type = "gp3"
iops = 3000
throughput = 125
delete_on_termination = true
}
◯AWSコンソール
実行してみよう!
terraform applyを行うと。
おお!!起動できてる!!
やったー
各設定値も設定どおりにできている!めでたし
ということで以上!
※今回は基本設定のみのため、高度な設定は割愛しています
下記の記事を目次として、続きをどんどん構築を行っていきますので、今回作成したS3バケットの使い方などが気になる方はぜひ見に来てください!
Discussion