Chef - Ruby Gems avec recettes

Les recettes sont les éléments de base clés du livre de recettes qui est essentiellement du code Ruby. Il est possible d'utiliser toutes les fonctionnalités du langage Ruby dans la recette Chef. La plupart du temps, les fonctionnalités intégrées de Ruby sont suffisantes, mais parfois, il peut être nécessaire d'utiliser des gemmes Ruby supplémentaires. Par exemple, si l'on a besoin d'accéder à la base de données MySQL à partir de la recette elle-même.

La recette du chef a la capacité d'obtenir les gemmes Ruby requises afin de les utiliser dans la même recette.

Utilisation de iptable Gem dans la recette donnée

Step 1 - Modifiez la recette par défaut du livre de cuisine et installez la gemme à utiliser dans la recette.

[email protected]:~/chef-repo $ subl 
cookbooks/my_cookbook/recipes/default.rb 
chef_gem 'ipaddress' 
require 'ipaddress' 
ip = IPAddress("192.168.0.1/24") 
Chef::Log.info("Netmask of #{ip}: #{ip.netmask}")

Step 2 - Téléchargez le livre de cuisine modifié sur le serveur Chef.

[email protected]:~/chef-repo $ knife cookbook upload my_cookbook 
Uploading my_cookbook [0.1.0]

Step 3 - Exécution du client Chef pour voir la sortie.

[email protected] $ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-01-18T14:02:02+00:00] INFO: Netmask of 192.168.0.1: 
255.255.255.0 
...TRUNCATED OUTPUT...

Méthode de travail

Les étapes d'exécution de Chef comprennent la phase de compilation, où il compile toutes les ressources et une phase d'exécution où Chef exécute les fournisseurs de ressources pour faire converger le nœud vers l'état souhaité. Si l'on a besoin d'une gemme Ruby particulière à l'intérieur du livre de cuisine, il faut installer la gemme pendant la phase de complication.

La ressource chef_gem fera exactement la même chose, et dans Chef, Omnibus est la seule façon de travailler. Sa fonction principale est de mettre des gemmes à la disposition de Chef lui-même.