Configuration Manager

Configuration Manager #

Sebelum era container dan Kubernetes mendominasi, Configuration Management (CM) sudah menjadi fondasi utama operasional sistem skala besar.

Tool seperti Ansible, Puppet, Chef, dan SaltStack lahir untuk menjawab satu masalah klasik:

Bagaimana memastikan ratusan atau ribuan server memiliki konfigurasi yang konsisten, aman, dan dapat direproduksi?

Artikel ini membahas Infrastructure Configuration Management, yaitu CM di level server / OS, dengan Ansible sebagai contoh utama.

Apa itu Infrastructure Configuration Management? #

Infrastructure Configuration Management adalah praktik untuk:

  • Mendefinisikan desired state dari server
  • Menerapkan konfigurasi secara otomatis
  • Menjaga konsistensi konfigurasi sepanjang waktu
  • Mencegah configuration drift

Contoh desired state:

  • Nginx ter-install
  • Port 80 terbuka
  • User deploy ada
  • Service nginx selalu running

Fokusnya bukan script dijalankan, tetapi state tercapai.


Masalah yang Diselesaikan oleh CM #

Tanpa CM, biasanya terjadi:

  • Setup server manual via SSH
  • Dokumentasi setup tidak sinkron dengan realita
  • Server satu berbeda dengan lainnya
  • Sulit audit & rollback
  • Human error tinggi

CM mengubah ini menjadi:

  • Declarative (apa yang diinginkan, bukan bagaimana caranya)
  • Repeatable (bisa dijalankan berkali-kali)
  • Auditable (config = code)

Ansible sebagai Configuration Manager #

Apa itu Ansible? #

Ansible adalah:

  • Agentless configuration management tool
  • Menggunakan SSH
  • Berbasis YAML (playbook)
  • Bersifat declarative & idempotent

Tidak perlu install agent di server target.


Konsep Dasar Ansible #

1. Inventory #

Daftar host yang dikelola:

[web]
web-01
web-02

2. Playbook #

Blueprint konfigurasi:

- hosts: web
  tasks:
    - name: Install nginx
      apt:
        name: nginx
        state: present

3. Task #

Unit terkecil dari konfigurasi.

4. Module #

Fungsi bawaan (apt, service, file, user, dll).

5. Role #

Struktur modular untuk konfigurasi besar:

roles/
 └─ nginx/
    ├─ tasks/
    ├─ templates/
    └─ handlers/

Prinsip Penting CM: Idempotency #

Idempotent berarti:

Playbook dijalankan 1x atau 100x → hasilnya tetap sama

Contoh:

  • Jika nginx sudah terinstall → tidak diinstall ulang
  • Jika service sudah running → tidak di-restart

Ini adalah jiwa dari Configuration Management.


CM vs Script Bash #

AspekBash ScriptAnsible CM
Declarative
Idempotent
Error handlingLemahKuat
ReadabilityRendahTinggi
AuditSulitMudah

Use Case Nyata Ansible #

Provisioning Server #

  • Install OS package
  • Setup timezone
  • Setup user & SSH key

Web Server Configuration #

  • Nginx / Apache
  • TLS certificate
  • Log rotation

Database Server #

  • Install PostgreSQL / MySQL
  • Set config file
  • Open firewall

Hardening & Security Baseline #

  • Disable root login
  • Setup fail2ban
  • Audit permission

Best Practices Infrastructure CM #

1. Declarative, Bukan Imperative #

❌ Salah:

shell: apt install nginx

✅ Benar:

apt:
  name: nginx
  state: present

2. Gunakan Role, Bukan Playbook Monolitik #

  • Lebih reusable
  • Lebih terstruktur
  • Mudah di-maintain

3. Jangan Simpan Secret di Playbook #

❌ Salah:

password: admin123

✅ Benar:

  • Ansible Vault
  • External secret manager

4. Version Control Semua Konfigurasi #

  • Git sebagai source of truth
  • Setiap perubahan via PR
  • Review & approval

5. Hindari Configuration Drift #

  • Jalankan CM secara berkala
  • Jangan manual edit server

Jika tidak di Ansible, maka tidak eksis.


6. Test Configuration #

Gunakan:

  • Molecule
  • Dry-run (--check)

7. Pisahkan Environment #

dev/
staging/
prod/

Dengan variable berbeda.


Anti-Pattern CM #

🚫 Menggunakan Ansible seperti shell script

🚫 Edit server manual setelah CM jalan

🚫 Playbook terlalu kompleks

🚫 Tidak ada dokumentasi role

🚫 Secret hardcoded


CM dalam Arsitektur Modern #

Terraform → Provision VM
Ansible  → Configure OS & Service
Docker   → Package App
K8s      → Runtime Orchestration

CM tetap relevan, bahkan di era Kubernetes.


Kapan Ansible CM Wajib Digunakan? #

  • Server > 2
  • Ada compliance
  • Ada tim ops / SRE
  • Setup server kompleks
  • Perlu audit & consistency

Kesimpulan #

Infrastructure Configuration Management adalah pondasi stabilitas sistem.

Ansible membantu memastikan:

  • Server konsisten
  • Setup dapat direproduksi
  • Human error ditekan

Infrastructure yang baik bukan yang canggih, tapi yang bisa diulang dengan hasil yang sama.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact