Puppet Dijelaskan: Otomatisasi DevOps dan Percepatan Deployment
Dalam DevOps, Anda ingin mengotomatisasi sebanyak mungkin tugas. Konfigurasi lingkungan secara manual memakan waktu mingguan dengan infrastruktur yang luas. Pada saat semua siap, Anda sedang memadamkan kebakaran alih-alih mengimplementasikan solusi baru yang efektif, seperti server Rancher.
Puppet membantu mengotomatisasi tugas manual untuk menyediakan sistem dengan cepat dan men-deploy aplikasi. Manajemen infrastruktur dinamis ada di inti Puppet.
Artikel ini menjelaskan apa itu Puppet, masalah apa yang dipecahkan, dan cara menggunakan Puppet untuk mengotomatisasi pekerjaan manual sebagai tim DevOps dengan sukses.

Apa itu Puppet?
Puppet adalah alat IaC (Infrastructure as Code) untuk mengelola banyak server. Ditulis dalam Ruby (utama), Puppet beroperasi pada banyak sistem mirip Unix dan juga mendukung Windows.
Perangkat lunak ini sangat matang, dengan rilis awal pada tahun 2005. Puppet hadir sebagai perangkat lunak open-source gratis, dan versi proprietary juga tersedia untuk infrastruktur yang kompleks.
Apa itu Digunakan Puppet?
Puppet mengotomatisasi manajemen konfigurasi dan deployment server. Perangkat lunak memungkinkan menarik benang dan mengelola status pada banyak sistem sekaligus, dan pendekatan ini mengurangi penyiapan dan manajemen server secara individual.
Puppet mendefinisikan status yang diinginkan untuk sistem daripada bagaimana mencapainya. Konfigurasi berlaku untuk berbagai platform dan perangkat dan mempertahankan status di seluruh infrastruktur. Secara keseluruhan, ada kurang kebutuhan untuk administrator sistem memadamkan kebakaran, yang memungkinkan tim DevOps untuk mengimplementasikan solusi server baru dan lebih baik.
Manajemen Konfigurasi Puppet
Skrip otomatisasi membantu menangani tugas berulang, seperti menginstal dan mengonfigurasi server. Namun, saat bekerja dengan infrastruktur yang luas, skrip otomatisasi tidak bisa diskalakan.
Manajemen konfigurasi menyediakan solusi untuk konfigurasi infrastruktur yang luas. Praktik ini dianggap sebagai tulang punggung DevOps dan memungkinkan rilis perangkat lunak yang lebih sering dan lebih andal dalam pipeline DevOps yang terpadu.
Manajemen konfigurasi server terjadi berkat pendekatan infrastructure-as-code. Dalam kasus Puppet, kode manajemen server ada dalam kode Puppet, yang mirip dengan Ruby. Bahasa ini deklaratif dan menjelaskan konfigurasi berbasis model.
Bagaimana Cara Kerja Puppet?
Puppet menggunakan pendekatan client-server dan terdiri dari sistem berikut:
- Puppet Master adalah server dengan daemon Puppet Master yang mengelola informasi sistem yang krusial untuk semua node menggunakan manifests.
- Puppet Agents adalah node dengan Puppet yang terinstal dan daemon Puppet Agent yang berjalan.
Bagian di bawah menjelaskan elemen dan terminologi Puppet yang penting, yang membantu mengklarifikasi cara kerja Puppet.
Topologi dan Arsitektur Puppet
Puppet menggunakan arsitektur client/server yang terdiri dari Puppet Master dan Puppet Agents. Puppet Agents menggunakan mode pull untuk mem-poll master dan mengambil informasi konfigurasi spesifik node dan situs.
Topologi melalui langkah-langkah berikut:
- Node yang menjalankan daemon Puppet Agent mengumpulkan semua informasi (fakta) tentang dirinya sendiri, dan agen mengirim fakta ke Puppet Master.
- Puppet Master menggunakan data untuk membuat katalog tentang bagaimana node harus dikonfigurasi dan mengirimkannya kembali ke Puppet Agent.
- Puppet Agent mengonfigurasi dirinya sendiri berdasarkan katalog dan melaporkan kembali ke Puppet Master.
Puppet menggunakan utilitas bernama Facter untuk menemukan informasi sistem. Alat ini hadir dengan instalasi Puppet secara default.
Puppet Master
Puppet Master adalah daemon yang berjalan pada server dedicated. Puppet Master adalah sumber informasi dan otoritas konfigurasi sebagai node server. Master mengirim instruksi ke semua node agen dan mengawasi konfigurasi sistem.
Puppet Master bertanggung jawab untuk tugas-tugas berikut:
- Membuat katalog untuk agen.
- Transfer file dari server file ke agen.
- Menerima sertifikat SSL dari agen.
- Menyimpan manifests konfigurasi.
Puppet menggunakan manajemen akses identitas melalui pengguna dan grup yang tersedia, menyediakan keamanan dan hanya mengekspos informasi yang diperlukan ke agen. Namun, tidak semua tindakan memerlukan hak istimewa yang ditingkatkan.
Puppet Agents
Puppet Agent adalah daemon Puppet yang berjalan pada sistem atau node. Agen memiliki hak istimewa tertentu pada node untuk menerapkan katalog konfigurasi yang di-pull dari Puppet Master.
Untuk menerima izin komunikasi, agen meminta sertifikat SSL saat kontak pertama dengan master. Sertifikat diperiksa setiap kali agen meminta pembaruan konfigurasi dari master sebelum mengirim informasi. Master juga mengautentikasi ke agen untuk memastikan informasi konfigurasi yang benar.
Agen Puppet memodifikasi konfigurasi sistem dan memerlukan izin root untuk melakukan tugas.
Enkripsi dan Keamanan Komunikasi Puppet
Puppet menggunakan OpenSSL untuk komunikasi dan keamanan. Berbasis protokol SSL dan TLS, Puppet menggunakan enkripsi SSL/TLS standar dan sertifikat SSL untuk autentikasi dan verifikasi agen/master. Selain itu, Puppet mengenkripsi aliran trafik antara agen dan server menggunakan SSL/TLS dengan SHA-256 sebagai hash default.
Metode enkripsi di Puppet memastikan hal-hal berikut:
- Autentikasi dan verifikasi master/agen.
- Mencegah pelanggaran data antara master dan agen.
Master menghasilkan sertifikat CA sendiri, kunci privat, Daftar Pembatalan Sertifikat (CRL), dan sertifikat server. Sertifikat server dikirim ke agen untuk mengaktifkan komunikasi SSL dan TLS.
Keuntungan Puppet dan Mengapa Anda Harus Menggunakannya
Puppet adalah salah satu alat otomatisasi manajemen konfigurasi yang paling lama dan populer. Berikut adalah lima keuntungan yang memberikan alasan baik untuk mulai menggunakan Puppet.
1. Open source
Puppet adalah open source, yang membuat teknologi ini dapat diperluas. Pustaka dan modul custom memperkaya proyek individual untuk sesuai dengan kasus penggunaan Anda.
Open source juga datang dengan manfaat memiliki komunitas yang aktif. Banyak diskusi, forum, dan ahli siap membantu dan menjawab pertanyaan.
2. Abstraksi Sumber Daya
Tugas konfigurasi berulang, dan langkah yang sama sering diperlukan pada server dengan sistem operasi yang berbeda melalui langkah spesifik platform. Mengingat semua perintah adalah tugas yang mustahil.
Facter membantu Puppet mengetahui detail spesifik dan mencapai abstraksi. Data spesifik sistem dan detail OS semuanya familiar bagi Puppet berkat Facter.
3. Idempotensi
Konfigurasi berlebihan adalah masalah kompleks saat bekerja dengan banyak server, dan Puppet bertujuan untuk hanya menerapkan perubahan yang mempengaruhi sistem. Jika status yang diinginkan infrastruktur tercapai, Puppet tidak menjalankan perintah. Fitur Puppet ini dikenal sebagai idempotensi, yang membantu mengurangi redundansi dan meningkatkan efisiensi.
4. Lintas Platform
Puppet mencakup berbagai platform, yang meningkatkan jumlah server dalam proses otomatisasi konfigurasi. Alat ini bekerja di Windows, OS X, sistem berbasis Debian, Fedora, Gentoo, RHEL, dan Solaris.
5. Fleksibel
Bahasa Puppet termasuk cara untuk mengganti instruksi dan membuat pengecualian untuk skenario yang berbeda. Puppet juga membantu menjadwalkan tindakan pemeliharaan tertentu secara berkala.
Kesimpulan
Puppet adalah alat yang kuat untuk mengelola konfigurasi dan tugas server, dan merupakan pilihan yang sangat baik untuk server stabil yang tidak berubah secara dinamis atau sering.
Untuk melihat bagaimana Puppet dibandingkan dengan teknologi serupa lainnya, lihat artikel perbandingan kami: Ansible vs. Terraform vs. Puppet.