Sebelum menulis manifest pertama, siapkan skill dasar dan environment Puppet: pemahaman Linux dan Ruby, konsep declarative configuration management, serta instalasi Puppet, PDK, dan node uji.

Selamat datang di series Belajar Puppet! Series ini akan membawa kalian menguasai Puppet — platform infrastructure-as-code yang menjadi pionir configuration management — mulai dari konsep dasar dan arsitektur, manifest dan resource type, hingga module, Hiera, PuppetDB, Bolt, dan Puppet Enterprise. Puluhan episode akan membangun pemahaman kalian lapis demi lapis sampai siap diterapkan di production.
Tapi sebelum menulis manifest pertama, ada beberapa skill dasar dan tools yang wajib kalian siapkan terlebih dahulu. Mengapa prasyarat ini penting? Karena Puppet bukan sekadar bahasa untuk menulis konfigurasi — dia adalah sistem yang hidup di jaringan, bergantung pada SSL untuk autentikasi agent, DNS agar agent menemukan server, dan pemahaman Linux yang baik agar kalian bisa membaca kondisi server yang dikelola. Kalau fondasinya belum siap, error sertifikat dan DNS akan terasa seperti teka-teki tanpa ujung.
Episode 0 ini adalah peta jalannya: kita akan menyiapkan skill dasar, melengkapi tools, lalu memastikan lingkungan Puppet pertama kalian berjalan.
Puppet mengelola server Linux, jadi tiga area ini harus kalian kuasai:
| Area | Yang perlu dikuasai | Contoh perintah |
|---|---|---|
| Package manager | Install, update, hapus paket | apt install, dnf install |
| Service management | Start, stop, enable service | systemctl start, systemctl enable |
| User & permission | Membuat user, mengatur hak akses file | useradd, chmod, chown |
Kenapa penting? Karena sebagian besar resource yang akan kalian tulis di Puppet — package, service, file, user — pada dasarnya mengotomasi hal yang saat ini kalian lakukan manual lewat perintah di atas.
Puppet menganut model declarative: kalian mendeklarasikan keadaan yang diinginkan (desired state), bukan menulis urutan langkah untuk mencapai keadaan itu. Dua konsep kunci:
Bandingkan dengan scripting imperatif: kalian menulis langkah demi langkah, dan jika langkah pertama sudah pernah dijalankan, skrip itu bisa merusak keadaan. Paradigma declarative inilah yang membuat Puppet cocok untuk ribuan node.
Bahasa manifest Puppet menggunakan sintaks yang menyerupai Ruby. Kalian tidak perlu menjadi programmer Ruby, tapi memahami sintaks dasar akan sangat membantu:
$ seperti $domain.include profile::web.package ditulis sebagai package { 'nginx':{:puppet} } dengan parameter di dalam blok.Di episode 4 dan 5 kita akan menulis manifest lengkap, jadi tidak perlu mendalaminya sekarang.
Agent Puppet berkomunikasi dengan Puppet server melalui jaringan, dan kepercayaannya dibangun di atas sertifikat SSL. Setiap agent membuat certificate signing request yang harus disetujui server. Kalian juga perlu paham DNS, karena agent menemukan server melalui FQDN seperti puppet.example.com — bukan IP mentah.
Note
Konfigurasi DNS yang rapi akan menghemat banyak waktu di episode 3. Jika lab kalian tidak punya DNS server, pakai entri /etc/hosts di semua node — untuk skala lab cara ini cukup.
| Tools | Fungsi | Keterangan |
|---|---|---|
| Puppet Server | Server pusat yang menyusun catalog | OSS 8.x atau Puppet Enterprise |
| Puppet Agent | Agen yang berjalan di tiap node | Terinstall di semua node yang dikelola |
| PDK | Puppet Development Kit | Scaffolding dan testing module |
| Node uji | Target pengelolaan | VM atau container |
| Akun Forge | Unduh module komunitas | Opsional |
Puppet dapat dipasang dari repo resmi apt.puppetlabs.com (Debian/Ubuntu) atau yum.puppetlabs.com (RHEL family). Untuk lab, Puppet OSS 8.x sudah lebih dari cukup. Puppet Enterprise (PE) 2025.1.x juga tersedia dengan lisensi gratis sampai 10 node — kalian bisa mencobanya nanti di episode 3.
wget https://apt.puppetlabs.com/puppet8-release-focal.deb
sudo dpkg -i puppet8-release-focal.deb
sudo apt updatesudo rpm -Uvh https://yum.puppetlabs.com/puppet8-release-el-9.noarch.rpm
sudo dnf updateImportant
Pilih file repo yang sesuai dengan versi OS kalian. Kode focal merujuk Ubuntu 20.04, jammy untuk 22.04, dan el-9 untuk RHEL 9 family. Menggunakan repo yang salah akan membuat package manager gagal menemukan paket.
Tidak mau mengotori sistem utama? Puppet menyediakan image resmi di Docker Hub: puppet/puppetserver untuk server dan puppet/puppet-agent untuk agent. Cara ini paling cepat untuk memulai lab.
docker run --name puppetserver --hostname puppetserver.example.com -d puppet/puppetserver
docker run --name agent --hostname agent.example.com -d puppet/puppet-agentPDK adalah tool untuk membuat scaffolding module Puppet, menulis unit test, dan memvalidasi sintaks. Kita akan memakainya secara intensif mulai episode 5, jadi install sekarang.
sudo apt install pdk -ySiapkan minimal satu node uji — VM atau container — yang akan menjadi target pertama yang kalian kelola. Node ini harus bisa terhubung ke server dan memiliki resolusi nama yang benar.
Puppet Forge adalah registry module komunitas di forge.puppet.com. Mendaftar akun tidak wajib untuk membaca dan memakai module, tapi akan berguna jika kalian nanti ingin mempublikasikan module sendiri.
Setelah semua tools terpasang, pastikan semuanya berfungsi:
puppet --version
pdk --version
which facterKalian juga bisa mengecek fakta dasar node uji dengan facter untuk memastikan node tersebut dikenali:
facter os.name
facter networking.ipTip
Simpan versi Puppet yang terinstall. Di episode 4, perbedaan kecil di versi bisa memengaruhi penulisan beberapa resource — karena itu selalu ada perintah puppet --version. Biasakan mencantumkan versi Puppet saat bertanya di forum atau Slack.
puppet --version berjalan normal.Di episode 0 ini kalian sudah menyiapkan pijakan untuk seluruh series: memahami skill dasar Linux, konsep IaC, sintaks Ruby, dan networking yang menjadi fondasi Puppet, melengkapi tools yang dibutuhkan (Puppet Server, Puppet Agent, PDK, node uji), serta memverifikasi bahwa lingkungan kalian siap dipakai.
Inti yang harus dibawa pulang:
Di episode 1 berikutnya kita akan membahas sejarah, latar belakang, dan mengapa dunia membutuhkan Puppet — mulai dari era scripting manual, lahirnya CFEngine tahun 1993, kemunculan Puppet oleh Luke Kanies pada 2005, hingga bagaimana Puppet dibandingkan dengan Chef, Ansible, dan SaltStack. Pastikan lab kalian sudah berdiri, karena perjalanan Belajar Puppet baru saja dimulai!