はじめに
まず、大前提として、ここから先は現在キャッチアップしているTerraformを使いながら、さまざまなコードを自分用に書いていきます。
※補足事項
そのため、内容は完全に自分向けとなっています。
また、このブログ投稿サイトのプラットフォームについても、自分自身の備忘録としてメモを残す場として活用していきたいと考えています。このプラットフォーム上に記録を積み重ねていく予定です。
あらかじめ、その点をご理解いただければ幸いです。
実際にコードで行っていること
このTerraformコードは、AWS上でWindowsサーバー環境を構築するための設定を記述しています。以下は、その構成要素と設定内容の説明です。
-
AWSプロバイダーの設定
-
リージョン:
ap-northeast-1(東京リージョン)を指定しています。 - この設定により、リソースは東京リージョンに作成されます。
-
リージョン:
-
VPCの作成
-
CIDRブロック:
10.0.0.0/16を設定し、大規模なプライベートネットワークを構築。 - DNSサポート: DNSサポートとDNSホスト名を有効化しています。
-
CIDRブロック:
-
サブネットの作成
-
パブリックサブネット:
10.0.1.0/24のCIDRブロックを使用し、インスタンスがパブリックIPアドレスを取得できるように設定。
-
パブリックサブネット:
-
インターネットゲートウェイの作成
- 役割: VPCをインターネットに接続するためのゲートウェイを作成。
-
ルートテーブルの設定
-
デフォルトルート:
0.0.0.0/0(すべてのトラフィック)をインターネットゲートウェイにルーティング。
-
デフォルトルート:
-
サブネットとルートテーブルの関連付け
- パブリックサブネットに、上記で作成したルートテーブルを関連付け。
-
セキュリティグループ(SG)の設定
-
RDPアクセスの許可:
-
ポート番号:
3389(RDP用)。 -
送信元:
0.0.0.0/0(全IPアドレスを許可)。
-
ポート番号:
-
ICMP(Ping)の許可:
-
プロトコル:
icmp。 -
ポート範囲:
-1(ICMP全体)。 -
送信元:
0.0.0.0/0(全IPアドレスを許可)。
-
プロトコル:
-
アウトバウンドトラフィック:
- 全てのトラフィックを許可。
-
RDPアクセスの許可:
-
EC2インスタンス(Windows Server)の作成
-
AMI ID:
ami-01d033a4281b702a8(指定されたWindows Server AMI)。 -
インスタンスタイプ:
t2.micro(低コストでの実行)。 -
ネットワーク設定:
- パブリックサブネットに配置。
- セキュリティグループを適用。
- パブリックIPアドレスを有効化。
-
キーペア:
"honhon"を指定してSSH/RDPでの接続を可能にする。
-
AMI ID:
このコードは、AWS上でパブリックサブネットに配置されたWindows Serverインスタンスを、RDPおよびPingでアクセス可能な状態で構築するために必要なリソースを作成します。
作ったコードについて
# AWSプロバイダーの設定
provider "aws" {
region = "ap-northeast-1" # Tokyo region
}
# VPC作成
resource "aws_vpc" "main_vpc" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true # DNSサポートを有効化
enable_dns_hostnames = true # DNSホスト名を有効化
tags = {
Name = "terraform-main-vpc"
}
}
# サブネット作成 (パブリックサブネット)
resource "aws_subnet" "public_subnet" {
vpc_id = aws_vpc.main_vpc.id
cidr_block = "10.0.1.0/24"
map_public_ip_on_launch = true
tags = {
Name = "terraform-public-subnet"
}
}
# インターネットゲートウェイ作成
resource "aws_internet_gateway" "main_igw" {
vpc_id = aws_vpc.main_vpc.id
tags = {
Name = "terraform-main-igw"
}
}
# ルートテーブル作成
resource "aws_route_table" "public_route_table" {
vpc_id = aws_vpc.main_vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.main_igw.id
}
tags = {
Name = "terraform-public-route-table"
}
}
# サブネットとルートテーブルの関連付け
resource "aws_route_table_association" "public_association" {
subnet_id = aws_subnet.public_subnet.id
route_table_id = aws_route_table.public_route_table.id
}
# セキュリティグループ作成
resource "aws_security_group" "public_sg" {
vpc_id = aws_vpc.main_vpc.id
# RDPアクセスを許可
ingress {
from_port = 3389
to_port = 3389
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# ICMP (Ping) を許可
ingress {
from_port = -1
to_port = -1
protocol = "icmp"
cidr_blocks = ["0.0.0.0/0"]
}
# すべてのアウトバウンドを許可
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "terraform-public-sg"
}
}
# EC2インスタンス作成 (Windows Server)
resource "aws_instance" "windows_ec2" {
ami = "ami-01d033a4281b702a8" # 指定されたWindows ServerのAMI ID
instance_type = "t2.micro"
subnet_id = aws_subnet.public_subnet.id
security_groups = [aws_security_group.public_sg.id]
associate_public_ip_address = true # パブリックIPv4アドレスを有効化
key_name = "honhon" # 修正: キーペアを指定
depends_on = [aws_security_group.public_sg]
tags = {
Name = "terraform-windows-ec2"
}
}
まとめ
この記事は、自分用の備忘録としてまとめたものです。その点をご理解いただけると幸いです。
もし、この記事の内容が少しでも参考になれば嬉しく思います。
今後も同様の内容を継続して投稿していきますので、温かく見守っていただけるとありがたいです。