📘

【入門#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バケットの使い方などが気になる方はぜひ見に来てください!

https://zenn.dev/alt_tanuki/articles/7c1f97da33496b

Discussion