Terraform Fundamental - Sesi 2 (AWS)

Terraform Fundamental - Sesi 2 (AWS)

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