Belajar System Engineer - IaC & Modern System Ops
Episode 25 of 28

Belajar System Engineer - IaC & Modern System Ops

Mengelola infrastruktur sebagai kode: kombinasi Terraform dan Ansible, alur GitOps untuk perubahan yang diaudit, dan penerapan SDLC ke pekerjaan operasi agar konsisten dan dapat diulang

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Sepanjang series ini, kita membangun satu per satu: provisioning (episode 9), cloud (episode 13), K8s (episode 15), hingga keandalan (episode 24). Episode 25 ini menyatukan semuanya dalam satu filosofi yang menjadi standar operasi modern: infrastructure as code (IaC) — infrastruktur dikelola sebagai kode yang bisa di-review, di-version control, dan diaudit, bukan sebagai klik-klik manual.

Mengapa episode ini penting? Karena kode adalah sumber kebenaran: jika infrastruktur ada di kode, kalian bisa membangun ulang kapan saja, tahu persis apa yang berubah (dari git history), dan bisa me-review setiap perubahan seperti review kode aplikasi. Episode ini membahas kombinasi Terraform + Ansible, konsep GitOps, dan bagaimana SDLC diterapkan ke operasi.

Pembagian Peran: Terraform + Ansible

Mengapa Dua Tool

Terraform dan Ansible saling melengkapi, bukan bersaing:

AspekTerraformAnsible
FokusProvision sumber daya (infra)Configure di dalam sumber daya (OS/app)
StateStateful (terraform.tfstate)Stateless (idempotent per run)
ObjekCloud resource, network, DNSPaket, file, service, user
SiklusCreate/update/destroy resourcePastikan kondisi sesuai

Pembagian tugas yang ideal:

100%

Terraform membuat sumber daya (VM, jaringan, cloud), lalu Ansible mengonfigurasi di dalamnya (paket, file, service, user). Prinsipnya: IaC untuk hal yang "lahir dan mati" (infra), configuration management untuk hal yang "hidup di dalam" (state OS).

Contoh Kombinasi

Terraform — provision instance:

main.tf
provider "aws" {
  region = "ap-southeast-1"
}
 
resource "aws_instance" "web" {
  ami           = "ami-0abcdef1234567890"
  instance_type = "t3.micro"
  vpc_security_group_ids = [aws_security_group.web.id]
 
  tags = {
    Name = "web-prod"
  }
 
  provisioner "remote-exec" {
    inline = [
      "sudo apt update",
      "sudo apt install -y ansible"
    ]
  }
}

Ansible — konfigurasi di dalamnya:

playbooks/web.yml
- name: Konfigurasi web server
  hosts: web-prod
  become: true
  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present
    - name: Deploy site
      ansible.builtin.template:
        src: default.conf.j2
        dest: /etc/nginx/sites-available/default
      notify: reload nginx
  handlers:
    - name: reload nginx
      ansible.builtin.service:
        name: nginx
        state: reloaded

Alur terpadu:

Alur apply penuh
terraform plan
terraform apply -auto-approve
ansible-playbook -i inventory/prod playbooks/web.yml

GitOps: Perubahan yang Diaudit

GitOps mengambil prinsip IaC satu langkah lebih jauh: git adalah satu-satunya sumber kebenaran, dan semua perubahan infrastruktur lewat pull request yang di-review. Ciri-ciri alur GitOps:

  1. Infrastruktur + konfigurasi disimpan di repo git (episode 9).
  2. Setiap perubahan lewat pull request — di-review sebelum digabung.
  3. CI/CD pipeline menerapkan perubahan secara otomatis setelah merge.
  4. Seluruh riwayat perubahan terekam di git — siapa mengubah apa, kapan.
100%

Keuntungannya bagi System Engineer: rollback = revert commit, dan audit (episode 20) = baca git history. Tidak ada lagi "siapa yang mengubah konfigurasi itu?" — jawabannya selalu ada di git.

SDLC untuk Operasi

Infrastruktur kini dirawat seperti perangkat lunak — lengkap dengan SDLC:

FasePraktik Operasi
PlanningIssue/ticket untuk setiap perubahan
CodingKonfigurasi/playbook di git, branch per fitur
Testingterraform plan, ansible --check, uji di staging
DeploymentPipeline CI/CD, rollback otomatis
MonitoringVerifikasi post-deploy via dashboard (episode 10)
MaintenanceReview berkala, upgrade versi tooling

Praktik yang wajib dibiasakan:

Dry-run sebelum apply
terraform plan -out=tfplan        # lihat perubahan sebelum terjadi
ansible-playbook --check web.yml  # simulasi, tanpa perubahan nyata

--check (Ansible) dan plan (Terraform) adalah "compile" infrastruktur — mendeteksi masalah sebelum menyentuh produksi.

Praktik: Sistem IaC Penuh

Skenario lab minimal (bisa dengan provider lokal, misal KVM + Ansible saja):

Skenario IaC penuh
# 1. Repo git untuk konfigurasi
git init infra && cd infra
mkdir -p terraform ansible
 
# 2. Tulis Terraform untuk provision (atau manual sekali)
# 3. Tulis Ansible playbook (web.yml di atas)
 
# 4. Simpan inventory & jalankan dengan check dulu
ansible-playbook --check -i inventory playbooks/web.yml
 
# 5. Terapkan & verifikasi
ansible-playbook -i inventory playbooks/web.yml
curl http://<host>/
 
# 6. Commit sebagai sumber kebenaran
git add . && git commit -m "feat: provision web server dengan IaC"

Tip

Mulailah dari yang kecil: version-control satu playbook Ansible yang sudah kalian pakai (episode 9), lalu tambahkan Terraform untuk cloud (episode 13). IaC adalah perubahan budaya — adopsi bertahap lebih efektif daripada proyek besar yang menyeramkan.

Kesalahan Umum

  1. Terraform tanpa backend state yang aman — state berisi data sensitif; simpan di remote (S3/Terraform Cloud) + locking.
  2. Ansible untuk provisioning cloud, Terraform untuk konfigurasi — kebalikan peran, kacaunya.
  3. IaC tanpa code review — kode infra yang tidak di-review = perubahan tak terkendali.
  4. Langsung apply tanpa plan/--check — perubahan destruktif terlanjur terjadi.
  5. Git bukan sumber kebenaran — konfigurasi "resmi" di kepala orang, git ketinggalan.

Penutup

Inti yang harus dibawa pulang:

  • Terraform untuk provision (stateful, infra), Ansible untuk configure (idempotent, state OS).
  • GitOps: git sebagai sumber kebenaran, semua perubahan lewat PR + pipeline, rollback = revert.
  • Terapkan SDLC ke operasi: plan, test (plan/--check), deploy, monitor.
  • IaC membuat infrastruktur reproducible, auditable, dan bisa di-review.

Di episode 26 selanjutnya kita melihat peta besar: ekosistem & tren modern 2026 — ke mana arah profesi dan teknologi. Sampai jumpa di episode 26!

Belajar System Engineer - IaC & Modern System Ops | Belajar System Engineer