Episode ini merakit semua komponen menjadi arsitektur production: Chef Workstation dan Infra Server high-availability dengan banyak node, Policyfile untuk rilis deterministik, Automate untuk compliance, alur bootstrap node, pipeline CI/CD dari Test Kitchen ke InSpec dan Automate, pemantauan cookbook run, serta backup dan disaster recovery.

Di episode 20 kalian melihat fondasi baru Infra Client 19 dan Infra Server 15.10. Sekarang tibalah saatnya merangkai seluruh komponen yang sudah kalian pelajari selama 20 episode menjadi satu kesatuan yang siap produksi. Episode 21 bukan tentang fitur baru, melainkan tentang arsitektur: bagaimana Workstation, Infra Server, node, Policyfile, Automate, dan pipeline CI/CD duduk bersama, dan bagaimana arsitektur itu dijaga tetap hidup lewat monitoring, backup, dan disaster recovery.
Arsitektur Chef yang sehat memiliki tiga lapis:
Alurnya: engineer mengerjakan cookbook di Workstation, mengupload ke Infra Server, node menarik kebijakan lewat run, dan hasil run dikirim balik ke Automate untuk visibilitas. Model ini pull-based (dibahas di episode 1): node yang memulai komunikasi, sehingga arsitektur ini bekerja di belakang NAT tanpa perlu koneksi masuk ke node.
Workstation adalah mesin pengembangan — tidak perlu spesifikasi tinggi, tapi wajib menjaga kebersihan konfigurasi. Kredensial client.pem untuk Infra Server disimpan di ~/.chef dan tidak boleh ikut di-commit. Untuk pengelolaan multi-engineer, selaraskan konvensi: satu repository cookbook bersama, review via pull request, dan rilis lewat Policyfile.
Infra Server HA berarti menjalankan beberapa node server (biasanya tiga) dengan komponen aktif-pasif atau multi-primary, plus load balancer di depan. Dengan chef-server-ctl, konfigurasi HA dikelola lewat file konfigurasi bersama:
chef-server-ctl status
chef-server-ctl ring-listTujuannya bukan hanya toleransi kegagalan — HA memberi jendela maintenance: satu node server bisa di-upgrade sementara node lain melayani. Inilah yang dimaksud arsitektur production-grade: kegagalan komponen tidak sama dengan kegagalan layanan.
Di episode 10 kalian berkenalan dengan Policyfile. Di arsitektur production, Policyfile adalah kunci rilis deterministik — ia mengunci run_list dan seluruh pohon dependensi dalam lockfile, sehingga node dev, staging, dan production menjalankan kebijakan yang benar-benar sama:
name 'webserver'
run_list 'webserver::default', 'compliance::hardening'
cookbook 'webserver', path: 'cookbooks/webserver'
cookbook 'compliance', path: 'cookbooks/compliance'Rilis ke environment memakai policy group, bukan mutasi cookbook di server:
chef update policyfile/Policyfile.rb
chef push production policyfile/Policyfile.lock.jsonSetiap push menghasilkan versi lockfile yang tercatat — jejak audit yang jelas tentang kode apa yang berjalan di environment mana. Jika regresi muncul, rollback cukup dengan mem-push versi lockfile sebelumnya. Itulah kekuatan Policyfile: rilis bisa dibatalkan dengan satu perintah, bukan dengan menebak versi cookbook.
Chef Automate (episode 12) adalah lapisan yang mengubah run data menjadi keputusan. Di arsitektur production ia berperan ganda: compliance scanner dan dashboard visibilitas. Node mengirim hasil run dan hasil scan InSpec ke Automate lewat data collection service; Automate menampilkan status node, kepatuhan terhadap profil, dan alarm saat run gagal.
{
"name": "web-01",
"chef_environment": "production",
"run_list": ["recipe[webserver::default]"]
}Agar node mengirim data ke Automate, konfigurasi data collector dipasang pada node — biasanya lewat atribut yang di-set dari cookbook. Hasilnya: satu dasbor yang menjawab "apakah node saya patuh terhadap kebijakan?" tanpa harus login satu per satu.
Node baru masuk ke fleck lewat bootstrap: satu perintah dari Workstation (atau CI) yang menginstal chef-client, mendaftarkan node ke Infra Server, dan menjalankan run pertama:
knife bootstrap 203.0.113.10 \
-N web-01 \
-E production \
-r 'recipe[webserver::default]'Di produksi, bootstrap jarang dilakukan manual. Ia dipicu otomatis oleh pipeline: saat instance cloud dibuat (episode 14), user-data menjalankan script bootstrap; saat image baru lahir, chef-client sudah termuat di dalamnya. Yang penting konsisten: setiap node terdaftar dengan nama unik, environment yang benar, dan run_list yang tidak menyimpang dari kebijakan.
Pipeline production-grade memformalkan alur yang sudah kalian kenal di episode 18:
steps:
- name: kitchen test
command: kitchen test
- name: push policy to staging
command: chef push staging policyfile/Policyfile.lock.json
- name: inspec scan staging
command: inspec exec profiles/hardening -t ssh://staging
- name: promote to production
command: chef push production policyfile/Policyfile.lock.jsonSetiap gerbang di pipeline adalah keputusan yang bisa diaudit. Tidak ada cookbook yang mencapai production tanpa melewati Kitchen, tanpa scan InSpec, dan tanpa jejak rilis yang tercatat.
Run chef-client yang berjalan sendiri bukan berarti sehat. Monitor status run terakhir setiap node — gagal, lambat, atau tidak pernah muncul sama sekali:
Backup dan disaster recovery berlapis tiga:
chef-server-ctl backup (episode 9), disimpan off-site, dan diuji pemulihannya secara berkala.Latihan pemulihan rutin adalah bagian dari arsitektur — backup yang tidak pernah diuji adalah harapan, bukan rencana.
Episode 21 menyusun arsitektur production dari komponen yang sudah kalian pelajari satu per satu: Workstation sebagai sumber perubahan, Infra Server HA sebagai pusat kebenaran, node sebagai titik konvergensi, Policyfile sebagai kunci determinisme, Automate sebagai mata dan pengawas, bootstrap sebagai pintu masuk, pipeline sebagai gerbang, dan backup sebagai jaring pengaman terakhir.
Inti yang harus dibawa pulang:
Di episode 22 — episode terakhir — kita akan melihat keluar dan ke depan: ekosistem alternatif dan refleksi akhir — membandingkan Chef dengan Ansible, Puppet, SaltStack, serta Terraform dan Pulumi, lalu merangkum seluruh perjalanan dari episode 0 sampai 21. Sampai jumpa!