Chef - Perpustakaan

Library di Chef menyediakan tempat untuk merangkum logika yang tersusun agar resep buku masak tetap rapi dan bersih.

Membuat Perpustakaan

Step 1 - Buat metode pembantu di perpustakaan buku masak.

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb 
class Chef::Recipe 
def netmask(ipaddress) 
IPAddress(ipaddress).netmask 
end 
end

Step 2 - Gunakan metode helper.

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb 
ip = '10.10.0.0/24' 
mask = netmask(ip) # here we use the library method 
Chef::Log.info("Netmask of #{ip}: #{mask}")

Step 3 - Unggah buku resep yang dimodifikasi ke Chef Server.

vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook 
Uploading my_cookbook [0.1.0]

Menguji Perpustakaan

user@server $ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-01-18T14:38:26+00:00] INFO: Netmask of 10.10.0.0/24: 
255.255.255.0 
...TRUNCATED OUTPUT...

Metode Kerja

Kode perpustakaan koki dapat membuka kelas chef :: Recipe dan menambahkan metode baru seperti yang dilakukan pada Langkah 1. Langkah ini bukanlah cara terbersih tetapi cara termudah untuk melakukannya.

class Chef::Recipe 
def netmask(ipaddress) 
... 
end 
end

Praktik terbaik

Setelah kita membuka kelas chef :: resep, ada perubahan yang membuatnya tercemar. Sebagai praktik terbaik, selalu merupakan cara yang lebih baik untuk memperkenalkan sub kelas baru di dalam perpustakaan dan mendefinisikan metode sebagai metode kelas. Hal ini untuk menghindari penarikan namespace chef :: recipes.

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb 
class Chef::Recipe::IPAddress 
def self.netmask(ipaddress) 
IPAddress(ipaddress).netmask 
end 
end

Kita bisa menggunakan metode di dalam resep seperti

IPAddress.netmask(ip)