Şef - Kitaplıklar
Şef Kütüphaneleri, yemek kitabı tariflerinin düzgün ve temiz kalması için derlenmiş mantığı kapsüllemek için bir yer sağlar.
Kitaplığı Oluşturmak
Step 1 - Yemek kitabının kitaplığında yardımcı bir yöntem oluşturun.
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb
class Chef::Recipe
def netmask(ipaddress)
IPAddress(ipaddress).netmask
end
end
Step 2 - Yardımcı yöntemi kullanın.
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 - Değiştirilmiş yemek kitabını Şef Sunucusuna yükleyin.
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
Kitaplığı Test Etme
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...
Çalışma yöntemi
Chef kütüphanesi kodu, chef :: Recipe sınıfını açabilir ve 1. Adımda yapıldığı gibi yeni yöntemler ekleyebilir. Bu adım, bunu yapmanın en temiz değil, en basit yoludur.
class Chef::Recipe
def netmask(ipaddress)
...
end
end
En İyi Uygulamalar
Chef :: recipe sınıfını açtığımızda, kirlenecek değişiklikler oluyor. En iyi uygulama olarak, kitaplığın içine yeni bir alt sınıf eklemek ve sınıf yöntemi olarak bir yöntem tanımlamak her zaman daha iyi bir yoldur. Bu, chef :: recipe ad alanını çekmekten kaçınır.
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb
class Chef::Recipe::IPAddress
def self.netmask(ipaddress)
IPAddress(ipaddress).netmask
end
end
Tarifin içindeki yöntemi şu şekilde kullanabiliriz:
IPAddress.netmask(ip)