Next di Part 2 kita akan ulik lebih lanjut lagi tidak hanya create EC2 saja, namun kita akan membuat seperti VPC, Security group dll.
Hal-hal yang perlu disiapkan untuk ngelab adalah sebagai berikut :
Install Terraform
Code editor : VScode
Extensions VScode : Terraform, Hashicorp Terraform
AWS Account
Struktur folder nya akan seperti ini nanti nya.
Create VPC
buat file dengan nama VPC.tf, dan isi seperti ini.
resource "aws_vpc" "vpc-node1" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "vpc-node"
}
}
selanjutnya seperti biasa kita check dahulu
$ terraform plan
jika sudah sesuai langsung kita apply
$ terraform apply
Create Subnet
buat file dengan nama subnet.tf, dan isi seperti ini.
resource "aws_subnet" "subnet-node1" {
vpc_id = aws_vpc.vpc-node1.id
cidr_block = "10.0.1.0/24"
tags = {
Name = "subnet-node1"
}
}
resource "aws_subnet" "subnet-node2" {
vpc_id = aws_vpc.vpc-node1.id
cidr_block = "10.0.2.0/24"
tags = {
Name = "subnet-node2"
}
}
kita membuat 2 subnet dan cidr_block yang berbeda. dan selanjut nya check dengan command
$ terraform plan
next apply
$ terraform apply
Create Private VM EC2
kembali ke file ec2.tf tadi, edit seperti ini
resource "aws_instance" "VM-node1" {
ami = "ami-0a2bcdce90f0df342"
instance_type = "t3.micro"
tags = {
Name = "VM-node1"
}
subnet_id = aws_subnet.subnet-node1.id
}
resource "aws_instance" "VM-node2" {
ami = "ami-0a2bcdce90f0df342"
instance_type = "t3.micro"
tags = {
Name = "VM-node2"
}
subnet_id = aws_subnet.subnet-node2.id
}
Cheking plan
$ terraform plan
dan apply
$ terraform apply
ok sukses masuk ke subnet 1.
oke sukses masuk ke subnet 2.
Create Internet Gateway
buat file dengan nama internet-gateway.tf, dan isi seperti ini
resource "aws_internet_gateway" "internet-gw-node" {
vpc_id = aws_vpc.vpc-node1.id
tags = {
Name = "internet-gw-node"
}
}
checking plan
$ terraform plan
dan apply
$ terraform apply
Create Route Table
buat file dengan nama route-table.tf, dan isi seperti ini
resource "aws_route_table" "route-table-node" {
vpc_id = aws_vpc.vpc-node1.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.internet-gw-node.id
}
tags = {
Name = "route-table-node"
}
}
checking plan
$ terraform plan
dan apply
$ terraform apply
Create Security Group
buat file dengan nama security-group.tf, dan isi seperti ini
resource "aws_security_group" "security-group-node" {
name = "security-group-node"
description = "Allow inbound traffic"
vpc_id = aws_vpc.vpc-node1.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
tags = {
Name = "security-group-node"
}
}
checking plan
$ terraform plan
dan apply
$ terraform apply
agar VM EC2 di subnet1 dapat di akses dari luar Masuk ke bagian Subnets di VPC ke Tab Route Table edit route.
Create Key Pair
untuk SSH ke VM instance maka kita perlu mengenerate SSH key pair. Pada Power shell cukup ketikan
$ ssh-keygen -C ubuntu
nanti otomatis akan membuat kan SSH key pair.
resource "aws_key_pair" "key-pair-node" {
key_name = "node-key"
public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD3F6tyPEFEzV0LX3X8BsXdMsQz1x2cEikKDEY0aIj41qgxMCP/iteneqXSIFZBp5vizPvaoIR3Um9xK7PGoW8giupGn+EPuxIA4cDM4vzOqOkiMPhz5XK0whEjkVzTo4+S0puvDZuwIsdiW9mxhJc7tgBNL0cYlWSYVkz4G/fslNfRPW5mYAM49f4fhtxPb5ok4Q2Lg9dPKVHO/Bgeu5woMc7RY0p1ej6D4CKFE6lymSDJpW0YHX/wqE9+cfEauh7xZcG0q9t2ta6F6fmX0agvpFyZo8aFbXeUBr7osSCJNgvavWbM/06niWrOvYX2xwWdhXmXSrbX8ZbabVohBK41 email@example.com"
}
checking plan
$ terraform plan
dan apply
$ terraform apply
Jika sudah memasukan key pair, maka selanjut nya kita coba untuk remote salah satu VM EC2. Remote VM EC 2 di subnet 1 saja, kita edit file ec2.tf nya menjadi seperti ini.
. . . . .
subnet_id = aws_subnet.subnet-node1.id
associate_public_ip_address = true
vpc_security_group_ids = [aws_security_group.security-group-node.id]
key_name = aws_key_pair.key-pair-node.key_name
}
checking plan
$ terraform plan
dan apply, pada tahap ini karena kita akan merubah key pair pada salah satu instance jadi akan di destroy dahulu selanjutnya akan di buatkan sama seperti awal.
$ terraform apply
instance 1 sudah ada public IP nya. selanjut nya kita akan SSH ke instance tersebut.
$ ssh -i key-pair-node ubuntu@IP-PUBLIK-INSTANCE
Jika semua yang di coba sudah selesai dan tidak ingin digunakan kembali, kita dengan mudah menghapus semua VM, VPC, Subnet dll dengan command
$ terraform destroy
Jika ingin destroy secara spesifik dapat menggunakan
$ terraform destroy --target="nama resource.nama label"
$ terraform destroy --target="aws_instance.node3"
dan jika ingin memulai lagi semua tinggal command lagi
$ terraform apply