はじめに
Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。
以下の3つの投稿内容を実施した上でVPCの構築を行なっています。
※今まではデフォルトのVPCを使っていました
TerraformをインストールしてTerraformでAWS上にEC2作ってみる
TerraformでIAMを設定してEC2にセッションマネージャー経由で接続してみる
Terraformでセキュリティグループを設定してEC2にhttp接続する
TerraformにVPCの定義を追加
VPCを定義する
resource "aws_vpc" "test_vpc"{
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
tags = {
Name = "tf_test"
}
}
サブネットを定義する
定義したVPCを指定してサブネットを定義します。
resource "aws_subnet" "test_subnet_a" {
vpc_id = aws_vpc.test_vpc.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-1a"
map_public_ip_on_launch = true
tags = {
Name = "tf_test"
}
}
後ほどhttp接続確認のため、map_public_ip_on_launch = true
にしてパブリックIPが自動的に付与されるようにしています。
インターネットゲートウェイを定義する
定義したVPCを指定してインターネットゲートウェイを定義します。
resource "aws_internet_gateway" "test_igw" {
vpc_id = aws_vpc.test_vpc.id
tags = {
Name = "tf_test"
}
}
ルートテーブルを定義する
定義したVPC内でどのIPアドレス宛の通信をインターネットゲートウェイへ向けるか定義します。
resource "aws_route_table" "test_rt" {
vpc_id = aws_vpc.test_vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.test_igw.id
}
tags = {
Name = "tf_test"
}
}
サブネットとルートテーブルを関連付け
resource "aws_route_table_association" "test_rt_associate" {
subnet_id = aws_subnet.test_subnet_a.id
route_table_id = aws_route_table.test_rt.id
}
デフォルトVPCで起動することを前提にしていたリソースを今回定義したVPCに変更する
EC2を構築するサブネット指定する
以下で作成していたec2.tf
にEC2を構築するサブネットを指定します
https://qiita.com/kakita-yzrh/items/6bdc11f2882c67a949ad#ec2%E3%81%AB%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E8%A8%AD%E5%AE%9A
resource "aws_instance" "test" {
ami = "ami-0404778e217f54308"
instance_type = "t3.micro"
iam_instance_profile = aws_iam_instance_profile.test.name
# 以下を追加
subnet_id = aws_subnet.test_subnet_a.id
vpc_security_group_ids = [
aws_security_group.test.id
]
tags = {
Name = "tf_test"
}
}
セキュリティグループのVPC指定
以下で作成していたsecuritygroup.tf
にVPCを指定します。
https://qiita.com/kakita-yzrh/items/6bdc11f2882c67a949ad#http%E6%8E%A5%E7%B6%9A%E7%94%A8%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E5%AE%9A%E7%BE%A9
resource "aws_security_group" "test" {
name = "tf_test"
# 以下を追加
vpc_id = aws_vpc.test_vpc.id
tags = {
Name = "tf_test"
}
}
Terraformで定義したVPCと変更したEC2とセキュリティグループを反映
Terraformのplan applyを実行
terraformのplan applyを実行して、AWS上にリソースを反映します。
terraform plan
terraform apply
http接続を行う
以下の時と同じ方法でVPCとサブネットが変わった後も接続できるか確認します。
https://qiita.com/kakita-yzrh/items/6bdc11f2882c67a949ad#http%E6%8E%A5%E7%B6%9A%E3%82%92%E8%A1%8C%E3%81%86
作成したリソースの削除
terraformのdestroyを実行して、AWS上のリソースを削除します。
terraform destroy
さいごに
今回はTerraformでVPCの作成と作成したVPCにEC2インスタンスの構築を行いました。
次回は作成したVPCとEC2を使ってALBの作成を行いたいと思います。