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)