Buku masak adalah salah satu komponen penting dalam sistem manajemen konfigurasi Chef; memungkinkan kita untuk mengonfigurasi dan melakukan tugas khusus (mendorong perubahan) pada node chef jarak jauh.
Dalam panduan ini, kita akan membuat buku masak dan kemudian memberi tahu Chef untuk mendorongnya, yaitu menjalankan langkah-langkah yang diuraikan dalam buku masak ke node.
Panduan ini mengasumsikan bahwa Anda memiliki lingkungan Chef yang berfungsi yang mencakup server, workstation, dan setidaknya satu node untuk mendorong perubahan konfigurasi.
BACA: Cara Menyiapkan Chef 12 di CentOS 7 / RHEL 7
Buku Masak:
Chef Cookbooks adalah unit yang menyimpan konfigurasi dan detail kebijakan untuk membawa node ke status tertentu. Buku masak dibuat di workstation dan kemudian diunggah ke server Chef. Buku masak kemudian diberikan ke node “run-list” yang merupakan daftar tindakan berurutan yang akan dijalankan pada node untuk membawa node ke keadaan yang diinginkan.
Buat Buku Masak Koki Sederhana:
Di bagian ini, kita akan membuat buku masak sederhana untuk menginstal dan mengkonfigurasi server web Apache.
BACA:Konfigurasi LAMP di CentOS 7 / RHEL 7
Masuk ke ruang kerja Chef Anda, buka ~/chef-repo/cookbooks . Anda direktori.
cd ~/chef-repo/cookbooks/
Buat buku masak yang disebut “httpd “. Ganti “httpd “, jika Anda ingin menamainya secara berbeda.
chef generate cookbook httpd
Keluaran:
Generating cookbook httpd - Ensuring correct cookbook file content - Ensuring delivery configuration - Ensuring correct delivery build cookbook content Your cookbook is ready. Type `cd httpd` to enter it. There are several commands you can run to get started locally developing and testing your cookbook. Type `delivery local --help` to see a full list. Why not start by writing a test? Tests for the default recipe are stored at: test/recipes/default_test.rb If you'd prefer to dive right in, the default recipe can be found at: recipes/default.rb
Buka direktori buku masak yang baru Anda buat, mis., httpd .
cd httpd
Saat Anda masuk ke direktori buku masak baru, Anda bisa melihat di bawah struktur direktori di dalamnya.
Keluaran:
-rw-r--r--. 1 root root 47 Nov 12 21:18 Berksfile -rw-r--r--. 1 root root 1133 Nov 12 21:18 chefignore -rw-r--r--. 1 root root 568 Nov 12 21:18 metadata.rb -rw-r--r--. 1 root root 53 Nov 12 21:18 README.md drwxr-xr-x. 2 root root 23 Nov 12 21:18 recipes drwxr-xr-x. 3 root root 38 Nov 12 21:18 spec drwxr-xr-x. 3 root root 20 Nov 12 21:18 test
Resep:
Resep terdiri dari serangkaian sumber daya yang mendefinisikan status layanan atau aplikasi tertentu, misalnya, satu sumber dapat mengatakan "layanan NTP harus berjalan", yang lain mungkin mengatakan "layanan telnet harus dihentikan"
Resepnya tidak terbatas hanya untuk mengelola layanan; itu juga dapat digunakan untuk menjalankan perintah, manajemen pengguna, dan banyak lagi.
BACA:Berbagai jenis sumber daya.
Pergi ke direktori resep. Di sana Anda dapat melihat file bernama “default.rb “. Kami akan menggunakan file ini untuk menambahkan sumber daya yang diperlukan untuk menjalankan server Apache.
cd recipes cat default.rb
Keluaran:
Secara default, file memiliki baris header di dalamnya.
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved.
Instal Apache:
Untuk memulai, mari tambahkan sumber daya untuk menginstal paket apache.
package 'httpd' do action :install end
Dimana,
paket – Mendefinisikan sumber daya paket
httpd – Nama paket yang ingin Anda instal, harus merupakan nama paket yang sah.
tindakan :instal – Ini menentukan tindakan untuk sumber daya “paket “, dalam kasus kami, pemasangan httpd .
Ketika resep ini berjalan di node, Chef akan memeriksa apakah Apache telah diinstal, jika ya, ia akan melewati resource ini dan beralih ke resource berikutnya. Jika tidak, ia akan menginstal Apache menggunakan penginstal sistem.
Kelola Layanan Apache:
Selanjutnya, buat layanan Apache untuk memulai secara otomatis pada saat startup sistem dan juga layanan tersebut harus aktif dan berjalan. Kode di bawah ini melakukan apa yang kami butuhkan.
service 'httpd' do action [ :enable, :start ] end
Dimana,
layanan – Mendefinisikan sumber daya layanan.
httpd – Nama layanan, harus merupakan nama layanan yang sah.
tindakan [ :enable, :start ] – Tentukan tindakan yang ingin Anda lakukan. Dalam kasus kami, sumber daya ini akan dimulai “httpd ” dan aktifkan saat memulai.
Berkas Indeks:
Sumber daya kami berikutnya adalah untuk menempatkan index.html file di root dokumen server Apache. Anda hanya perlu menentukan lokasi di mana ingin file tersebut dan dari mana mendapatkan file tersebut.
cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end
Dimana,
file_buku masak – Sumber daya untuk mentransfer file dari sub-direktori httpd/files ke jalur yang disebutkan yang terletak di node chef.
sumber – Tentukan nama file sumber. File biasanya ditemukan di COOK_BOOKS/files .
modus – Menyetel izin untuk file.
Membuat File Indeks:
Karena kami telah mendefinisikan “file_buku masak ”, kita perlu membuat file sumber “index.html ” di dalam file subdirektori buku masak Anda.
cd ~/chef-repo/cookbooks
Buat subdirektori “file ” di bawah buku masak Anda.
mkdir httpd/files
Tambahkan teks sederhana ke dalam index.html .
echo "Installed and Setup Using Chef" > httpd/files/index.html
Firewall:
Sumber daya terakhir kami adalah untuk mengonfigurasi firewall untuk mengizinkan http dan https lalu lintas dari mesin eksternal.
execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Dimana,
jalankan – Sumber daya untuk menjalankan satu perintah.
perintah – Mendefinisikan perintah aktual yang ingin Anda jalankan pada node.
abaikan_kegagalan – Lanjutkan menjalankan resep meskipun sumber daya gagal karena alasan apa pun, ini akan berguna saat sistem tidak mengaktifkan firewallD.
Versi final default.rb akan terlihat seperti di bawah ini.
vi ~chef-repo/cookbooks/httpd/recpies/default.rb
Keluaran:
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved. package 'httpd' do action :install end service 'httpd' do action [ :enable, :start ] end cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Unggah Buku Masak:
Setelah buku masak Anda selesai, Anda dapat mengunggahnya ke server Chef Anda.
knife cookbook upload httpd
Keluaran:
Uploading httpd [0.1.0] Uploaded 1 cookbook.
Periksa apakah Anda dapat membuat daftar buku masak yang baru saja Anda unggah.
knife cookbook list
Keluaran:
httpd 0.1.0
Untuk menghapus buku masak (opsional ).
knife cookbook delete cookbook_name
Tambahkan Buku Masak ke node Anda:
Anda dapat menambahkan buku masak ke run_list dari node tertentu menggunakan perintah berikut. Ganti chefclient.itzgeek.local dengan nama simpul klien Anda.
knife node run_list add chefclient.itzgeek.local httpd
Keluaran:
chefclient.itzgeek.local: run_list: recipe[httpd]
Untuk menghapus resep tertentu dari run_list (opsional ).
knife node run_list remove chefclient.itzgeek.local recipe[cookbook_name]
Mengambil Konfigurasi:
Masuk ke node klien tempat perangkat lunak klien Chef dijalankan.
BACA:Melakukan Bootstrap pada Node Baru dengan Pisau
Jalankan chef-client perintah pada node klien untuk memeriksa dengan server Chef apakah ada run_list baru dan jalankan run_list . itu yang telah ditetapkan untuk itu.
chef-client
Keluaran:
Starting Chef Client, version 12.16.42 resolving cookbooks for run list: ["httpd"] Synchronizing Cookbooks: - httpd (0.1.0) Installing Cookbook Gems: Compiling Cookbooks... Converging 5 resources Recipe: httpd::default * yum_package[httpd] action install - install version 2.4.6-40.el7.centos.4 of package httpd * service[httpd] action enable - enable service service[httpd] * service[httpd] action start - start service service[httpd] * cookbook_file[/var/www/html/index.html] action create (up to date) * execute[httpd_firewall] action run - execute /usr/bin/firewall-cmd --permanent --zone public --add-service http * execute[reload_firewall] action run - execute /usr/bin/firewall-cmd --reload Running handlers: Running handlers complete Chef Client finished, 5/6 resources updated in 24 seconds
Anda dapat memverifikasi bahwa ini berfungsi dengan mengunjungi alamat IP node atau nama domain Anda melalui browser web.
http://your-ip-addr-ess/Keluaran:
Ekstra:
Buku Masak Koki untuk membuat pengguna:
Anda dapat menggunakan buku masak berikut untuk membuat pengguna baru. Ganti hijau nilai sesuai dengan lingkungan Anda.
group "raj" do gid 9999 end user 'raj' do comment 'Admin [at] ITzGeek' uid '9999' gid '9999' manage_home true home '/home/raj' shell '/bin/bash' password '$6$89lC6OcN$xGO/4ia1j8YXY5TytLFccCjeITSCkgCgQbFMloF4O/kUWFOWhQBH5/BavEkvMj.0fuGx1pMxoUkKF6s9Tpnoj/' end
Itu saja.