Tutorial Pedge untuk Pemula: Dasar-Dasar & DSL

⚡ Ringkasan Cerdas

Puppet adalah platform manajemen konfigurasi sumber terbuka yang mengotomatiskan cara server disediakan, dikonfigurasi, dan dijaga konsistensinya. Platform ini menerapkan infrastruktur sebagai kode melalui bahasa khusus domain deklaratif, menggantikan administrasi manual yang berulang di seluruh armada server yang besar.

  • 🧩 Manajemen konfigurasi: Puppet menjaga server, penyimpanan, dan jaringan dalam keadaan yang diketahui dan konsisten serta menyimpan riwayat yang dapat diaudit dari setiap perubahan.
  • ️ Agen Utama Architekstur: Sebuah master Linux menyusun katalog, dan agen-agen berjalan di Linux, Windows, Solarisatau Mac OS menerapkannya di atas sertifikat yang aman.
  • 🔄 Model Tarik: Agen melakukan pengecekan setiap 1800 detik, mengambil kode Puppet yang dibutuhkan, dan memperbaiki setiap penyimpangan konfigurasi pada node.
  • 🧠 DSL Deklaratif: Ditulis dalam bahasa Ruby, Puppet menggunakan bahasa deklaratif, sehingga Anda mendefinisikan kondisi akhir yang diinginkan alih-alih perintah langkah demi langkah.
  • 🧱 Blok bangunan: Sumber daya, kelas, manifes, dan modul menyusun kode yang dapat digunakan kembali, dengan 49 tipe sumber daya inti bawaan yang tersedia secara default.
  • ⚙️ Contoh Praktik NTP: Definisikan dan deklarasikan sebuah kelas, validasi dengan puppet parser validate, lalu terapkan manifest menggunakan puppet apply.

Tutorial Puppet yang menjelaskan dasar-dasar manajemen konfigurasi, arsitektur master-agent, dan DSL deklaratif.

Puppet adalah alat manajemen konfigurasi sumber terbuka yang memungkinkan Anda mendefinisikan infrastruktur sebagai kode dan menjaga sejumlah besar server dalam keadaan yang konsisten dan dapat diulang. Sebelum kita mempelajari Puppet, mari kita pahami terlebih dahulu manajemen konfigurasi.

Apa itu Manajemen Konfigurasi?

Manajemen konfigurasi adalah proses memelihara perangkat lunak dan sistem komputer — seperti server, penyimpanan, dan jaringan — dalam keadaan yang diketahui, diinginkan, dan konsisten. Proses ini juga menyediakan akses ke catatan historis yang akurat tentang keadaan sistem untuk keperluan manajemen proyek dan audit.

Administrator sistem umumnya melakukan tugas-tugas berulang, seperti menginstal server dan mengkonfigurasinya. Para profesional ini dapat mengotomatiskan pekerjaan ini dengan menulis skrip.

Namun, hal ini menjadi pekerjaan yang sulit ketika mereka mengerjakan infrastruktur yang sangat besar. Alat manajemen konfigurasi seperti Puppet diperkenalkan untuk mengatasi masalah ini.

Apa itu Wayang?

Wayang Puppet adalah alat manajemen sistem untuk memusatkan dan mengotomatiskan proses manajemen konfigurasi. Puppet juga digunakan sebagai alat penyebaran perangkat lunak.

Ini adalah perangkat lunak manajemen konfigurasi sumber terbuka, yang banyak digunakan untuk konfigurasi server, manajemen, penyebaran, dan orkestrasi berbagai aplikasi dan layanan di seluruh infrastruktur suatu organisasi.

Wayang dirancang khusus untuk mengelola konfigurasi Linux dan Windows sistem. Itu ditulis dalam Ruby dan menggunakan keunikannya Doma Sistimewa Language (DSL) untuk menjelaskan konfigurasi sistem.

Apa versi Bonekanya?

Boneka hadir dalam dua versi:

  • Boneka Sumber TerbukaIni adalah versi dasar dari alat manajemen konfigurasi Puppet, yang juga dikenal sebagai Open Source Puppet. Tersedia langsung dari situs web Puppet dan dilisensikan di bawah sistem Apache 2.0.
  • Puppet Enterprise: Versi komersial yang menawarkan fitur-fitur seperti pelaporan kepatuhan, orkestrasi, kontrol akses berbasis peran, GUI, API, dan alat baris perintah untuk pengelolaan node yang efektif.

Boneka apa yang bisa dilakukan?

Sebagai contoh, anggaplah Anda memiliki infrastruktur dengan sekitar 100 server. Sebagai administrator sistem, peran Anda adalah memastikan bahwa semua server ini selalu mutakhir dan berjalan dengan fungsionalitas penuh.

Admin Sistem Bekerja Secara Manual di Server
Admin Sistem bekerja secara manual di server

Untuk melakukan ini, Anda dapat menggunakan Puppet, yang memungkinkan Anda menulis kode sederhana yang dapat diimplementasikan secara otomatis di server-server tersebut. Hal ini mengurangi upaya manusia dan membuat proses pengembangan menjadi cepat dan efektif.

Boneka Mengotomatiskan Manajemen Server
Boneka mengotomatiskan Manajemen Server

Boneka melakukan fungsi-fungsi berikut:

  • Wayang memungkinkan Anda menentukan konfigurasi berbeda untuk setiap host.
  • Alat ini memungkinkan Anda untuk terus memantau server guna memastikan apakah konfigurasi yang dibutuhkan ada dan belum diubah. Jika konfigurasi diubah, Puppet akan kembali ke konfigurasi yang telah ditentukan sebelumnya pada host.
  • Selain itu, sistem ini juga memberikan kendali atas setiap sistem yang dikonfigurasi, sehingga perubahan terpusat secara otomatis diterapkan di mana pun.
  • Ini juga digunakan sebagai alat penyebaran, karena secara otomatis menyebarkan perangkat lunak ke sistem. Ini mengimplementasikan Infrastruktur sebagai kode, karena kebijakan dan konfigurasi ditulis sebagai kode.

DSL Boneka dan Paradigma Pemrograman

Sebelum mempelajari Puppet DSL, mari kita pahami paradigma pemrograman. Paradigma pemrograman adalah gaya yang Anda gunakan dalam pemrograman komputer.

Empat jenis paradigma adalah:

  • Imperatif.
  • Deklaratif.
  • Fungsional (yang dianggap sebagai bagian dari paradigma deklaratif).
  • Berorientasi pada objek.

Kita akan berfokus pada paradigma imperatif dan deklaratif.

Paradigma Imperatif

Paradigma pemrograman ini mengekspresikan logika suatu komputasi (apa yang harus dilakukan) dan juga menjelaskan alur kontrolnya (bagaimana melakukannya).

Contoh:

Misalkan Anda akan pergi ke kantor. Anda memesan taksi dan mulai memberikan petunjuk langkah demi langkah kepada pengemudi hingga Anda sampai di kantor. Menentukan apa yang harus dilakukan dan bagaimana melakukannya adalah gaya imperatif.

Paradigma Deklaratif

Paradigma pemrograman ini mengekspresikan logika suatu komputasi (apa yang harus dilakukan) tanpa menjelaskan alur kontrolnya (bagaimana cara melakukannya).

Contoh:

Misalkan Anda akan pergi ke kantor. Anda memesan taksi Uber dan hanya menentukan tujuan akhir (kantor). Menentukan apa yang harus dilakukan, tetapi tidak bagaimana melakukannya, adalah gaya deklaratif.

Pola pikir Apa yang harus dilakukan Bagaimana melakukan
sangat penting Ya Ya
Deklaratif Ya Tidak

Wayang menggunakan paradigma pemrograman deklaratif

Wayang menggunakan pendekatan pemrograman deklaratif.

Contoh: Buat pengguna di sistem.

Hal ini dapat dilakukan menggunakan pola pemrograman imperatif dengan skrip shell. Di sini, kita menentukan cara membuat pengguna dan perintah apa yang akan digunakan pada sistem operasi.

Paradigma Deklaratif

Namun, hal ini juga dapat dilakukan menggunakan pola pemrograman deklaratif hanya dengan beberapa baris kode Puppet dan bahasa khusus domain (DSL) Puppet, dan tetap mencapai hasil yang sama.

Paradigma Deklaratif

Model penerapan alat manajemen konfigurasi

Ada dua model penerapan untuk alat manajemen konfigurasi:

  • Model penerapan berbasis push: dimulai oleh node master.
  • Model penerapan berbasis tarik: diprakarsai oleh agen.

Model penerapan berbasis push

Dalam model penyebaran ini, server master mengirimkan konfigurasi dan perangkat lunak ke masing-masing agen. Setelah memverifikasi koneksi yang aman, master menjalankan perintah dari jarak jauh pada agen. Misalnya, Mungkin dan Tumpukan Garam.

Model penyebaran berbasis tarikan

Dalam model penerapan ini, masing-masing server menghubungi server master, memverifikasi dan membangun koneksi yang aman, mengunduh konfigurasi dan perangkat lunaknya, lalu mengkonfigurasi diri mereka sendiri sesuai kebutuhan — misalnya, Puppet dan Chef.

Bagaimana Wayang bekerja?

Puppet didasarkan pada model penerapan tarik (pull deployment), di mana node agen melakukan pengecekan secara berkala — setelah setiap 1800 beberapa detik — dengan node master untuk melihat apakah ada yang perlu diperbarui pada agen. Jika pembaruan diperlukan, agen akan mengambil kode Puppet yang diperlukan dari master dan melakukan tindakan yang dibutuhkan.

Mari kita jelaskan hal ini dengan contoh pengaturan master-agent.

Master

Ini adalah mesin berbasis Linux dengan perangkat lunak Puppet master yang terpasang di dalamnya. Mesin ini bertanggung jawab untuk memelihara konfigurasi dalam bentuk kode Puppet. Node master hanya dapat berupa Linux.

Agen

Ini adalah mesin target yang dikelola oleh Puppet, dengan perangkat lunak agen Puppet yang terpasang di dalamnya.

Agen tersebut dapat dikonfigurasi pada sistem operasi apa pun yang didukung, seperti Linux, Windows, Solarisatau Mac OS.

Komunikasi antara master dan agen terjalin melalui sertifikat yang aman.

Komunikasi Agen Dalang Wayang
Komunikasi Agen Dalang Wayang

Komunikasi antara Master dan Agen

Langkah 1) Setelah konektivitas terjalin antara agen dan master, agen Puppet mengirimkan data tentang statusnya ke server master Puppet. Data ini disebut Fakta, dan informasi ini mencakup nama host, detail kernel, alamat IP, detail nama file, dan sebagainya.

Komunikasi antara Master dan Agen
Agen Mengirim Fakta ke Master

Langkah 2) Puppet master menggunakan data ini dan menyusun daftar konfigurasi yang akan diterapkan pada agen. Daftar konfigurasi yang akan dilakukan pada agen ini dikenal sebagai sebuah katalogHal ini dapat mencakup instalasi paket, peningkatan atau penghapusan, pembuatan sistem file, pembuatan atau penghapusan pengguna, reboot server, perubahan konfigurasi IP, dan sebagainya.

Komunikasi antara Master dan Agen
Master mengirimkan katalog ke Agen

Langkah 3) Agen menggunakan daftar konfigurasi ini untuk menerapkan perubahan konfigurasi yang diperlukan pada node.

Jika tidak ada penyimpangan dalam konfigurasi, agen tidak melakukan perubahan konfigurasi apa pun dan membiarkan node berjalan dengan konfigurasi yang sama.

Komunikasi antara Master dan Agen
Agen menerapkan konfigurasi

Langkah 4) Setelah selesai, node tersebut akan melaporkan kembali ke Puppet master, yang menunjukkan bahwa konfigurasi telah diterapkan dan selesai.

Blok Boneka

Puppet memberikan fleksibilitas untuk mengintegrasikan laporan dengan alat pihak ketiga menggunakan API Puppet.

Empat jenis blok bangunan boneka adalah:

  1. Publikasi
  2. Kelas
  3. Nyata
  4. Modul

Sumber Daya Wayang

Sumber daya Puppet adalah blok bangunan dari Puppet.

Sumber daya adalah fungsi bawaan yang berjalan di bagian belakang untuk melakukan operasi yang dibutuhkan di Puppet.

Kelas Boneka

Berbagai sumber daya yang berbeda dapat dikelompokkan menjadi satu unit yang disebut kelas.

Manifes Wayang

Manifest adalah direktori yang berisi file DSL Puppet. File-file ini memiliki ekstensi .pp, yang merupakan singkatan dari program Puppet. Kode Puppet terdiri dari definisi atau deklarasi kelas-kelas Puppet.

Modul Boneka

Modul adalah kumpulan file dan direktori, seperti manifest dan definisi kelas. Modul merupakan unit yang dapat digunakan kembali dan dibagikan di Puppet.

Sebagai contoh, MySQL modul menginstal dan mengkonfigurasi MySQL, Dan Jenkins modul mengelola Jenkins.

Modul Boneka
Modul Boneka

Jenis sumber daya Wayang

Secara umum, sebuah sistem terdiri dari file, pengguna, layanan, proses, paket, dan sebagainya. Dalam Puppet, ini disebut sumber daya, dan merupakan blok bangunan fundamental dari Puppet.

Semua operasi pada agen Puppet dilakukan dengan bantuan sumber daya Puppet.

Sumber daya Puppet adalah alat siap pakai yang digunakan untuk melakukan berbagai tugas dan operasi pada platform apa pun yang didukung. Kita dapat menggunakan satu sumber daya Puppet untuk melakukan tugas tertentu, atau kita dapat menggunakan beberapa sumber daya Puppet bersama-sama untuk melakukan penyebaran konfigurasi aplikasi yang kompleks.

Sumber daya dapat memiliki tipe yang berbeda. Kegunaan boneka sumber daya ke jenis sumber daya untuk menggambarkan konfigurasi sistem.

Ada tiga jenis jenis sumber daya:

  1. Jenis sumber daya inti boneka atau bawaan.
  2. Jenis sumber daya yang ditentukan boneka.
  3. Jenis sumber daya kustom boneka.

Jenis sumber daya inti boneka atau bawaan

Tipe sumber daya inti atau bawaan adalah tipe sumber daya Puppet yang sudah dibuat sebelumnya dan disertakan bersama perangkat lunak Puppet. Semua tipe sumber daya inti atau bawaan Puppet ditulis dan dipelihara oleh tim Puppet.

Jenis sumber daya yang ditentukan boneka

Tipe sumber daya yang didefinisikan adalah tipe sumber daya ringan yang ditulis dalam bahasa deklaratif Puppet menggunakan kombinasi tipe sumber daya yang sudah ada.

Jenis sumber daya kustom boneka

Jenis sumber daya khusus adalah jenis sumber daya yang sepenuhnya disesuaikan dan ditulis dalam Ruby.

Mari kita jelajahi lebih lanjut jenis-jenis sumber daya Puppet.

Di terminal, ketik perintah berikut untuk menampilkan daftar subperintah yang terkait dengan Puppet:

Puppet --help

Jenis Sumber Daya Kustom Boneka

Dalam kasus kami, kami tertarik pada sub-perintah “sumber“, yang akan kita gunakan untuk mencari informasi tentang tipe sumber daya Puppet bawaan.

Di terminal, ketik salah satu perintah berikut untuk menampilkan daftar tindakan terkait dengan subperintah Puppet “sumber"

Puppet help resource		
Puppet resource --help		

Jenis Sumber Daya Kustom Boneka

Dalam kasus ini, kita memiliki sumber sebagai subperintah dan –tipe sebagai tindakan tersebut.

Boneka memiliki 49 jenis sumber daya inti bawaan.

Di terminal, ketik perintah berikut untuk menampilkan daftar tipe sumber daya Puppet bawaan yang tersedia:

puppet resource –types

Jenis Sumber Daya Kustom Boneka

Setiap jenis mendukung daftar atribut. Atribut ini memberikan penjelasan rinci yang digunakan Wayang untuk mengelola sumber daya.

Untuk mengetahui semua atribut yang terkait dengan tipe sumber daya Puppet, gunakan perintah berikut:

puppet describe <resource type name>	

Parameter tersebut akan mencantumkan semua atribut yang tersedia untuk tipe sumber daya tersebut.

paket deskripsi boneka

Jenis Sumber Daya Kustom Boneka

Sangat sulit bagi seseorang yang baru mengenal Puppet untuk memahami dan menghubungkan banyak file kode Puppet yang tidak terkelola. Di sinilah kita membutuhkan beberapa dukungan kelompok.ping Untuk menghubungkan berbagai operasi. Tujuannya adalah untuk menyelesaikan satu masalah tunggal, seperti semua operasi yang diperlukan untuk mengkonfigurasi SSH pada server, layanan NTP, atau server web atau server basis data lengkap dari awal.

Apa itu Kelas Boneka?

Kelas Puppet adalah kumpulan sumber daya Puppet yang dikemas bersama sebagai satu unit.

Boneka memperkenalkan kelas untuk membuat struktur dapat digunakan kembali dan terorganisir.

Pertama, kita perlu mendefinisikan kelas menggunakan sintaks definisi kelas. Kelas harus unik dan hanya dapat dideklarasikan satu kali dengan nama yang sama:

class <class-name> {
<Resource declarations>
}

Contoh:

class ntpconfig {
    file {
        "/etc/ntp.conf": 
     ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n",
    }
}

Sejauh ini, kita hanya mendefinisikan kelasnya; kita belum menggunakannya di mana pun. Ini berarti kode yang telah kita tulis tidak akan pernah dieksekusi kecuali kita mendeklarasikan kelas ini di tempat lain.

Deklarasi Kelas

Untuk menggunakan kelas yang telah didefinisikan dalam kode Anda, gunakan memasukkan kata kunci.

class ntpconfig {
    file {
        "/etc/ntp.conf": 
      ensure=> "present", 
      content=> "server 0.centos.pool.ntp.org iburst\n",
    }
}
include ntpconfig

Mari kita pahami hal ini dengan skenario dunia nyata.

Demo instal NTP

Pertama, pastikan paket NTP belum terpasang di server. Perintah berikut tidak akan mengembalikan apa pun jika paket NTP tidak terpasang di server:

rpm -qa | grep -i ntp

Demo Instal NTP

Seperti yang kita lihat, paket NTP sudah ada di server. Mari kita hapus paket NTP yang sudah ada:

yum remove ntp

Setelah menghapus paket, pastikan file ntp.conf sudah tidak ada lagi:

ls -lrt /etc/ntp.conf

Demo Instal NTP

Verifikasi bahwa layanan ntp tidak ada dengan menjalankan perintah berikut:

systemctl status ntp

Demo Instal NTP

Buat file .pp baru untuk menyimpan kode. Dari baris perintah:

vi demontp.pp

Beralih ke mode sisipan dengan menekan tombol i pada keyboard.

Ketik kode berikut untuk membuat file baru:

# Class Definition 
class ntpconfig {
    # Installing NTP Package 
  package {"ntp": 
    ensure=> "present",
    }
    # Configuring NTP configuration file 
  file {"/etc/ntp.conf": 
    ensure=> "present", 
    content=> "server 0.centos.pool.ntp.org iburst\n",
    }
    # Starting NTP services 
  service {"ntpd": 
    ensure=> "running",
    }
}

Setelah selesai mengedit, tekan tombol Esc.

Untuk menyimpan file, tekan :wq!

Langkah selanjutnya adalah memeriksa apakah kode tersebut memiliki kesalahan sintaksis. Jalankan perintah berikut:

puppet parser validate demontp.pp

Pastikan Anda telah beralih ke akar Agar pengguna dapat menyelesaikan pengujian tanpa kesalahan, dengan menjalankan perintah:

su root

uji adalah langkah berikutnya dalam proses pembuatan kode. Jalankan perintah berikut untuk melakukan uji coba:

Puppet applies demontp.pp --noop

Langkah terakhir adalah menjalankan Gunakan Puppet dalam mode nyata dan verifikasi hasilnya.

puppet apply demontp.pp

Puppet tidak melakukan apa pun karena kelas demo tersebut hanya didefinisikan tapi tidak menyatakan.

Jadi, sampai Anda mendeklarasikan kelas Puppet, kode tersebut tidak akan diterapkan.

Mari kita menyatakan kelas demo di dalam kode yang sama menggunakan mencantumkan nama kelas di akhir kode:

# Class Definition 
class ntpconfig {
    # Installing NTP Package 
  package {"ntp": 
    ensure=> "present",
    }
    # Configuring NTP configuration file 
  file {"/etc/ntp.conf": 
    ensure=> "present", 
    content=> "server 0.centos.pool.ntp.org iburst\n",
    }
    # Starting NTP services 
  service {"ntpd": 
    ensure=> "running",
    }
}

# Class Declaration 
include ntpconfig

Lagi, memeriksa apakah kode tersebut memiliki kesalahan sintaksis. Jalankan perintah berikut:

puppet parser validate demontp.pp

Pastikan Anda telah beralih ke akar Agar pengguna dapat menyelesaikan pengujian tanpa kesalahan, dengan menjalankan perintah:

su root

pengujian adalah langkah berikutnya dalam proses pembuatan kode. Jalankan perintah berikut untuk melakukan uji coba:

Puppet apply demontp.pp --noop

Langkah terakhir adalah menjalankan Gunakan Puppet dalam mode nyata dan verifikasi hasilnya.

puppet apply demontp.pp

Kali ini, kode tersebut diterapkan karena kelas telah didefinisikan dan kemudian dideklarasikan.

Demo Instal NTP

Pastikan file ntp.conf sudah ada:

ls -lrt /etc/ntp.conf

Verifikasi bahwa layanan ntp telah dimulai dengan menjalankan perintah berikut:

systemctl status ntpd

Demo Instal NTP

Pertanyaan Umum Demo Slot

Puppet ditulis dalam bahasa Ruby. Ia menggunakan Bahasa Khusus Domain (DSL) deklaratifnya sendiri sehingga administrator dapat mendeskripsikan keadaan sistem yang diinginkan alih-alih membuat skrip untuk setiap langkah. DSL Puppet terinspirasi oleh Ruby, tetapi Anda tidak perlu mengetahui Ruby untuk menulis manifest.

Puppet menggunakan model penarikan berbasis agen yang deklaratif dan DSL-nya sendiri, sehingga node mengambil katalog dari master. Mungkin Puppet tidak menggunakan agen dan mengirimkan playbook YAML melalui SSH. Puppet cocok untuk penegakan hukum jangka panjang oleh negara bagian, sementara Ansible lebih sederhana untuk orkestrasi cepat dan sesuai permintaan.

Secara default, Puppet master, yang juga disebut Puppet Server, mendengarkan pada port TCP 8140. Agen Puppet terhubung ke port ini melalui HTTPS untuk mengirimkan fakta dan mengunduh katalog yang telah dikompilasi. Pastikan port 8140 terbuka di firewall antara agen dan master.

Puppet master harus berjalan di Linux. Agen Puppet berjalan di banyak platform, termasuk Linux, Windows, Solarisdan Mac OS. Dukungan agen lintas platform ini memungkinkan satu master Puppet untuk mengelola berbagai server dan workstation dari satu tempat terpusat.

Puppet Forge adalah repositori publik modul Puppet yang sudah jadi dan dibagikan oleh Puppet dan komunitas. Alih-alih menulis manifest dari awal, Anda dapat mengunduh modul yang menginstal dan mengkonfigurasi perangkat lunak seperti... MySQL or JenkinsKemudian, sesuaikanlah dengan lingkungan Anda.

Ya. Puppet tetap menjadi alat manajemen konfigurasi dan infrastruktur sebagai kode yang banyak digunakan, dan sekarang dikelola oleh Perforce. Puppet 8 adalah rilis utama saat ini, dan masih mendukung Puppet Open Source dan Puppet komersial. Puppet Enterprise untuk mengelola armada server skala besar.

Asisten AI dapat menghasilkan Puppet DSL dari perintah bahasa biasa, menjelaskan manifest yang ada, dan menandai kesalahan sintaks atau logika sebelum Anda menjalankan puppet parser validate. Alat-alat seperti ChatGPT Mempercepat proses pembuatan konten, tetapi selalu tinjau sumber daya yang dihasilkan untuk memastikan jalur yang benar dan sifat idempotensi.

Ya. Kopilot GitHub Melengkapi secara otomatis manifest Puppet, deklarasi sumber daya, dan definisi kelas dari komentar singkat atau konteks file. RevPeriksa outputnya untuk memastikan tipe sumber daya, nama atribut, dan dependensi yang benar, karena kode yang dihasilkan dapat merujuk pada modul atau nilai default yang sudah usang.

Ringkaslah postingan ini dengan: