尝试使用Terraform建立VPC
首先
我开始学习使用Terraform,所以我打算发布我所做的备忘录。
在执行以下三个发布内容后,我正在构建VPC。
※之前我一直使用默认的VPC。
1. 安装Terraform并使用Terraform在AWS上创建EC2实例
2. 使用Terraform配置IAM并通过Session Manager连接到EC2实例
3. 使用Terraform配置安全组并允许EC2实例进行HTTP连接
向Terraform中添加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的计划应用。
执行Terraform的计划应用命令,将资源映射到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。