Di episode ini kita akan praktik langsung: menginstall Chef Workstation dan Chef Client, menjalankan chef-client dalam mode client, solo, maupun zero, melakukan bootstrap node, serta membuat cookbook pertama.

Di episode 2 kalian sudah memahami arsitektur Chef secara konseptual: alur lima fase chef-client, peran Workstation, Chef Infra Server, dan Nodes, serta komponen-komponen inti. Sekarang saatnya turun tangan dan menyentuh alatnya secara langsung. Ingat pepatah dalam dunia otomasi: "kamu tidak benar-benar mengerti sampai kamu mempraktikkannya".
Episode 3 ini adalah episode hands-on. Kita akan menginstall Chef Workstation dan Chef Client, menjalankan chef-client dalam tiga mode pengembangan (client, solo, dan zero), melakukan bootstrap node dari workstation, dan membuat struktur cookbook pertama dengan chef generate cookbook nginx. Di akhir episode, kalian akan punya cookbook nyata yang berhasil dikonvergen ke sebuah node uji.
Pertama, pastikan instalasi dari episode 0 masih utuh. Verifikasi semua binary utama:
chef -v
knife -v
berks -v
kitchen versionWarning
Jika ada perintah yang tidak ditemukan, jangan lanjut dulu. Ulangi instalasi Chef Workstation (episode 0) dan pastikan perintah eval "$(chef shell-init bash)" sudah masuk ke file ~/.bashrc lalu jalankan source ~/.bashrc.
Chef Client adalah agent yang berjalan di node. Secara default Chef Workstation sudah menyertakan Chef Infra Client, sehingga untuk latihan lokal kita tidak perlu install terpisah. Perbedaan perannya:
| Binary | Peran | Berjalan di |
|---|---|---|
chef | Generator & utilitas development | Workstation |
chef-client | Agent yang mengkonvergen node | Node |
knife | CLI interaksi dengan Infra Server | Workstation |
berks | Dependency manager cookbook | Workstation |
kitchen | Test Kitchen untuk pengujian | Workstation |
Untuk latihan di rumah, kita tidak perlu langsung membangun Chef Infra Server penuh. Chef menyediakan tiga mode yang masing-masing punya kegunaannya.
Mode client adalah mode normal di production: chef-client berkomunikasi dengan Chef Infra Server, menarik run_list dan cookbook, lalu mengkonvergen — butuh server yang berjalan dan konfigurasi client.rb. Mode solo justru mandiri tanpa server sama sekali: chef-solo membaca cookbook langsung dari direktori lokal dan menerapkannya, cocok untuk node terisolasi meski tanpa node registry atau data bag terpusat.
sudo chef-clientchef-zero adalah server in-memory palsu yang berjalan di workstation. Ia meniru Chef Infra Server secara fungsional — mendukung knife, data bag, environment, node registry — tanpa menyimpan apa pun secara permanen. Mode zero menjadi standar development modern karena perilakunya paling dekat dengan production tanpa repot setup server.
cd ~/lab-chef/chef-repo
knife zero bootstrap localhost --ssh-user devops
# Atau langsung jalankan chef-client dengan -z
chef-client -z -r 'recipe[nginx]'Tip
Untuk latihan di series ini, mode zero adalah pilihan terbaik: perintah knife seperti knife node list tetap bisa dipakai, tapi tidak ada server yang harus dirawat. Di episode 9 kita akan beralih ke Chef Infra Server sungguhan.
Bootstrap adalah proses menginstall Chef Infra Client ke node baru dan mendaftarkannya ke server, semua dilakukan dari workstation melalui SSH. Dengan mode zero, kita bisa bootstrap node lokal (atau container/VM yang bisa diakses) dengan mudah.
cd ~/lab-chef/chef-repo
knife zero bootstrap localhost --ssh-user devops --sudo \
--node-name node-01
# Verifikasi node terdaftar
knife node listnode-01Important
Bootstrap memerlukan akses SSH ke node dan akun yang memiliki hak sudo. Pastikan SSH key kalian sudah terpasang ke node (ssh-copy-id) dan user punya akses sudo tanpa password interaktif agar proses bootstrap berjalan mulus.
Setelah bootstrap, node sudah menjalankan chef-client secara berkala (default setiap 30 menit melalui cron/service scheduler). Kita bisa menguji satu perintah konfigurasi langsung dari workstation:
knife ssh 'name:node-01' 'sudo chef-client' --ssh-user devopsSekarang bagian yang paling seru: membuat cookbook. Chef menyediakan generator yang membuat struktur lengkap secara otomatis.
cd ~/lab-chef
chef generate cookbook nginxStruktur hasil generator di atas adalah standar cookbook Chef. Beberapa direktori yang akan sering kalian pakai:
recipes/ — tempat file recipe (default.rb adalah entry point).attributes/ — nilai default attribute cookbook.templates/ — file konfigurasi ber-template (ERB).files/ — file statis yang disalin apa adanya.libraries/ — modul Ruby custom.metadata.rb — deskripsi cookbook: nama, versi, dependency.Mari tulis recipe sederhana yang menginstall nginx dan memastikan service-nya berjalan.
#
# Cookbook:: nginx
# Recipe:: default
#
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
endNote
Perhatikan pola resource Chef: nama resource (string), lalu blok do ... end berisi properti (action, dan nanti banyak properti lain). Resource package menangani perbedaan distro secara otomatis — di Debian ia memakai apt, di RHEL ia memakai yum/dnf.
Jalankan cookbook tersebut pada node uji menggunakan mode zero:
cd ~/lab-chef/chef-repo
knife cookbook upload nginx
knife node run_list set node-01 'recipe[nginx]'
knife ssh 'name:node-01' 'sudo chef-client' --ssh-user devopsStarting Chef Infra Client, version 19.x
...
Recipe: nginx::default
* package[nginx] action install
- install version 1.24.0 of package nginx
* service[nginx] action enable
- enable service service[nginx]
* service[nginx] action start
- start service service[nginx]
Chef Infra Client finished, 3/3 resources updatedTanda - install ... dan - start ... berarti resource berubah. Jalankan sekali lagi dan perhatikan perbedaannya — pada run kedua tidak ada tanda - karena state sudah sesuai. Itulah idempotency yang bekerja nyata.
Sebagai penutup praktik, verifikasi bahwa nginx benar-benar merespons permintaan HTTP di node-01:
knife ssh 'name:node-01' 'curl -sI http://localhost | head -n 1' --ssh-user devopsHTTP/1.1 200 OKDi episode 3 ini kita sudah praktik langsung: menginstall dan memverifikasi Chef Workstation, memahami tiga mode pengembangan (client, solo, zero), melakukan bootstrap node dengan knife zero bootstrap, membuat cookbook nginx dengan chef generate cookbook, dan mengkonvergennya ke node uji dengan hasil yang idempoten.
Inti yang harus dibawa pulang:
chef generate cookbook menghasilkan struktur standar: recipes/, attributes/, templates/, files/, dan metadata.rb.- hanya muncul saat state berbeda.knife node list, knife node run_list set, knife ssh adalah tiga perintah inti untuk mengelola node dari workstation.Sekarang kalian sudah punya cookbook nyata yang berhasil dikonvergen. Di episode 4 selanjutnya, kita akan membedah resources & recipes secara mendalam — delapan resource dasar (package, service, file, template, execute, directory, user, group), properti dan action-nya, serta cara menyusun recipe secara deklaratif dengan benar.