😄
[Terraform]: Terraformで学習用EC2環境を立ち上げるメモ
[Terraform]: Terraformで学習用EC2環境を立ち上げるメモ
Terraformでただの学習用のEC2環境を立ち上げるコードを書いたのでコードと気になったプロパティの意味を調べたメモ
コード
resource "aws_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
enable_dns_support = true
tags = {
Name = "main"
}
}
resource "aws_subnet" "subnet" {
vpc_id = aws_vpc.vpc.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-1a"
# パブリックIPの自動割り当て
map_public_ip_on_launch = true
}
resource "aws_internet_gateway" "igw" {
vpc_id = aws_vpc.vpc.id
}
resource "aws_route_table" "rtb" {
vpc_id = aws_vpc.vpc.id
}
resource "aws_route" "route" {
route_table_id = aws_route_table.rtb.id
destination_cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.igw.id
}
resource "aws_route_table_association" "rtba" {
subnet_id = aws_subnet.subnet.id
route_table_id = aws_route_table.rtb.id
}
resource "aws_security_group" "sg" {
name = "ec2-sg"
vpc_id = aws_vpc.vpc.id
# インバウントルール (SSH)
ingress {
# ポートの範囲を指定する
# 同じ値であれば単一ポートのみ許可される
# 範囲の開始ポート
from_port = 22
# 範囲の終了ポート
to_port = 22
protocol = "tcp"
# IPアドレスの範囲
cidr_blocks = ["0.0.0.0/0"]
}
# インバウンドルール (HTTP)
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# アウトバンドルール (全許可)
egress {
from_port = 0
to_port = 0
# -1は全プロトコル
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
data "aws_ami" "amazon_linux" {
# 最新のAMIを取得
most_recent = true
# AmazonのアカウントID
owners = ["137112412989"]
# AMI名でフィルタリングする
filter {
name = "name"
values = ["al2023-ami-2023*-kernel-*-x86_64"]
}
# アーキテクチャで〃
filter {
name = "architecture"
values = ["x86_64"]
}
# 仮想化タイプで〃
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
resource "aws_instance" "main" {
# 使用するAMI
ami = data.aws_ami.amazon_linux.id
# 使用するインスタンスタイプ
# t2.microは無料枠
instance_type = "t2.micro"
# 配置するサブネットのID
subnet_id = aws_subnet.subnet.id
# 関連付けるセキュリティグループのID
vpc_security_group_ids = [aws_security_group.sg.id]
# SSHキーペア名
key_name = "ec2-key"
# 起動時に実行するスクリプト
user_data = <<-EOF
#!/bin/bash
yum update -y
EOF
tags = {
Name = "main-ec2-instance"
}
}
もしこのコードを使われる方がいらっしゃる場合は以下の手順に従ってください。
- コードをコピーする
- main.tfにペーストする
- (optional)
sed '/^\s*#/d' main.tfを実行してコメントアウトを削除する
最後に
間違っていることがあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion