Belajar Infrastructure Engineer - IaC & Automation
Episode 8 of 28

Belajar Infrastructure Engineer - IaC & Automation

Menguasai Infrastructure as Code dan automation: membedakan provisioning (Terraform/OpenTofu) dan configuration management (Ansible), menulis konfigurasi pertama, serta pola pipeline yang aman untuk mengelola infrastruktur sebagai kode

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

Pendahuluan

Setelah di episode 7 kita mengelola container, kini saatnya membahas kemampuan yang paling membedakan Infrastructure Engineer 2026 dari sysadmin generasi lama: IaC & automation. Di 2026, infrastruktur yang dikelola dengan klik console dianggap utang teknis — standar industri adalah infrastruktur yang lahir dari kode, ditinjau seperti kode, dan diaudit seperti kode.

Mengapa topik ini penting? Karena ia mengubah sifat pekerjaan: dari manual dan melelahkan menjadi reproducible dan bisa ditinjau. Kesalahan besar bisa dicegah di code review sebelum sampai ke produksi. Episode ini membekali kalian dua pilar: provisioning (Terraform/OpenTofu — membuat infrastruktur) dan configuration management (Ansible — mengonfigurasi mesin).

Dua Dunia yang Berbeda

Sering tertukar, padahal keduanya menyelesaikan masalah yang berbeda:

AspekProvisioningConfiguration Management
Pertanyaan"Bagaimana infrastruktur dibuat?""Bagaimana mesin dikonfigurasi?"
ToolsTerraform/OpenTofu, CloudFormation, PulumiAnsible, Puppet, Chef
ObjekServer, VPC, subnet, storage, LBPaket, service, file, user di dalam OS
StateMenyimpan state infrastrukturMenyimpan (atau tidak) state config
AlurApply sekali saat dibuatIdempotent, bisa diulang terus

Keduanya saling melengkapi: Terraform membuat VM, lalu Ansible mengonfigurasi di dalamnya. Kalian akan sering melihat pola "Terraform untuk lahir, Ansible untuk hidup".

Terraform/OpenTofu: Infrastruktur sebagai Kode

Konsep Inti

  • Configuration: file .tf yang mendeskripsikan infrastruktur yang diinginkan (declarative).
  • Provider: plugin yang berbicara dengan API target (AWS, Proxmox, dll).
  • State: catatan dunia nyata yang sudah dibuat — file terraform.tfstate adalah sumber kebenaran, wajib diamankan.
  • Plan/Apply: plan menunjukkan apa yang akan berubah; apply mengeksekusinya.
main.tf: satu VM di Proxmox
provider "proxmox" {
  pm_api_url = "https://pve01.lab.local:8006/api2/json"
}
 
resource "proxmox_vm_qemu" "web" {
  name        = "web-01"
  target_node = "pve01"
  clone       = "ubuntu-2204-template"
 
  cores  = 2
  memory = 2048
 
  disk {
    size    = "20G"
    storage = "local-lvm"
  }
}

Perhatikan sifat declarative: kalian menulis hasil akhir, bukan langkah demi langkah. Terraform membandingkan state dengan config, lalu menghitung langkah yang dibutuhkan untuk mencapai hasil itu.

Alur kerja Terraform
terraform init
terraform plan
terraform apply -auto-approve
terraform destroy -auto-approve

Mengamankan State

terraform.tfstate berisi rahasia (password database, IP internal). Aturan wajib:

  • Simpan di backend remote (misal S3 + locking DynamoDB, atau Terraform Cloud).
  • Jangan pernah commit ke Git.
  • Batasi akses dengan IAM/permission ketat.

Ansible: Configuration Management

Konsep Inti

  • Playbook: file YAML berisi langkah-langkah yang ingin dilakukan.
  • Module: unit kerja Ansible (paket, service, file, user).
  • Inventory: daftar host yang dikelola.
  • Idempotent: menjalankan ulang playbook tidak mengubah hasil — hanya memperbaiki yang menyimpang.
install-nginx.yaml
---
- name: Siapkan web server
  hosts: web
  become: true
  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present
 
    - name: Pastikan nginx berjalan
      ansible.builtin.systemd:
        name: nginx
        state: started
        enabled: true
 
    - name: Salin halaman index
      ansible.builtin.copy:
        src: index.html
        dest: /var/www/html/index.html
        mode: "0644"

Playbook ini: install nginx, pastikan service jalan dan aktif saat boot, lalu salin halaman. Jalankan dengan:

Jalankan playbook
ansible-playbook -i inventory.ini install-nginx.yaml

Karena idempotent, playbook yang sama bisa dijalankan 100 kali dengan hasil akhir yang sama — inilah perbedaan fundamental dengan script shell if-then-else.

Inventory

inventory.ini
[web]
web-01.lab.local ansible_user=root
web-02.lab.local ansible_user=root
 
[db]
db-01.lab.local ansible_user=root

Pola Workflow Infrastruktur sebagai Kode

Workflow yang benar mengangkat infrastruktur ke level yang sama dengan kode aplikasi:

100%

Prinsip-prinsipnya:

  1. Semua infra sebagai kode di Git — tidak ada yang dibuat manual di console.
  2. Pull request + review sebelum apply — seperti code review aplikasi.
  3. Plan di CIterraform plan dan ansible-playbook --check dijalankan otomatis di CI, hasilnya dilihat sebelum apply.
  4. Promote bertahap — staging dulu, produksi kemudian.
  5. Destroy & recreate secara rutin — menguji bahwa kode benar-benar bisa membangun ulang semuanya.

Important

Prinsip "cattle, not pets": server produksi seharusnya bisa dihancurkan dan dibuat ulang dari kode kapan saja. Jika kalian punya server yang "harus disayang dan tidak boleh disentuh" karena tidak ada yang tahu cara membuatnya lagi, itu adalah debt terbesar tim infra — IaC adalah obatnya.

Menangani Secrets dalam IaC

Konfigurasi IaC sering menyentuh kredensial. Aturan yang tidak bisa ditawar:

Aturan secrets dalam IaC
1. Jangan hardcode kredensial di file .tf/.yaml
2. Jangan commit state berisi secret ke Git
3. Pakai variabel environment atau secret manager (Vault — episode 19)
4. Scan repo secara rutin untuk secret yang bocor

Common Pitfalls IaC

  • Menggabungkan provisioning & config dalam satu tool: Terraform untuk install paket di dalam VM = state membengkak, drift tidak terdeteksi. Gunakan Ansible untuk itu.
  • Tidak pernah menjalankan destroy: kode yang tidak pernah diuji build ulang = kode yang sebenarnya rusak.
  • State disimpan di laptop: hilang atau korup → infrastruktur "kehilangan ingatan".
  • Terlalu banyak konfigurasi kaku: config yang tidak bisa di-reuse per environment akan mengganda saat tim berkembang — modul mengatasi ini (bisa dilanjutkan ke series Belajar Terraform).
  • Otomasi tanpa pengujian: playbook yang merusak produksi lebih buruk daripada manual yang lambat — selalu --check dulu.

Penutup

Pada episode 8 ini kalian telah menguasai jantung automation:

  • Provisioning (Terraform/OpenTofu) membuat infrastruktur; configuration management (Ansible) mengonfigurasinya — keduanya saling melengkapi.
  • State harus di backend remote dan diamankan; playbook harus idempotent.
  • Workflow IaC profesional: kode → review → plan di CI → apply bertahap.
  • Secrets tidak pernah masuk Git; gunakan secret manager.
  • Infrastruktur harus "cattle": bisa dihancurkan dan dibangun ulang dari kode kapan saja.

Di episode 9 selanjutnya kita membangun mata infrastruktur: monitoring & observability — Prometheus, Grafana, logging, dan alerting yang membuat kalian bisa melihat dan merespons masalah sebelum user mengeluh. Sampai jumpa di episode 9!

Belajar Infrastructure Engineer - IaC & Automation | Belajar Infrastructure Engineer