GNU/Linux >> Belajar Linux >  >> Linux

Pengantar file Konfigurasi Wayang dengan Contoh di Linux

Puppet digunakan untuk mengotomatiskan beberapa tugas konfigurasi sysadmin rutin.

Wayang dalam sistem manajemen konfigurasi tingkat perusahaan.

Ini memungkinkan Anda untuk menentukan keadaan infrastruktur TI Anda. Setelah didefinisikan, Wayang akan secara otomatis menerapkan status yang benar secara terus-menerus.

1. Arsitektur Wayang

Wayang biasanya memiliki satu komponen server dan beberapa agen. Anda harus menunjuk server di jaringan Anda sebagai dalang, dan setiap simpul di jaringan Anda akan memiliki agen boneka yang terinstal di dalamnya.

Cara paling umum untuk menerapkan konfigurasi boneka ke klien adalah dengan menggunakan daemon master boneka (puppetmasterd) dan daemon klien boneka (puppetd). Anda juga dapat menerapkan manifes secara manual menggunakan alat boneka.

Konfigurasi ditentukan pada dalang, dikompilasi dan kemudian didorong ke klien boneka secara otomatis saat mereka terhubung.

Wayang mendukung berbagai platform dan sistem operasi yang berbeda, dan secara otomatis akan menjalankan perintah yang sesuai untuk menerapkan manifes Anda di setiap lingkungan.

Manifes tidak lain adalah detail tentang file, paket, operasi konfigurasi yang ditulis dalam bahasa yang dapat dimengerti oleh boneka.

Setiap simpul Wayang menghubungi dalang, secara default setiap 30 menit, untuk mengonfirmasi bahwa konfigurasinya mutakhir. Jika konfigurasinya berbeda atau ada konfigurasi baru yang tersedia, konfigurasi tersebut dikompilasi ulang dan kemudian diterapkan ke node boneka.

Dalam tutorial ini, kami akan menjelaskan cara membuat beberapa manifes dasar dan menerapkannya ke klien menggunakan alat boneka.

Sebagian besar konfigurasi sistem dapat dilihat dengan menggunakan alat baris perintah boneka. Semua komponen konfigurasi diatur ke dalam sumber daya. Sumber daya dikelompokkan ke dalam koleksi. Sumber daya terdiri dari jenis, judul, dan rangkaian atribut.

2. Contoh File Sumber Daya Wayang

Berikut ini adalah contoh dasar tentang cara melihat sumber wayang. Dalam hal ini, sumber daya boneka yang kita lihat adalah file (/etc/nsswitch).

# puppet resource file /etc/nsswitch.conf
file { '/etc/nsswitch.conf':
  ensure   => 'file',
  content  => '{md5}0d6009cdfd12646d251e86303bc0c48c',
  ctime    => 'Sun May 18 13:20:02 -0400 2014',
  group    => '0',
  mode     => '644',
  mtime    => 'Tue May 04 15:22:21 -0400 2010',
  owner    => '0',
  selrange => 's0',
  selrole  => 'object_r',
  seltype  => 'etc_t',
  seluser  => 'system_u',
  type     => 'file',
}

Wayang hadir dengan sejumlah jenis sumber daya secara default termasuk jenis untuk mengelola file, layanan, paket, pekerjaan cron, dan sistem file, antara lain.

Dalam contoh di atas, file adalah jenis sumber daya dan /etc/nsswitch.conf adalah judul sumber daya yang akan dikelola.

Segala sesuatu yang lain adalah atribut dari jenis sumber daya dan nilai yang ada pada atribut. Anda juga dapat memperluas boneka untuk menambahkan jenis sumber daya Anda sendiri.

Untuk melihat semua jenis sumber daya yang tersedia gunakan perintah berikut:

# puppet resource --types
augeas
computer
cron
exec
file
filebucket
group
host
nagios_hostdepend
..
..

3. Contoh File Manifes Wayang

Mari kita lihat cara membuat file manifes sederhana dan menjalankan perintah boneka untuk menerapkan konfigurasi ke server.

Contoh berikut membuat file manifes sederhana site.pp di bawah direktori /etc/puppet/manifests yang akan membuat file uji di bawah /var/tmp.

Awalnya, seperti yang kita lihat di bawah, kita tidak memiliki file pengujian.

# ls -ld /var/tmp/testfile
ls: cannot access /var/tmp/testfile: No such file or directory

Berikut ini adalah deklarasi sumber daya di dalam file manifes (site.pp):

# cat site.pp
file { "/var/tmp/testfile":
        ensure => "present",
        owner => "root",
        group => "root",
        mode => "664",
        content => "This is a test file created using puppet.
                    Puppet is really cool",
}

Untuk tujuan demo, kami menjalankan dalang dan agen pada node yang sama.

Saat Anda menjalankan perintah doll apply untuk pertama kalinya dengan opsi –noop, ini akan melakukan dry-run tanpa benar-benar menerapkan konfigurasi.

# puppet apply site.pp --noop
Notice: Compiled catalog for pemaster.mydomain.com in environment production in 0.06 seconds
Notice: /Stage[main]/Main/File[/var/tmp/testfile]/ensure: current_value absent, should be present (noop)
Notice: Class[Main]: Would have triggered 'refresh' from 1 events
Notice: Stage[main]: Would have triggered 'refresh' from 1 events
Notice: Finished catalog run in 0.03 seconds

Di atas Anda untuk melihat apa yang akan dilakukan konfigurasi baru tanpa benar-benar membuat perubahan pada node.js.

Sekarang, jalankan perintah tanpa opsi –noop untuk benar-benar menerapkan konfigurasi seperti yang ditunjukkan di bawah ini.

# puppet apply site.pp
Notice: Compiled catalog for pemaster.mydomain.com in environment production in 0.07 seconds
Notice: /Stage[main]/Main/File[/var/tmp/testfile]/ensure: created
Notice: Finished catalog run in 0.05 seconds

Setelah berhasil dijalankan, Anda akan melihat file temp baru dibuat di bawah /var/tmp/testfile dengan konten yang ditentukan di site.pp.

# ls -ld /var/tmp/testfile
-rw-rw-r--. 1 root root 69 Jun 26 14:25 /var/tmp/testfile

# cat /var/tmp/testfile
This is a test file created using puppet.
  Puppet is really cool

4. Mengontrol Layanan di Node Jarak Jauh menggunakan Wayang

Berikut adalah contoh untuk mengubah layanan dari status berhenti ke status berjalan pada node agen.

Ketika manifes konfigurasi ini disimpan di server master di bawah lokasi tertentu di bawah direktori konfigurasi boneka, agen yang berjalan di semua node menghubungi node master dan mengambil konfigurasi dan menerapkannya pada semua node klien sehingga dengan cara ini layanan akan dimulai pada semua node agen setelah konfigurasi boneka berhasil dijalankan.

# puppet resource service multipathd
service { 'multipathd':
  ensure => 'stopped',
  enable => 'false',
}

Dalam contoh ini, kami akan mengontrol multipathd layanan. Anda dapat menggunakan boneka untuk mengontrol layanan apa pun yang berjalan di sistem. Misalnya, httpd, mysqld, dll.

# puppet resource service multipathd > site.pp

Pastikan site.pp memiliki nilai berikut. Jika tidak, edit sesuai kebutuhan.

# vi site.pp
service { 'multipathd':
  ensure => 'running',
  enable => 'true',
}

Pertama, lakukan uji coba kering untuk memastikannya berfungsi seperti yang diharapkan.

# puppet apply site.pp --noop
Notice: Compiled catalog for pemaster.mydomain.com in environment production in 0.07 seconds
Notice: /Stage[main]/Main/Service[multipathd]/ensure: current_value stopped, should be running (noop)
Notice: Class[Main]: Would have triggered 'refresh' from 1 events
Notice: Stage[main]: Would have triggered 'refresh' from 1 events
Notice: Finished catalog run in 0.06 seconds

Terakhir, terapkan file konfigurasi, yang akan memulai layanan (dalam contoh ini multipathd), jika belum berjalan.

# puppet apply site.pp
Notice: Compiled catalog for pemaster.mydomain.com in environment production in 0.07 seconds
Notice: /Stage[main]/Main/Service[multipathd]/ensure: ensure changed 'stopped' to 'running'
Notice: Finished catalog run in 0.28 seconds

# puppet resource service multipathd
service { 'multipathd':
  ensure => 'running',
  enable => 'true',
}

# chkconfig --list | grep multipath
multipathd      0:off   1:off   2:on    3:on    4:on    5:on    6:off

5. Instal Paket di Node Jarak Jauh menggunakan Wayang

Anda dapat melakukan instalasi paket pada semua node agen dari jarak jauh menggunakan boneka.

Berikut ini adalah contoh file manifes untuk instalasi paket.

# cat site.pp
package { 'httpd':
  ensure => 'present',
}

Dalam contoh ini, ia akan menginstal paket Apache httpd jika tidak ada di situs jarak jauh. Seperti yang Anda lihat di bawah, paket tersebut diinstal.

# puppet apply site.pp
Notice: Compiled catalog for pemaster.mydomain.net in environment production in 0.70 seconds
Notice: /Stage[main]/Main/Package[httpd]/ensure: created
Notice: Finished catalog run in 79.97 seconds

Verifikasi bahwa paket diinstal dengan benar menggunakan perintah rpm.

# rpm -qa | grep -i httpd
httpd-2.2.15-39.el6.centos.x86_64
httpd-tools-2.2.15-39.el6.centos.x86_64

6. Dua Jenis Koleksi Wayang

Sumber daya dapat mengonfigurasi karakteristik item konfigurasi tunggal pada node. Namun, sebagian besar layanan dan aplikasi terdiri dari banyak sumber daya.

Misalnya, server web terdiri dari paket perangkat lunak, pengguna untuk menjalankan perangkat lunak, dan berbagai konfigurasi, logging, dan file lainnya.

Koleksi sumber daya memungkinkan Anda mengumpulkan sumber daya, menetapkannya ke koleksi, dan menerapkan koleksi ke node agen.

Ada 2 jenis pengumpulan sumber daya:

  1. Kelas
  2. Definisi

7. Contoh Koleksi Kelas Wayang

Kelas adalah kumpulan sumber daya yang mewakili item konfigurasi tunggal pada node Anda sedangkan definisi adalah kumpulan item konfigurasi yang memiliki beberapa representasi pada node Anda.

Pada contoh sebelumnya setelah instalasi paket, layanan tidak dimulai secara default. Kita dapat membuat manifes sederhana dengan kelas untuk menginstal paket dan memulai layanan setelah instalasi.

Dalam contoh berikut, kami menentukan hubungan antara dua sumber daya menggunakan atribut require.

# cat site.pp
class apache {
        package { 'httpd':
           ensure => 'present',
                }
        service {'httpd':
           ensure => 'running',
           require => Package["httpd"],
           }
}
include apache

Ini memastikan bahwa kondisi terpenuhi sebelum perubahan sumber daya diterapkan. Dalam hal ini layanan httpd memerlukan paket httpd untuk diinstal terlebih dahulu sebelum dapat mencoba membuka layanan.

# puppet apply site.pp
Notice: Compiled catalog for pemaster.mydomain.net in environment production in 0.93 seconds
Notice: /Stage[main]/Apache/Package[httpd]/ensure: created
Notice: /Stage[main]/Apache/Service[httpd]/ensure: ensure changed 'stopped' to 'running'
Notice: Finished catalog run in 32.82 seconds

# chkconfig --list | grep http
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

# rpm -qa | grep -i http
httpd-2.2.15-39.el6.centos.x86_64
httpd-tools-2.2.15-39.el6.centos.x86_64

8. Contoh Koleksi Definisi Wayang

Definisi adalah jenis koleksi sumber daya boneka.

Definisi harus digunakan untuk item konfigurasi yang memiliki banyak instance pada sebuah node.

Misalnya, server httpd mungkin memiliki beberapa host virtual yang ditentukan. Anda dapat membuat definisi untuk mengonfigurasi host virtual dan memberikan argumen yang sesuai untuk mengonfigurasi masing-masing. Selama setiap set argumen berbeda, boneka akan mengonfigurasi host virtual baru setiap kali definisi dievaluasi.

Berikut ini adalah contoh manifes sederhana dengan kelas dan definisi.

# cat site1.pp
class testdefine {
    define testdefine ($data) {
      file {"$title":
        ensure  => file,
        content => $data,
      }
    }

    testdefine {'/var/tmp/puppetfile1':
      data => "The name of the file is puppetfile1 and it is created by puppet\n",
    }

    testdefine {'/var/tmp/puppetfile2':
      data => "The name of the file is puppetfile2 and it is created by puppet\n",
    }
    testdefine {'/var/tmp/puppetfile3':
      data => "The name of the file is puppetfile3 and it is created by puppet\n",
    }

}

include testdefine

Jalankan kelas boneka dan manifes definisi di atas seperti yang ditunjukkan di bawah ini.

# puppet apply site1.pp
Notice: Compiled catalog for pemaster.mydomain.net in environment production in 0.24 seconds
Notice: /Stage[main]/Testdefine/Testdefine::Testdefine[/var/tmp/puppetfile2]/File[/var/tmp/puppetfile2]/ensure: defined content as '{md5}9079bd9c7650ae7d503c7df1a68bb9f0'
Notice: /Stage[main]/Testdefine/Testdefine::Testdefine[/var/tmp/puppetfile3]/File[/var/tmp/puppetfile3]/ensure: defined content as '{md5}75d495f0d3180b1f2dd052ac208d81fe'
Notice: /Stage[main]/Testdefine/Testdefine::Testdefine[/var/tmp/puppetfile1]/File[/var/tmp/puppetfile1]/ensure: defined content as '{md5}1fa93f1f2b82f8358866d58b2cb2f0b4'
Notice: Finished catalog run in 0.19 seconds

# ls -l /var/tmp/puppetfile*
-rw-r--r--. 1 root root 64 Jun 26 19:11 /var/tmp/puppetfile1
-rw-r--r--. 1 root root 64 Jun 26 19:11 /var/tmp/puppetfile2
-rw-r--r--. 1 root root 64 Jun 26 19:11 /var/tmp/puppetfile3

# cat /var/tmp/puppetfile*
The name of the file is puppetfile1 and it is created by puppet
The name of the file is puppetfile2 and it is created by puppet
The name of the file is puppetfile3 and it is created by puppet

9. Contoh File Konfigurasi Node Wayang

Sejauh ini kita telah melihat definisi sumber daya dan kumpulan sumber daya dalam bentuk kelas dan definisi.

Sekarang langkah selanjutnya adalah bagaimana menetapkan sumber daya dan koleksi ini ke klien.

Berikut adalah contoh bagaimana node didefinisikan di node.pp.

Wayang menggunakan file ini untuk menentukan kelas mana (berisi sumber daya) harus pergi ke server mana, misalnya, pada klien 1 Anda ingin menjalankan kelas httpd yang berisi sumber daya seperti paket httpd, layanan httpd &pada klien 2 Anda ingin menjalankan kelas ngnix yang berisi sumber daya seperti paket ngnix, layanan ngnix &file konfigurasi ngnix lainnya.

Contoh file node.pp berikut menjelaskan hal ini:

node 'puppetclient1.mydomain.net' {
include httpd_class
}
node 'puppetclient2.mydomain.net' {
include ngnix_class
}
node default {
    package { "perl": 
       ensure => present }
}

Di dalam definisi simpul Anda, Anda dapat menambahkan sumber daya, kelas, dan definisi.

Kelas ditambahkan menggunakan fungsi include.

Di dalangclient1.mydomain.net kami telah menyertakan httpd_class dan di dalangclient2.mydomain.net kami telah menyertakan ngnix_class.

Anda juga dapat memasukkan beberapa kelas dengan satu fungsi include. Jika tidak ada definisi simpul yang cocok, maka dibutuhkan nilai default yang ditentukan. Dalam hal ini, jika ada node lain, itu hanya akan menginstal paket Perl jika tidak ada.

10. Impor File Manifes Wayang

Sumber daya, kelas, dan definisi disimpan dalam file manifes.

File manifes khusus, yang disebut manifes situs, merupakan inti dari konfigurasi kami.

Saat memulai daemon master Wayang, file manifes situs, secara default terletak di /etc/puppet/manifests/site.pp, harus ada.

Dalam contoh di atas, kami menggunakan site.pp hanya untuk menjelaskan cara menerapkan manifes.

Dalam lingkungan boneka nyata site.pp Anda hanya akan memiliki konten di bawah ini dan dari file ini file lainnya diimpor untuk dieksekusi.

# cat site.pp
import "templates.pp"
import "nodes.pp"
import "classes/*"
import "groups/*"
import "users/*"
import "os/*"

Berikut ini adalah struktur direktori manifest boneka:

  • /manifests/classes/ – Direktori yang berisi semua kelas
  • /manifests/site.pp – file manifes utama
  • /manifests/templates.pp – Berisi node template
  • /manifests/nodes.pp – Berisi definisi simpul
  • /manifests/definitions/ – Berisi semua definisi
  • /manifests/groups/ – Berisi manifes yang mengonfigurasi grup
  • /manifests/os/ – Berisi kelas yang dirancang untuk mengonfigurasi node dengan sistem operasi tertentu
  • /manifests/users/ – Berisi manifes yang mengonfigurasi pengguna
  • /manifest/files/ – Berisi modul server file untuk file yang dapat didistribusikan Wayang

Linux
  1. Perintah Tee Linux dengan Contoh

  2. Cara Unzip File di Linux (dengan Contoh)

  3. Perintah JQ di Linux dengan Contoh

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. Perintah rsync Linux dengan contoh praktis

  1. Perintah Echo di Linux (Dengan Contoh)

  2. Perintah man di Linux dengan Contoh

  3. Perintah AWK di Linux dengan Contoh