GNU/Linux >> Belajar Linux >  >> Linux

Memahami Sumber Daya Wayang, Manifes, Modul, dan Kelas dengan Contoh

Dalam tutorial ini, saya akan menjelaskan tentang sumber daya Wayang, manifes, modul, dan kelas dengan contoh. Juga, saya berasumsi bahwa Anda sudah menginstal node master/agen Wayang dan siap digunakan. Untuk menggunakan Wayang, Anda perlu memahami bagaimana wayang menangani sumber daya dan bagaimana manifes &modul dibuat.

Prasyarat:

Seperti yang saya katakan sebelumnya, Anda harus menginstal dan mengkonfigurasi node Wayang Master dan Agen.

Bahasa Khusus Domain Deklaratif Wayang  (DSL)

  • Boneka memiliki bahasa spesifik domain deklaratifnya sendiri yang mendefinisikan NEGARA dari suatu sistem.
  • Kode wayang ditulis dalam file bernama MANIFESTS dan disimpan dengan ekstensi .pp (misalnya, site.pp adalah file manifes utama)
  • Kode boneka berisi SUMBERDAYA yang mempengaruhi elemen sistem (seperti file, paket, layanan, pengguna, host, antarmuka, exec dll...). Sumber daya adalah unit dasar konfigurasi sistem dan setiap sumber daya menjelaskan aspek sistem.
  • Sumber daya dikelompokkan dalam CLASSES ( bernama blok kode Wayang) yang disimpan (terorganisir) di MODULES dan mereka tidak digunakan sampai dipanggil.
  • Master Wayang membuat KATALOG (dibuat berdasarkan kode dan data Wayang) dan klien menerapkannya.

Mari kita lihat istilah Wayang secara detail.

Sumber daya

Resource menjelaskan sesuatu tentang status sistem. Misalnya, apakah pengguna atau file tertentu ada, atau layanan harus dijalankan atau diaktifkan, atau paket harus diinstal.

Format sumber daya:

resource_type { 'name_of_the_resource':argumen => nilai, other_arg => nilai,}

Contoh 1:

file { 'test':path => '/tmp/test', content => 'Contoh konten', }

Contoh 2:

paket { 'ntp':sure => sekarang,}

Contoh 3:

service { 'ntpd':pastikan => berjalan, aktifkan => benar,}

Berikut adalah perintah untuk membuat daftar jenis sumber daya di Wayang:

 sumber daya # / opt / puppetlabs / boneka / bin / boneka --typesaugeascomputercronexecfilefilebucketgrouphostinterfacek5loginmacauthorizationmailaliasmaillistmcxmountnagios_commandnagios_contactnagios_contactgroupnagios_hostnagios_hostdependencynagios_hostescalationnagios_hostextinfonagios_hostgroupnagios_servicenagios_servicedependencynagios_serviceescalationnagios_serviceextinfonagios_servicegroupnagios_timeperiodnotifypackageresourcesrouterschedulescheduled_taskselbooleanselmoduleservicessh_authorized_keysshkeystagetidyuservlanwhityumrepozfszonezpool 

Manifes

Seperti yang telah dijelaskan sebelumnya, kode Wayang ditulis dalam file Manifest dengan ekstensi .pp . File manifes utama default terletak di:

# vim /etc/puppetlabs/code/environments/production/manifests/site.pp

Lebih banyak file manifes dapat dibuat di bawah /etc/puppetlabs/code/environments/production/manifests/

Kelas

Kelas berisi blok kode yang dapat dipanggil dari mana saja dalam kode. Kelas menyediakan fasilitas penggunaan kembali kode. Jika Anda mengetahui bahasa pemrograman seperti Java atau C++, maka mendefinisikan kelas di Wayang sama saja.

class class_name { ::::::::::Kode boneka ada di sini:::::::::}

Sekarang, kelas di atas dapat dimasukkan ke dalam kode Wayang seperti di bawah ini:

sertakan class_name

Modul

Modul membantu mengatur kumpulan manifes. Sebuah modul dapat ditambahkan di bawah /etc/puppetlabs/code/environments/production/modules. Kode Wayang besar dapat didistribusikan ke dalam beberapa manifes dan diatur menggunakan modul (di bagian bawah posting ini, Anda akan mempelajari cara Menginstal, mengonfigurasi, dan memulai layanan Apache – di mana masing-masing tugas ini dibagi menjadi kelas yang berbeda).

Nah, beri tahu kami, coba buat manifes untuk melakukan operasi sederhana.

Manifes Pertama Saya dalam Wayang

Contoh 1:Membuat file baru (di site.pp)

Langkah 1: Masuk ke Server Wayang (Master Node) sebagai pengguna istimewa.

Langkah 2: Buka /etc/puppetlabs/code/environments/production/manifests

Langkah 3: Edit site.pp - file manifes utama. Jika Anda tidak menemukannya, buatlah.

# vim site.pp

Langkah 4: Mari kita menulis kode Wayang untuk membuat file di /tmp/ di simpul agen Wayang. Kodenya seperti di bawah ini,

file { "/tmp/myFile":sure => "present", owner => "root", group => "root", mode => "644", content => "Ini adalah manifes pertama saya untuk buat file di direktori temp", }

Dalam kode di atas, kami telah menggunakan file jenis sumber daya, dengan argumen seperti pastikan , pemilik , grup , modus dan konten . File akan dibuat di /tmp .

Langkah 5 :Sekarang file manifes sudah siap. Pindah ke node Agen Wayang dan jalankan perintah di bawah ini.

[Agent]# /opt/puppetlabs/puppet/bin/puppet agent -t Info:Menggunakan lingkungan yang dikonfigurasi 'production' Info:Mengambil pluginfacts Info:Mengambil plugin Info:Caching katalog untuk puppetagent.test.in Info:Menerapkan konfigurasi versi '1471021726' Pemberitahuan:/Stage[main]/Main/File[/tmp/myFile]/ensure:mendefinisikan konten sebagai '{md5}8eadb0a0feef0bc667702434f816d8e8' Pemberitahuan:Katalog yang diterapkan dalam 0,09 detik

Output di atas mengatakan bahwa katalog telah diterapkan.

Catatan :Agen Wayang akan otomatis menghubungi server Wayang untuk menerima katalog guna mengonfigurasi diri. Tetapi jika Anda tidak ingin menunggu sinkronisasi otomatis, Anda dapat menjalankan perintah di atas.

Langkah 6 :Periksa apakah file telah dibuat dengan konten yang diperlukan.

# ls /tmp/myFile/tmp/myFile
# more /tmp/myFileIni adalah manifes pertama saya yang membuat file di direktori temp

Membuat Modul pertama Anda

Mari kita buat modul yang akan menginstal server web Apache pada node agen.

Langkah 1 :Ubah direktori ke folder modul.

# cd /etc/puppetlabs/code/environments/production/modules

Langkah 2 :Mari kita buat modul bernama httpd . Untuk melakukannya, kita akan menggunakan PuppetForge yang membutuhkan konvensi penamaan untuk diikuti. Misalnya,

organizationName-moduleName

Saat kita menginstal server web Apache, paket yang akan diinstal adalah httpd dan konvensi penamaan saya akan seperti yang ditunjukkan di bawah ini:

mypuppetorg-httpd

Langkah 3 :Jalankan perintah di bawah ini

# /opt/puppetlabs/puppet/bin/puppet module generate mypuppetorg-httpdKita perlu membuat file metadata.json untuk modul ini. Jawablah pertanyaan berikut; jika pertanyaan tidak berlaku untuk modul ini, silakan kosongkan. Wayang menggunakan Versi Semantik (semver.org) ke modul versi. Versi apa modul ini? [0.1.0]-->Siapa yang menulis modul ini? [mypuppetorg]-->Lisensi apa yang termasuk dalam kode modul ini? [Apache-2.0]-->Bagaimana Anda menjelaskan modul ini dalam satu kalimat?--> Menginstal server web Apache dan mengkonfigurasinyaDi mana repositori kode sumber modul ini?-->Di mana orang lain dapat mempelajari lebih lanjut tentang modul ini? -->Di mana orang lain dapat mengajukan masalah tentang modul ini?-->--------------------------------- -------{"name":"mypuppetorg-httpd","version":"0.1.0","author":"mypuppetorg","summary":"Instal server web Apache dan konfigurasikan", "license":"Apache-2.0","source":"","project_page":null,"issues_url":null,"dependencies":[{"name":"puppetlabs-stdlib","version_requirement":">=1.0.0"}],"data_provider":null}----------------------------------- -----Tentang menghasilkan metadata ini; melanjutkan? [t/Y]--> YNotice:Membuat modul di /etc/puppetlabs/code/environments/production/modules/httpd...Pemberitahuan:Mengisi template...Selesai; modul yang dihasilkan di httpd.httpd/Gemfilehttpd/Rakefilehttpd/exampleshttpd/examples/init.pphttpd/manifestshttpd/manifests/init.pphttpd/spechttpd/spec/classeshttpd/spec/classes/init_spec.rbhttpd/spec/spec_helper.rbhttpd/README.mdhttpd /metadata.json

Langkah 4 :Sebuah modul akan dibuat. Misalnya, httpd dan strukturnya seperti di bawah ini:

# ls httpd/ contoh  Gemfile  memanifestasikan  metadata.json  Rakefile  README.md  spec

Langkah 5 :Menyesuaikan modul

Langkah 4 akan membuat struktur direktori modul dan file manifes utama (untuk modul) bernama init.pp . Kami hanya akan membuka file untuk melihat tampilannya dan di akhir file, Anda akan menemukan httpd kosong kelas.

kelas httpd {}

Langkah 6 :Mari kita buat kelas terpisah untuk Instalasi (install.pp), Konfigurasi (configure.pp) dan memulai (start.pp) layanan Apache.

Membuat sub-kelas untuk menginstal Apache: Kami akan membuat file manifes baru bernama install.pp (nama modul kelas::install)

# pwd/etc/puppetlabs/code/environments/production/modules/httpd
# manifes vim/install.pp

Salin dan tempel kode di bawah ini:

# ==Kelas:httpd::installclass httpd::install mewarisi httpd {paket { 'httpd':ensure => diinstal,}}

Di sini, sub-kelas ‘instal ' akan mewarisi kelas utama httpd . Juga, perhatikan sintaks paket , yang berarti Jenis Wayang dan memastikan atribut memastikan bahwa paket tersebut diinstal.

Membuat subkelas untuk mengonfigurasi httpd (configure.pp – class modulename::configure)

# pwd/etc/puppetlabs/code/environments/production/modules/httpd
# vim manifests/configure.pp

Salin dan tempel kode di bawah ini untuk memastikan bahwa httpd.conf file dilindungi dengan benar.

class httpd::configure mewarisi httpd{       file { '/etc/httpd/conf/httpd.conf':              sure => file,              owner => 'root',             ' group ',        }}

Membuat subkelas untuk memulai httpd service (start.pp – class modulename::start):

# pwd/etc/puppetlabs/code/environments/production/modules/httpd
#  manifes vim/start.pp

Salin dan tempel kode di bawah ini:

kelas httpd::start mewarisi httpd{ service { 'httpd':sure     => running, enable     => true, hasstatus  => true, hasrestart => true, require => Package['httpd'], } } 

Sekarang, Anda telah membuat subkelas.

  • install.pp – untuk menginstal httpd paket
  • configure.pp – untuk mengonfigurasi izin yang tepat untuk httpd.conf berkas
  • start.pp – untuk mengaktifkan dan memulai httpd layanan.

Langkah 7: Sekarang kita harus membiarkan kelas utama httpd untuk mengetahui tentang subkelas (instal , konfigurasi dan mulai ). Untuk melakukannya, cukup buka kelas utama modul dan sertakan sub-kelasnya.

# manifes vim/init.pp

Sertakan pernyataan seperti di bawah ini:

kelas httpd {include httpd::installinclude httpd::configureinclude httpd::start}

Langkah 8: Kami selesai dengan kelas sekarang. Tetapi Anda perlu memberi tahu Wayang di simpul mana katalog harus diterapkan. Inilah cara Anda melakukannya.

Buka file manifes utama (di bawah /etc/puppetlabs/code/environments/production/manifests )

# vim site.pp

Salin dan tempel kode di bawah ini. Di sini httpd adalah kelas utama yang dibuat untuk mengelola server web Apache.

default simpul {include httpd}

Itu dia! Anda dapat menunggu hingga node Agen Wayang mengunduh katalog secara otomatis atau Anda dapat memicunya secara manual. Buka simpul Agen Wayang dan jalankan perintah di bawah ini.

Langkah 9:

[Agent]# /opt/puppetlabs/puppet/bin/puppet agent -t Info:Menggunakan lingkungan yang dikonfigurasi 'production' Info:Mengambil pluginfacts Info:Mengambil plugin Info:Caching katalog untuk puppetagent.test.in Info:Menerapkan konfigurasi versi '1472036234' Pemberitahuan:/Stage[main]/Httpd::Install/Package[httpd]/ensure:dibuat Pemberitahuan:/Stage[main]/Httpd::Configure/File[/etc/httpd/conf/httpd.conf ]/mode:mode diubah '0600' menjadi '0644' Pemberitahuan:/Stage[main]/Httpd::Start/Service[httpd]/ensure:pastikan diubah 'stopped' menjadi 'running' Info:/Stage[main]/ Httpd::Start/Service[httpd]:Menjadwalkan refresh pada Layanan[httpd] Pemberitahuan:Katalog diterapkan dalam 5,88 detik

Karena ini adalah modul pertama Anda, Anda mungkin ingin memverifikasi apakah paket telah diinstal dan layanan dimulai dengan benar.

[Agen]# rpm -qa|grep httpdhttpd-tools-2.4.6-40.el7.centos.4.x86_64httpd-2.4.6-40.el7.centos.4.x86_64
[Agent]# service httpd statusMengalihkan ke /bin/systemctl status  httpd.servicehttpd.service - Server HTTP Apache Dimuat:dimuat (/usr/lib/systemd/system/httpd.service; diaktifkan; preset vendor:dinonaktifkan) Aktif:aktif (berjalan) sejak 24-08-Rabu 17:29:29 IST; 6 menit yang lalu

Kesimpulan

Itu dia! Sekarang Anda tahu untuk menulis modul Wayang Anda sendiri untuk menginstal, mengkonfigurasi dan mengaktifkan layanan. Namun, tutorial ini hanyalah titik awal dalam melakukan keajaiban dengan Wayang. Selamat Membuat Wayang!


Linux
  1. Cara Menggunakan Perintah 'cat' dan 'tac' dengan Contoh di Linux

  2. Cara Zip File dan Direktori di Linux (dengan Contoh)

  3. Perintah Head and Tail di Linux Dijelaskan dengan Contoh

  1. Perluas Dan Hapus Tutorial Perintah Dengan Contoh

  2. Panduan Pemula FTP dan SFTP dengan 10 Contoh

  3. Referensi Array Perl dan Tutorial Dereference Dengan Contoh Praktis

  1. Cara mengimpor dan mengelola Modul boneka di Katello

  2. Perintah Zip dan Unzip Linux dengan Contoh

  3. Pelajari Perintah Pgrep dan Pkill dengan Contoh di Linux