Chef - Bibliotheken
In den Bibliotheken von Chef können Sie die kompilierte Logik zusammenfassen, damit die Kochbuchrezepte sauber und ordentlich bleiben.
Bibliothek erstellen
Step 1 - Erstellen Sie eine Hilfsmethode in der Bibliothek des Kochbuchs.
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb
class Chef::Recipe
def netmask(ipaddress)
IPAddress(ipaddress).netmask
end
end
Step 2 - Verwenden Sie die Hilfsmethode.
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 - Laden Sie das geänderte Kochbuch auf den Chef Server hoch.
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
Testen der Bibliothek
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...
Arbeitsmethode
Der Code der Chefbibliothek kann die Klasse chef :: Recipe öffnen und neue Methoden hinzufügen, wie in Schritt 1 beschrieben. Dieser Schritt ist nicht der sauberste, aber der einfachste Weg, dies zu tun.
class Chef::Recipe
def netmask(ipaddress)
...
end
end
Empfohlene Vorgehensweise
Sobald wir die Chef :: Rezeptklasse öffnen, gibt es Änderungen, die verschmutzt werden. Als bewährte Methode ist es immer besser, eine neue Unterklasse in die Bibliothek einzuführen und eine Methode als Klassenmethode zu definieren. Dadurch wird vermieden, dass der Chef-Namespace von chef :: prescription abgerufen wird.
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb
class Chef::Recipe::IPAddress
def self.netmask(ipaddress)
IPAddress(ipaddress).netmask
end
end
Wir können die Methode innerhalb des Rezepts wie verwenden
IPAddress.netmask(ip)