L
Infrastructure as Code (IaC) • Literally Web ID

Automated Infrastructure Provisioning dengan Terraform dan Ansible untuk Multi-Cloud High Availability

⏱️ 15 menit baca • 📅 14 Oct 2026 • 👁️ 1 views
Automated Infrastructure Provisioning dengan Terraform dan Ansible untuk Multi-Cloud High Availability

1. Konteks Industri & Analisis Akar Masalah

Dalam lanskap pengembangan aplikasi enterprise modern, skalabilitas, ketahanan sistem (resilience), dan kecepatan rilis (time-to-market) adalah pilar utama yang menentukan kesuksesan sebuah bisnis digital. Namun, sebagian besar organisasi masih terjebak dalam jebakan "manual infrastructure provisioning" dan konfigurasi server ad-hoc melalui Secure Shell (SSH) langsung ke mesin produksi. Praktik kuno ini—yang sering disebut sebagai Snowflake Servers—menciptakan lingkungan yang rapuh, tidak konsisten antara staging dan production, serta sangat bergantung pada pengetahuan tribal dari individu tertentu.

Bottleneck performa dan keamanan yang sering muncul di dunia nyata meliputi:

  • Konfigurasi Drift (Drift Configuration): Perubahan manual pada file konfigurasi (seperti nginx.conf, php.ini, atau sysctl.conf) di satu server yang tidak direplikasi ke server lain, berakibat pada kegagalan sistem yang sulit dilacak.
  • Waktu Pemulihan (RTO - Recovery Time Objective) yang Lambat: Ketika terjadi kegagalan infrastruktur total (misalnya kegagalan zona ketersediaan cloud), pemulihan manual membutuhkan waktu berjam-jam untuk menginstal ulang sistem operasi, paket dependensi, modul PHP/Node.js, dan memulihkan data.
  • Kesenjangan Keamanan: Kurangnya otomatisasi dalam manajemen kunci SSH, rotasi sertifikat SSL/TLS (Let's Encrypt), dan penegakan aturan firewall (UFW/iptables) yang konsisten membuka celah eksploitasi bagi penyerang.

Perbandingan kondisi antara pendekatan tradisional dan modern dapat dilihat pada tabel berikut:

Aspek Sebelum (Manual / Ad-hoc) Sesudah (Terraform + Ansible)
Waktu Provisioning Hitungan hari / jam Hitungan menit (Fully Automated)
Konsistensi Lingkungan Rendah (Banyak Snowflake Servers) 100% Identik (Infrastructure as Code)
Manajemen State Tidak ada / Catatan manual Remote State Terenkripsi (S3 + DynamoDB)
Audit Trail Tidak ada Version Control (Git) + CI/CD Logs

Dengan memadukan Terraform untuk orkestrasi infrastruktur cloud-agnostic (Compute, Networking, Storage, DNS) dan Ansible untuk manajemen konfigurasi serta software provisioning (Web Server, Database, Caching, Security hardening), organisasi dapat mencapai tingkat High Availability (HA) yang sejati di berbagai penyedia cloud (Multi-Cloud).

2. Konsep Inti & Deep Dive Arsitektur

Arsitektur Automated Infrastructure Provisioning memisahkan tugas secara tegas antara pembuatan infrastruktur fisik/virtual (Provisioning) dan penyiapan lingkungan perangkat lunak di dalamnya (Configuration Management).

+-----------------------------------------------------------------------------------+
|                                    CI/CD PIPELINE                                 | 
+-----------------------------------------------------------------------------------+
          |                                                   |
          v (1. terraform apply)                              v (2. ansible-playbook)
+-------------------------------+                   +-------------------------------+
|      TERRAFORM ENGINE         |                   |        ANSIBLE ENGINE         |
| - AWS VPC / Subnets / IGW     |                   | - Install Nginx / PHP-FPM     |
| - EC2 Instances / Auto Scaling|                   | - Configure MySQL / Redis     |
| - Cloudflare DNS Records      |                   | - Hardening UFW & Fail2ban    |
+-------------------------------+                   +-------------------------------+
          |                                                   |
          +-------------------------> <-----------------------+
                                    |
                                    v
+-----------------------------------------------------------------------------------+
|                           PROD MULTI-CLOUD ENVIRONMENT                            |
|  +---------------------------+       +-----------------------------------------+  |
|  |      Cloudflare CDN       | ----> | Load Balancer (AWS ALB / Cloudflare LB) |  |
|  +---------------------------+       +-----------------------------------------+  |
|                                                           |                       |
|                                            +--------------+--------------+        |
|                                            |                             |        |
|                                     +--------------+              +--------------+|
|                                     | Web Node 01  |              | Web Node 02  ||
|                                     | (Nginx/PHP)  |              | (Nginx/PHP)  ||
|                                     +--------------+              +--------------+|
|                                            |                             |        |
|                                            +--------------+--------------+        |
|                                                           |                       |
|                                            +--------------+--------------+        |
|                                            | Centralized MariaDB/Redis   |
|                                            +-----------------------------+        |
+-----------------------------------------------------------------------------------+

Alur Eksekusi Data (Execution Flow):

  1. Inisialisasi Terraform: Developer mendefinisikan infrastruktur dalam bentuk kode HCL (HashiCorp Configuration Language). Terraform membaca file state terpusat untuk mengetahui kondisi saat ini (current state) dibandingkan dengan kondisi yang diinginkan (desired state).
  2. Pembuatan Sumber Daya Cloud: Terraform memanggil API penyedia cloud (AWS, GCP, DigitalOcean, Cloudflare) untuk membuat Virtual Private Cloud (VPC), subnet publik/privat, security groups, dan instance virtual machine (EC2/Droplets).
  3. Dinamisasi Inventaris Ansible: Setelah instance siap, Terraform secara otomatis mengekspor alamat IP publik/privat ke dalam format dinamis yang dapat dibaca oleh Ansible (atau menggunakan Dynamic Inventory Plugin).
  4. Eksekusi Playbook Ansible: Ansible melakukan SSH ke server-server baru secara paralel. Ansible menjalankan serangkaian tasks untuk menginstal paket web server (Nginx), PHP-FPM, mengonfigurasi Redis, mengatur sistem queue/scheduler via Supervisor, dan mengaktifkan aturan WAF.

3. Perbandingan Komparatif / Analisis Pendekatan

Dalam membangun infrastruktur otomatis, terdapat beberapa alternatif tools yang sering diperdebatkan. Analisis komparatif di bawah ini membedah pendekatan Terraform + Ansible dengan alternatif lainnya:

Parameter Komparasi Terraform + Ansible CloudFormation + AWS Systems Manager Pulumi + Chef/Puppet
Cloud Provider Support Multi-Cloud (AWS, GCP, Azure, Cloudflare) Terikat kuat ke AWS Multi-Cloud (Menggunakan bahasa umum TS/Python)
Paradigma Deklaratif (Terraform) + Imperatif/Idempotent (Ansible) Deklaratif (JSON/YAML yang sangat panjang) Imperatif / Deklaratif berbasis kode pemrograman
Learning Curve Sedang (HCL dan YAML mudah dipelajari) Curam (Sintaks CloudFormation sangat verbose) Sangat Curam (Membutuhkan penguasaan TypeScript/Go)
Agent Requirement Agentless (Menggunakan SSH / WinRM) Membutuhkan SSM Agent di dalam instance Membutuhkan Agent spesifik di setiap node
Resource Overhead Sangat Rendah (Tidak ada daemon berjalan di target) Sedang (AWS SSM Agent memakan RAM tambahan) Tinggi (Chef/Puppet daemon aktif terus-menerus)

[!TIP] Kombinasi Terraform dan Ansible adalah standar industri (industry gold standard) karena sifatnya yang agentless (tidak membebani resource server target) dan fleksibilitas lintas platform (multi-cloud), sangat ideal untuk arsitektur website modern yang mengandalkan CDN Cloudflare, backend Go/PHP, dan database terdistribusi.

4. Prasyarat Sistem & Persiapan Lingkungan

Sebelum mulai menulis kode, pastikan workstation atau CI/CD runner Anda memiliki perangkat lunak berikut dengan versi minimal yang didukung:

  • Terraform: v1.5.0 atau lebih tinggi
  • Ansible: v2.15.0 atau lebih tinggi
  • Python: v3.10+ (Diperlukan oleh Ansible dan pustaka pendukungnya)
  • Git: Untuk version control

Persiapan Kredensial dan Struktur Direktori

Buat struktur direktori proyek yang bersih dan terisolasi:

mkdir -p enterprise-infrastructure/{terraform,ansible/roles,ansible/playbooks}
cd enterprise-infrastructure

Konfigurasikan variabel environment untuk akses cloud provider (contoh menggunakan AWS dan Cloudflare):

export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
export AWS_DEFAULT_REGION="us-east-1"
export CLOUDFLARE_API_TOKEN="your-cloudflare-api-token-here"

5. Panduan Implementasi Langkah demi Langkah

Langkah 1: Konfigurasi Terraform untuk Multi-Cloud Infrastructure

Buat file terraform/main.tf untuk mendefinisikan provider, jaringan VPC, Security Groups, dan Web Server Instances.

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
    cloudflare = {
      source  = "cloudflare/cloudflare"
      version = "~> 4.0"
    }
  }
  backend "s3" {
    bucket         = "enterprise-terraform-state-prod"
    key            = "infrastructure/state.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-locks"
    encrypt        = true
  }
}

provider "aws" {
  region = "us-east-1"
}

provider "cloudflare" {
  api_token = var.cloudflare_api_token
}

variable "cloudflare_api_token" {
  type      = string
  sensitive = true
}

variable "domain_name" {
  type    = string
  default = "example.com"
}

# VPC Configuration
resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
  enable_dns_support   = true

  tags = {
    Name        = "enterprise-vpc"
    Environment = "production"
  }
}

resource "aws_subnet"
🏷️ Tags: #Nginx #High Concurrency #Performance #Sysadmin #Web Server