Pelajari cara menginstal Chef Infra Server dari paket chef-server-core, menjalankan chef-server-ctl reconfigure dan status, membuat organisasi serta pengguna, konfigurasi SSL, hingga manajemen server seperti backup dengan knife-ec-backup, high availability, dan jalur upgrade.

Di episode 8 kalian sudah menguasai knife sebagai remote control infrastruktur dari workstation. Kalian tahu cara mengupload cookbook, membuat data bag, bootstrap node, dan mengatur environment beserta pembekuan versi. Semua perintah itu berkomunikasi dengan sebuah komponen pusat yang belum pernah kalian bongkar: chef-server.
Tanpa chef-server, seluruh data node, cookbook, data bag, dan hasil run chef-client tidak punya tempat tinggal. Server inilah yang menyimpan state infrastruktur dan melayani API untuk knife serta chef-client. Memahami cara memasang dan mengelolanya adalah keterampilan yang membedakan pengguna Chef dari administrator Chef.
Episode 9 ini akan membahas instalasi Chef Infra Server dari paket chef-server-core, perintah chef-server-ctl, pembuatan organisasi dan pengguna, konfigurasi SSL, serta manajemen lanjutan seperti backup dengan knife-ec-backup, high availability, dan jalur upgrade.
Chef Infra Server didistribusikan sebagai paket server yang berisi seluruh komponennya: PostgreSQL untuk database, Elasticsearch untuk pencarian, Nginx untuk proxy, dan RabbitMQ untuk antrian. Di masa lalu paket ini bernama chef-server-core, kini tersedia dengan nama chef-server untuk versi terbaru.
Unduh paket yang sesuai dengan platform, lalu pasang dengan package manager. Contoh untuk Ubuntu:
wget https://packages.chef.io/files/stable/chef-server/15.10.20/ubuntu/22.04/chef-server-core_15.10.20-1_amd64.deb
sudo dpkg -i chef-server-core_15.10.20-1_amd64.debSetelah paket terpasang, jalankan langkah konfigurasi awal. Perintah chef-server-ctl reconfigure merangkai seluruh komponen internal, membuat skema database, dan menghasilkan sertifikat default:
sudo chef-server-ctl reconfigure
sudo chef-server-ctl statuschef-server-ctl reconfigure adalah perintah yang paling penting: setiap kali kalian mengubah berkas /etc/chef-server/chef-server.rb, jalankan ulang perintah ini agar perubahan diterapkan. chef-server-ctl status menampilkan ringkasan kesehatan setiap komponen seperti berikut:
run: bookshelf: (pid 1024) 3s; run: log: (pid 1021) 3s
run: elasticsearch: (pid 1040) 2s; run: log: (pid 1036) 2s
run: nginx: (pid 1055) 2s; run: log: (pid 1052) 2s
run: postgresql: (pid 1068) 1s; run: log: (pid 1065) 1s
run: rabbitmq: (pid 1083) 1s; run: log: (pid 1080) 1s
run: redis_lb: (pid 1097) 1s; run: log: (pid 1094) 1sKata run: di awal setiap baris menandakan komponen berjalan normal. Jika sebuah komponen tampil sebagai down: atau exit:, kalian bisa menyelidikinya dengan chef-server-ctl tail <komponen> untuk melihat log secara langsung.
Note
Chef Infra Server versi 15.x masih memakai Elasticsearch untuk fitur pencarian node. Pada rilis yang lebih baru, pencarian dialihkan ke OpenSearch. Prinsip pengelolaannya sama, tetapi versi komponen internal berbeda, sehingga selalu sesuaikan dengan dokumentasi rilis yang kalian pakai.
Chef-server memakai model dua lapis: pengguna (user) adalah akun manusia yang berkomunikasi lewat knife, sedangkan organisasi (org) adalah wadah berisi cookbook, node, data bag, dan pengguna yang berhak mengelolanya. Satu pengguna bisa menjadi anggota dari banyak organisasi.
Buat pengguna admin server terlebih dahulu, lalu buat organisasi yang menaungi infrastruktur:
sudo chef-server-ctl user-create arman \
"Arman Dwi" \
arman@devnull.vercel.app \
'S3cur3P@ss' \
--filename /home/arman/.chef/arman.pem
sudo chef-server-ctl org-create devnull \
"Devnull Organization" \
--association_user arman \
--filename /home/arman/.chef/devnull-validator.pemOpsi --filename menyimpan kunci privat pengguna dan validator key ke file lokal. Kunci pengguna (arman.pem) dipakai knife untuk berkomunikasi dengan server atas nama arman. Validator key (devnull-validator.pem) dipakai hanya saat bootstrap node pertama kali.
Warning
Kunci privat pengguna hanya ditampilkan sekali saat pembuatan. Jika hilang, kalian tidak bisa mengambilnya kembali dari server dan harus membuat kunci baru dengan chef-server-ctl user-edit. Simpan file .pem di lokasi yang aman dan atur permission ketat.
Kalian juga bisa menambah pengguna lain ke dalam organisasi:
sudo chef-server-ctl user-create sari "Sari Wulandari" sari@devnull.vercel.app 'P@ssw0rd' --filename /home/sari/.chef/sari.pem
sudo chef-server-ctl org-user-add devnull sari --adminChef-server secara default memakai sertifikat self-signed. Untuk produksi, ganti dengan sertifikat dari CA yang dipercaya dengan mengedit /etc/chef-server/chef-server.rb:
nginx['ssl_certificate'] = "/etc/chef-server/certs/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/chef-server/certs/privkey.pem"
nginx['server_name'] = "chef.example.com"Setelah disimpan, terapkan dengan reconfigure dan verifikasi:
sudo chef-server-ctl reconfigure
openssl s_client -connect chef.example.com:443 -servername chef.example.comopenssl s_client menampilkan rantai sertifikat yang dikirim server. Pastikan kalimat Verify return code: 0 (ok) muncul agar tidak ada error sertifikat saat knife atau chef-client berkomunikasi.
Di sisi workstation, tambahkan entri berikut di config.rb agar knife mempercayai sertifikat:
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'arman'
client_key "#{current_dir}/arman.pem"
chef_server_url 'https://chef.example.com/organizations/devnull'| Aspek | Pengguna (user) | Organisasi (org) |
|---|---|---|
| Identitas | Akun manusia | Wadah data server |
| Sumber utama | user-create | org-create |
| Bisa ada banyak | Ya, banyak user | Ya, banyak org |
| Anggota | Berhak di banyak org | Menampung banyak user |
Important
URL chef_server_url di config.rb harus menyertakan nama organisasi, misalnya https://chef.example.com/organizations/devnull. Tanpa bagian tersebut, knife tidak tahu wadah mana yang dipakai dan akan gagal dengan error 404.
Server yang menyimpan seluruh state infrastruktur wajib dicadangkan. Alat resmi untuk ini adalah knife-ec-backup, plugin yang membuat salinan seluruh data server termasuk node, cookbook, data bag, dan pengguna.
chef gem install knife-ec-backup
knife ec backup /backups/chef-server-$(date +%F)Perintah di atas menulis seluruh state ke direktori /backups/chef-server-2026-08-09 dalam format yang bisa dipulihkan dengan knife ec restore. Jalankan backup secara terjadwal melalui cron atau pipeline CI agar snapshot selalu segar.
Untuk high availability, Chef Infra Server menyediakan mode frontend dan backend. Mode ini memakai replikasi PostgreSQL untuk data dan memerlukan minimal tiga server backend. Karena kompleksitasnya tinggi, Chef merilis mode HA terpisah sebagai paket automate-ha yang dikelola dengan perintah khusus:
sudo chef-server-ctl install-frontend
sudo chef-server-ctl install-backend
sudo chef-server-ctl setup-backendCaution
Konfigurasi HA tidak bisa dipasang setelah server sudah dipakai produksi dalam mode standalone. Rencanakan arsitektur HA sejak awal, karena migrasi dari standalone ke HA memerlukan penyiapan server baru lalu memindahkan data dengan backup dan restore.
Jalur upgrade Chef Infra Server mengikuti versi mayor secara bertahap. Panduan resmi melarang lompatan lintas beberapa versi mayor sekaligus. Proses umumnya:
sudo chef-server-ctl stop
sudo dpkg -i chef-server-core_15.10.20-1_amd64.deb
sudo chef-server-ctl reconfigure
sudo chef-server-ctl statusSelalu ambil backup penuh sebelum upgrade, uji di lingkungan staging yang serupa, dan baca release notes untuk mengetahui perubahan komponen internal seperti Elasticsearch ke OpenSearch.
Tip
Sebelum upgrade, jalankan chef-server-ctl status dan periksa disk dengan df -h. Upgrade memerlukan ruang kosong yang cukup karena paket baru mengganti komponen besar seperti database. Gagal menyediakan ruang adalah penyebab paling umum kegagalan upgrade.
Pada episode 9 ini kalian sudah memahami cara memasang Chef Infra Server dari paket chef-server-core, menjalankan chef-server-ctl reconfigure untuk konfigurasi awal dan perubahan, serta membaca kesehatan seluruh komponen dengan chef-server-ctl status. Kalian juga sudah belajar membuat pengguna dan organisasi, mengonfigurasi SSL untuk produksi, mencadangkan server dengan knife-ec-backup, serta strategi high availability dan jalur upgrade yang aman.
Inti yang harus dibawa pulang:
Di episode 10 berikutnya kita akan membahas cara modern untuk mendefinisikan infrastruktur secara penuh, yaitu Policyfiles. Kalian akan belajar Policyfile.rb beserta lockfile-nya untuk reproduksibilitas penuh, dan policy groups untuk rilis deterministik per environment tanpa mutasi cookbook di server. Sampai jumpa.