Mdr{dani} Notes

Automasi Provisioning AWS EC2 Menggunakan Terraform

·

3 min read

Cover Image for Automasi Provisioning AWS EC2 Menggunakan Terraform

Pada tahap ini, kita akan melakukan provisioning server EC2 secara otomatis. Menggunakan Infrastructure as Code (IaC) memastikan infrastruktur kita dapat direproduksi dengan cepat dan konsisten.

Berikut adalah struktur fundamental untuk membuat instance EC2. Kita menggunakan pendekatan modular agar konfigurasi ini bisa digunakan kembali untuk berbagai environment (Staging/Production).

module/main.tf

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0"
    }
  }
}

provider "aws" {
  region     = var.region
  access_key = var.access_key
  secret_key = var.secret_key
}

resource "aws_instance" "default" {
  ami           = var.ami
  instance_type = var.instance_type

  tags = {
    Name = var.name
  }

  associate_public_ip_address = var.public_ip
  subnet_id                   = var.subnet_id
  key_name                    = var.key_name
  vpc_security_group_ids      = var.vpc_security_group_ids
}

Setelah Terraform berhasil membuat resource, kita tidak ingin repot membuka AWS Console hanya untuk mencari IP server. Di sinilah outputs.tf berperan. File ini berfungsi untuk mengekspos atribut spesifik dari resource yang telah dibuat sehingga bisa digunakan oleh modul lain atau ditampilkan langsung di terminal.

Module/Output.tf

output "instance_id" {
  description = "ID unik dari instance EC2 yang dibuat"
  value       = aws_instance.default.id
}

output "public_ip" {
  description = "Public IP address untuk akses SSH atau monitoring"
  value       = aws_instance.default.public_ip
}

Agar modul EC2 kita bersifat dinamis dan dapat digunakan kembali (reusable), kita perlu mendefinisikan variabel. Variabel memungkinkan kita untuk mengganti tipe instance, region, atau AMI tanpa harus mengutak-atik kode utama di main.tf.

Module/Vars.tf

variable "region" {
  type    = string
  default = "ap-southeast-1" //Region Jakarta
}

variable "access_key" {
  type    = string
  default = "AKIA4KA*********" //buat User di IAM AWS
}

variable "secret_key" {
  type    = string
  default = "6klZ95kRV+OZWC**********" //buat User di IAM AWS
}

variable "ami" {
  type    = string
  default = "ami-082b1f4237bd816a1" //lihat AMI ID saat create instance EC2 AWS
}

variable "instance_type" {
  type    = string
  default = "t2.medium" //lihat Instance Type saat create instance EC2 AWS
}

variable "name" {
  type = string
}

variable "public_ip" {
  type    = bool
  default = true
}

variable "subnet_id" {
  type    = string
  default = "subnet-0af42ddc7c8b1182f" //lihat di VPC AWS bagian subnet group
}

variable "key_name" {
  type    = string
  default = "****" //create Key di bagian IAM AWS
}

variable "vpc_security_group_ids" {
  type    = list(any)
  default = ["sg-03527e3d13cc3706c"] //lihat di bagian VPC AWS
}

Setelah kita membangun modul yang reusable, langkah terakhir adalah memanggil modul tersebut di dalam file utama (root). File server.tf ini bertindak sebagai manajer yang menentukan server apa saja yang ingin kita buat dengan memanfaatkan blueprint dari folder ./module.

server.tf

module "Jenkins-server" {
  source = "./module"
  name   = "Jenkins-server"
}

output "Jenkins_server_id" {
  value = module.Jenkins-server.instance_id
}

output "Jenkins_server_public_ip" {
  value = module.Jenkins-server.public_ip
}

Setelah semua file siap, saatnya kita mengeksekusi kode Terraform tersebut. Ada tiga langkah utama (Workflow) yang wajib kamu pahami untuk mengubah kode menjadi server nyata di AWS:

1. Inisialisasi Project

Langkah pertama adalah menyiapkan environment kerja. Perintah ini akan mendownload provider AWS yang dibutuhkan agar Terraform bisa berkomunikasi dengan API AWS.

terraform init

2. Preview Infrastruktur (The "Safety" Check)

Jangan pernah melewatkan tahap ini. Perintah ini akan memberikan simulasi atau rencana (plan) tentang apa yang akan dibuat, diubah, atau dihapus oleh Terraform tanpa benar-benar menyentuh infrastruktur kamu.

terraform plan

Mentor Note: Baca output-nya dengan teliti. Pastikan jumlah resource yang akan dibuat (Plan: X to add) sudah sesuai dengan ekspektasi.

3. Eksekusi dan Provisioning

Langkah terakhir adalah menerapkan perubahan. Terraform akan meminta konfirmasi sekali lagi sebelum benar-benar membangun server Jenkins kamu di AWS.

terraform apply

Mdr{dani} Notes

A digital garden where I plant ideas, share thoughts on DevOps, cloud infrastructure, open-source, and my journey in tech. Keep exploring and happy automating!

Explore Topics

Web DevelopmentReactNext.jsGolangOpen SourceTutorials

Supported By

Codeathome
LampungDev

Made with© 2026 Muhamad Dani Ramanda

Powered by HashnodeHosted on Vercel