Mengemas aplikasi dengan Chef Habitat: konsep origin dan plan, pembangunan artifact dengan hab pkg build, runtime supervisor dengan hab sup run, serta integrasi aplikasi Habitat di server yang dikelola Chef.

Di episode 16 kalian memperluas Chef dengan custom resource dan handler. Otomasi konfigurasi server sudah lengkap, tapi ada satu lapisan yang belum: aplikasi itu sendiri. Di episode 17 ini kita membahas Chef Habitat — framework untuk mengemas, menjalankan, dan mengatur aplikasi. Berbeda dengan Chef Infra yang mengelola server, Habitat mengemas aplikasi beserta runtime-nya menjadi artifact yang bisa berjalan di mana saja.
Tujuan episode ini:
hab pkg build.Habitat memperkenalkan beberapa istilah kunci:
plan.sh)..hart, berisi aplikasi dan dependency-nya.Plan adalah jantung Habitat. Contoh minimal:
pkg_name=hello-world
pkg_origin=myorigin
pkg_version="1.0.0"
pkg_maintainer="Arman <arman@example.com>"
pkg_deps=(core/nginx)
pkg_exports=(port=server.port)
do_build() {
cp -r ../assets/* "${pkg_prefix}/"
}Fungsi do_build() menyalin asset ke prefix paket. Habitat menyediakan banyak hook lain, seperti do_install, do_prepare, dan lifecycle hooks yang berjalan saat supervisor menghidupkan layanan.
Sebelum build, generate key signing untuk origin:
hab origin key generate myorigin
hab plan init myorigin hello-world
hab pkg build habitatHasil build berupa artifact .hart di direktori results/:
ls -la results/
hab pkg install results/myorigin-hello-world-1.0.0-*.hart
hab pkg export docker results/myorigin-hello-world-1.0.0-*.hartNote
Artifact .hart ditandatangani dengan key privat origin. Jangan menginstal paket dari origin yang tidak dikenal — verifikasi tanda tangan dengan hab pkg verify terlebih dahulu.
Supervisor mengawasi layanan: memulai proses, me-restart saat gagal, mengelola konfigurasi runtime, dan menghubungkan service group lewat bind.
hab sup run
hab svc load myorigin/hello-world --group productionTopology menentukan cara anggota service group berkoordinasi:
| Topology | Perilaku | Cocok untuk |
|---|---|---|
| standalone | Semua anggota mandiri | Stateless services |
| leader-follower | Satu leader dipilih, sisanya follower | Database, coordinator |
| star | Satu hub yang menghubungkan semua | Komunikasi terpusat |
Leader dipilih otomatis oleh supervisor; saat leader mati, supervisor memilih penggantinya.
Chef dan Habitat saling melengkapi. Chef mengelola server — paket sistem, user, sertifikat, firewall — sedangkan Habitat menjalankan aplikasi sebagai layanan. Cookbook chef-habitat menyediakan resource siap pakai:
hab_package "myorigin/hello-world" do
version "1.0.0"
end
hab_sup "default" do
topology "leader"
end
hab_service "myorigin/hello-world" do
group "production"
bind "backend:backend.app"
endDengan pola ini, run list node cukup memuat recipe[my_app::habitat]; saat converge, supervisor memuat dan menjalankan aplikasi. Kalian tetap memakai InSpec untuk memverifikasi layanan:
control "hello_world_is_running" do
describe port(8080) do
it { should be_listening }
end
endPada episode 17 ini kalian mengenal Chef Habitat: konsep origin dan plan, pembangunan artifact dengan hab pkg build, tanda tangan key origin, supervisor dengan hab sup run, service topology, serta integrasi aplikasi Habitat di atas server yang dikelola Chef.
Inti yang harus dibawa pulang:
.hart adalah paket lengkap yang ditandatangani.Di episode 18 berikutnya kita memperdalam lapisan pengujian yang disinggung di episode 15: Test Kitchen & Integration Testing — menyusun kitchen.yml, memilih driver, menulis verifikasi InSpec, dan mengintegrasikannya ke CI. Sampai jumpa di episode 18!