Tutorial Wayang untuk Pemula: Apa itu Wayang & Bagaimana Cara Menggunakannya?

Sebelum kita mempelajari Wayang, mari kita pahami:

Apa itu Manajemen Konfigurasi?

Manajemen konfigurasi adalah proses menjaga perangkat lunak dan sistem komputer (misalnya server, penyimpanan, jaringan) dalam kondisi yang diketahui, diinginkan, dan konsisten. Hal ini juga memungkinkan akses ke catatan sejarah status sistem yang akurat untuk tujuan manajemen proyek dan audit.

Administrator Sistem kebanyakan melakukan tugas berulang seperti menginstal server, mengkonfigurasi server tersebut, dll. Para profesional ini dapat mengotomatiskan tugas ini, dengan menulis skrip.

Namun, ini adalah pekerjaan yang sulit ketika mereka mengerjakan infrastruktur yang sangat besar. Alat Manajemen Konfigurasi seperti Boneka diperkenalkan untuk mengatasi masalah tersebut.

Apa itu Wayang?

Wayang adalah alat manajemen sistem untuk memusatkan dan mengotomatiskan proses manajemen konfigurasi. Boneka juga digunakan sebagai alat penyebaran perangkat lunak. Ini adalah perangkat lunak manajemen konfigurasi sumber terbuka yang banyak digunakan untuk konfigurasi server, manajemen, penerapan, dan orkestrasi berbagai aplikasi dan layanan di seluruh infrastruktur 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 Terbuka: Ini adalah versi dasar alat manajemen konfigurasi Wayang, yang juga dikenal sebagai Wayang Sumber Terbuka. Ini tersedia langsung dari situs Puppet dan dilisensikan di bawah sistem Apache 2.0.
  • Perusahaan Boneka: Versi komersial yang menawarkan 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?

Misalnya, Anda memiliki infrastruktur dengan sekitar 100 server. Sebagai admin 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 diterapkan secara otomatis di server ini. Hal ini mengurangi upaya manusia dan membuat proses pembangunan 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 untuk memastikan apakah konfigurasi yang diperlukan ada atau tidak dan tidak diubah. Jika konfigurasi diubah, alat Wayang akan kembali ke konfigurasi yang telah ditentukan sebelumnya pada host.
  • Ini juga memberikan kontrol atas semua sistem yang dikonfigurasi, sehingga perubahan terpusat akan dilakukan secara otomatis.
  • Ini juga digunakan sebagai alat penerapan 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 kita 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.

Kami akan fokus pada Imperatif dan Deklaratif.

Paradigma Imperatif

Paradigma pemrograman ini mengungkapkan logika komputasi (Apa yang harus dilakukan) dan menjelaskan aliran kontrolnya (Bagaimana melakukannya)

Contoh:

Asumsikan Anda akan pergi ke kantor, Anda memesan taksi dan mulai memberikan petunjuk langkah demi langkah kepada pengemudi hingga Anda mencapai kantor. Menentukan apa yang harus dilakukan dan bagaimana melakukannya adalah gaya yang penting.

Paradigma Deklaratif

Paradigma pemrograman ini mengungkapkan logika komputasi (Apa yang harus dilakukan) tanpa menjelaskan aliran kontrolnya (Bagaimana melakukannya)

Contoh:

Asumsikan Anda pergi ke kantor, Anda memesan taksi Uber dan menentukan tujuan akhir (Kantor). Menentukan apa yang harus dilakukan dan 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 dengan 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 dapat dilakukan dengan menggunakan pola pemrograman Deklaratif hanya dengan beberapa baris kode boneka, bahasa khusus domain boneka (DSL), 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 penerapan ini, server utama mendorong konfigurasi dan perangkat lunak ke masing-masing agen. Setelah memverifikasi koneksi aman, master menjalankan perintah dari jarak jauh pada agen. Misalnya, Mungkin dan Tumpukan Garam.

Model penerapan berbasis tarik.

Dalam model penerapan ini, masing-masing server menghubungi server master, memverifikasi dan membuat koneksi aman, mengunduh konfigurasi dan perangkat lunaknya, lalu mengonfigurasinya sendiri sesuai kebutuhan — misalnya, Wayang dan Koki.

Bagaimana Wayang bekerja?

Boneka didasarkan pada model penerapan Pull, di mana node agen melakukan check-in secara rutin setiap selesainya 1800 detik dengan node master untuk melihat apakah ada sesuatu yang perlu diperbarui di agen. Jika ada sesuatu yang perlu diperbarui, agen mengambil kode boneka yang diperlukan dari master dan melakukan tindakan yang diperlukan.

Mari kita jelaskan dengan sebuah contoh:

Contoh: Master – Pengaturan Agen:

Master

Mesin berbasis Linux dengan perangkat lunak master Wayang diinstal di dalamnya. Bertanggung jawab untuk memelihara konfigurasi dalam bentuk kode boneka. Node master hanya dapat berupa Linux.

Agen

Mesin target dikelola oleh boneka dengan perangkat lunak agen boneka terinstal di dalamnya.

Agen dapat dikonfigurasi pada sistem operasi apa pun yang didukung seperti Linux atau Windows or Solaris atau Mac OS.

Komunikasi antara master dan agen terjalin melalui sertifikat 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: Informasi ini mencakup nama host, detail kernel, alamat IP, detail nama file, dll.…

Komunikasi antara Master dan Agen
Agen Mengirim Fakta ke Master

Langkah 2) Puppet Master menggunakan data ini dan menyusun daftar dengan konfigurasi untuk diterapkan pada agen. Daftar konfigurasi yang akan dilakukan pada agen dikenal sebagai a katalog. Perubahan dapat dilakukan seperti instalasi paket, pemutakhiran atau penghapusan, pembuatan Sistem Berkas, pembuatan atau penghapusan pengguna, penyalaan ulang server, perubahan konfigurasi IP, dan lain-lain.

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 melapor kembali ke dalang yang menunjukkan bahwa konfigurasi telah diterapkan dan diselesaikan.

Blok Boneka

Wayang memberikan fleksibilitas untuk mengintegrasikan Laporan dengan alat pihak ketiga menggunakan API Wayang.

Empat jenis bahan penyusun Wayang adalah

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

Sumber Daya Wayang

Sumber Daya Wayang adalah elemen penyusun Wayang.

Sumber daya adalah fungsi bawaan yang berjalan di bagian belakang untuk melakukan operasi yang diperlukan dalam boneka.

Kelas Boneka

Kombinasi sumber daya yang berbeda dapat dikelompokkan menjadi satu kesatuan yang disebut kelas.

Manifes Wayang

Manifest adalah direktori yang berisi file DSL boneka. File-file tersebut memiliki ekstensi .pp. Ekstensi .pp adalah singkatan dari program boneka. Kode wayang terdiri dari definisi atau deklarasi Kelas Wayang.

Modul Boneka

Modul adalah kumpulan file dan direktori seperti Manifest, definisi Kelas. Mereka adalah unit yang dapat digunakan kembali dan dibagikan dalam Wayang.

Sebagai contoh, MySQL modul untuk menginstal dan mengkonfigurasi MySQL atau modul Jenkins untuk mengelola Jenkins, dll.

Modul Boneka
Modul Boneka

Jenis sumber daya Wayang

Secara umum, suatu sistem terdiri dari file, pengguna, layanan, proses, paket, dll. Dalam Wayang, ini disebut sumber daya. Sumber daya adalah landasan mendasar dalam pembangunan

Wayang. Semua operasi agen boneka dilakukan dengan bantuan sumber daya boneka.

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

Sumber daya dapat memiliki tipe yang berbeda. Kegunaan boneka sumber daya dan 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

Jenis sumber daya inti atau bawaan adalah jenis sumber daya boneka yang telah dibuat sebelumnya dan dikirimkan bersama perangkat lunak boneka. Semua jenis sumber daya inti atau bawaan Wayang ditulis dan dikelola oleh tim Wayang.

Jenis sumber daya yang ditentukan boneka

Tipe sumber daya yang ditentukan adalah tipe sumber daya ringan yang ditulis dalam bahasa deklaratif boneka menggunakan kombinasi tipe sumber daya yang ada.

Jenis sumber daya kustom boneka

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

Mari kita jelajahi tentang jenis sumber daya boneka…

Di terminal, ketik perintah berikut untuk menampilkan daftar subperintah yang relevan 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 jenis sumber daya boneka bawaan.

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

Puppet help resource		
Puppet resource --help		

Jenis Sumber Daya Kustom Boneka

Dalam hal ini, kami memiliki sumber sebagai subperintah dan –tipe sebagai tindakan.

Boneka memiliki 49 jenis sumber daya inti bawaan.

Di terminal, ketik perintah berikut untuk menampilkan daftar jenis sumber daya boneka 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 jenis sumber daya boneka, gunakan perintah berikut:

puppet describe <resource type name>	

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

paket deskripsi boneka

Jenis Sumber Daya Kustom Boneka

Sulit bagi orang baru untuk memahami dan menghubungkan banyak file kode boneka yang tidak dikelola. Di sinilah kita memerlukan pengelompokan untuk menyatukan operasi. Tujuannya adalah untuk memecahkan satu masalah, seperti semua operasi yang diperlukan untuk mengkonfigurasi ssh pada server atau layanan ntp atau server web atau server database lengkap dari awal.

Apa itu Kelas Boneka?

Kelas boneka adalah kumpulan sumber daya boneka yang digabungkan menjadi satu kesatuan.

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 kami hanya mendefinisikan kelasnya, tetapi kami belum menggunakannya di mana pun. Artinya kode yang kita tulis ini tidak akan pernah dieksekusi kecuali kita mendeklarasikan kelas ini di tempat lain.

Deklarasi Kelas

Untuk menggunakan kelas yang ditentukan dalam kode, 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 kasus nyata.

Demo instal NTP

Pertama, pastikan paket NTP belum ada di server, perintah berikut tidak akan mengembalikan apa pun jika telnet tidak ada di server:

rpm -qa | grep -i ntp

Demo Instal NTP

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

yum remove ntp

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

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

Ubah ke mode penyisipan dengan menekan i dari 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 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 beralih ke akar untuk dapat menyelesaikan tes tanpa kesalahan apapun, 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 boneka dalam mode nyata dan verifikasi hasilnya.

puppet apply demontp.pp

Wayang tidak menampilkan apa pun karena kelas demonya adil didefinisikan tapi tidak menyatakan.

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

Mari 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 beralih ke akar untuk dapat menyelesaikan tes tanpa kesalahan apapun, 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 boneka dalam mode nyata dan verifikasi hasilnya.

puppet apply demontp.pp

Kali ini kode diterapkan karena kelas telah ditentukan dan kemudian dideklarasikan.

Demo Instal NTP

Pastikan ntp.conf sudah ada:

ls -lrt /etc/ntp.conf

Verifikasi layanan ntp telah dimulai dengan menjalankan perintah berikut:

systemctl status ntpd

Demo Instal NTP

Ringkaslah postingan ini dengan: