Di episode ini kita akan membahas sejarah configuration management dari scripting manual hingga lahirnya Chef, masalah yang diselesaikannya, model pull-based, serta perbandingan awal dengan tool lain.

Di episode 0 kalian sudah menyiapkan seluruh fondasi: skill Linux, dasar Ruby, konsep infrastructure as code, dan instalasi Chef Workstation yang sudah terverifikasi. Sekarang fondasi itu akan kita bangun ke lantai pertama: memahami sejarah, latar belakang, dan mengapa dunia modern membutuhkan Chef.
Banyak orang belajar Chef langsung menulis cookbook tanpa pernah bertanya "mengapa tool ini ada?". Akibatnya, mereka menghafal sintaks tanpa memahami filosofinya — dan mudah menyerah saat menghadapi masalah nyata. Episode ini akan menjawab pertanyaan itu dengan melihat evolusi configuration management, masalah spesifik yang coba diselesaikan Chef, model arsitektur pull-based yang membedakannya, serta peta ekosistemnya.
Dengan pemahaman sejarah dan konteks ini, konsep-konsep teknis di episode 2 (arsitektur) dan seterusnya akan jauh lebih mudah dicerna. Mari mulai dari awal.
Untuk memahami mengapa Chef ada, kita harus melihat bagaimana manusia mengelola server sebelum ada automation.
Di awal era internet, mengelola satu server saja adalah pekerjaan yang melelahkan. Administrator menulis skrip shell satu per satu, menjalankannya secara manual, dan berdoa agar tidak ada yang lupa dijalankan di mesin tertentu. Setiap server bisa memiliki konfigurasi yang sedikit berbeda karena manusia melakukan langkah manual — fenomena yang dikenal sebagai configuration drift (penyimpangan konfigurasi).
Masalahnya makin parah seiring banyaknya server. Skrip yang sama dijalankan dua kali bisa menghasilkan hasil berbeda. Tidak ada rekam jejak siapa mengubah apa, kapan, dan mengapa.
Dari kekacauan itu lahir generasi tool configuration management:
| Tahun | Tool | Pembuat | Model |
|---|---|---|---|
| 1993 | CFEngine | Mark Burgess | Pull-based agent |
| 2005 | Puppet | Luke Kanies | Pull-based agent |
| 2009 | Chef | Adam Jacob | Pull-based agent |
| 2012 | Ansible | Michael DeHaan | Push-based agentless |
Chef lahir pada tahun 2009 dari tangan Adam Jacob sebagai proyek open source. Gagasan utamanya sederhana namun revolusioner: jadikan konfigurasi server sebagai kode — kode yang bisa di-versioning, di-review, diuji, dan dijalankan berulang kali dengan hasil yang konsisten.
1993 CFEngine ── pelopor agent-based
2005 Puppet ── config management mainstream pertama
2009 Chef ── infrastructure as code dengan Ruby DSL
2012 Ansible ── agentless, push-based, YAMLNote
Chef memilih Ruby sebagai bahasa DSL-nya. Ini keputusan yang cerdas pada zamannya karena Ruby adalah bahasa yang ekspresif dan mudah dibaca — kode konfigurasi terlihat seperti kalimat bahasa Inggris, bukan deretan perintah misterius.
Chef hadir untuk menjawab masalah-masalah yang mengganggu setiap tim yang mengelola server dalam skala besar. Berikut masalah utama yang diselesaikannya:
Tanpa automation, dua server yang seharusnya identik sering kali berbeda — satu sudah di-patch, satu belum; satu punya library tambahan, satu tidak. Chef memastikan setiap node dikonvergen ke desired state yang sama, berkali-kali, dengan hasil yang konsisten.
Ini adalah kata kunci paling penting di dunia configuration management. Perhatikan perbedaan cara menulis dua pendekatan:
# Menjalankan ini dua kali: apt install kedua kali akan error/menanyakan konfirmasi
sudo apt install -y nginx
# Dan jika nginx sudah terinstall, baris ini membuang waktu tanpa nilai tambahpackage 'nginx' do
action :install
endTip
Pada pendekatan kedua, jika nginx sudah terinstall, resource package 'nginx' do tidak melakukan apa-apa. Itulah idempotency — menjalankan recipe 1 kali atau 1000 kali menghasilkan keadaan akhir yang sama. Chef hanya "bertindak" ketika kondisi nyata berbeda dari yang dideskripsikan.
Karena semua konfigurasi ditulis sebagai kode Ruby, ia bisa disimpan di git, di-review melalui pull request, diuji di CI/CD, dan di-rollback. Tidak ada lagi "siapa yang mengubah server ini tadi malam?" — setiap perubahan bisa dilacak dan diaudit.
Chef menjalankan chef-client secara berkala (misalnya setiap 15 menit melalui cron atau service scheduler). Ini disebut convergence — sistem terus-menerus berusaha menyeimbangkan keadaan nyata menuju keadaan yang diinginkan, bahkan jika seseorang mengacaukan server di tengah hari.
Salah satu keputusan arsitektural yang paling membedakan Chef dari tool lain adalah model pull-based. Penting untuk memahami posisi Chef di sini:
| Aspek | Pull-based (Chef, Puppet) | Push-based (Ansible) |
|---|---|---|
| Inisiasi | Agent di node menjalankan jadwal sendiri | Server/controller mendorong ke node |
| Node offline | Konfigurasi tetap berjalan saat online berikutnya | Job gagal sampai node kembali online |
| Agent di node | Ada (chef-client) | Tidak ada (agentless) |
| Toleransi jaringan tidak stabil | Lebih baik | Rentan |
| Overhead | Ada proses agent per node | Hampir nol di sisi node |
+------------+ +-------------------+ +------------+
| Workstation| --> | Chef Infra Server | <-- | Node |
| (author) | | (registry/store) | | chef-client|
+------------+ +-------------------+ +------------+
upload cookbook fetch config apply locallyNode yang menjalankan chef-client secara berkala menarik (pull) konfigurasi dari server, lalu menerapkannya sendiri. Model ini sangat cocok untuk infrastruktur besar yang node-nya tersebar di banyak region dengan jaringan yang tidak selalu stabil.
Important
Perbandingan mendalam antara Chef, Ansible, Puppet, dan SaltStack akan dibahas secara khusus di episode 22. Di sini cukup pahami bahwa tidak ada tool yang "selalu lebih baik" — masing-masing punya trade-off yang cocok untuk konteks berbeda.
Saat ini Chef bukan sekadar satu tool, melainkan sebuah ekosistem lengkap yang menangani seluruh siklus hidup infrastruktur:
Chef:
Infra: kelola konfigurasi node (cookbook, recipe, resource)
InSpec: uji kepatuhan/security sistem (profile, control)
Automate: monitoring & compliance reporting (visibility)
Habitat: packaging & runtime aplikasi (application)Di episode 1 ini kita sudah menelusuri perjalanan configuration management dari scripting manual, CFEngine 1993, Puppet 2005, hingga lahirnya Chef oleh Adam Jacob pada 2009 dan Ansible pada 2012. Kita juga memahami masalah-masalah yang coba diselesaikan Chef serta posisinya di antara tool-tool sejenis.
Inti yang harus dibawa pulang:
chef-client menarik dan menerapkan konfigurasi secara berkala.Sekarang kalian paham mengapa Chef ada. Di episode 2 selanjutnya, kita akan membedah konsep dasar dan arsitektur utama — alur Chef client run dari Ohai hingga report, peran Workstation, Chef Infra Server, dan Nodes, serta komponen inti seperti cookbook, recipe, resource, attribute, run list, data bag, environment, role, dan knife.