Chef - Ruby Gems con recetas

Las recetas son los bloques de construcción clave de un libro de cocina que es básicamente código Ruby. Es posible utilizar todas las funciones del lenguaje Ruby dentro de la receta del Chef. La mayoría de las veces la funcionalidad incorporada de Ruby es suficiente, pero a veces es posible que necesite usar gemas Ruby adicionales. Por ejemplo, si se necesita acceder a la base de datos MySQL desde la propia receta.

La receta del chef tiene la capacidad de obtener las gemas de rubí necesarias para usarlas en la misma receta.

Usando iptable Gem en la receta dada

Step 1 - Edite la receta predeterminada del libro de cocina e instale la gema que se utilizará dentro de la receta.

[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 - Cargue el libro de cocina modificado en el servidor de Chef.

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

Step 3 - Ejecutando el cliente Chef para ver el resultado.

[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étodo de trabajo

Los pasos de ejecución de Chef consisten en la fase de compilación, donde compila todos los recursos y una fase de ejecución donde Chef ejecuta los proveedores de recursos para hacer converger el nodo al estado deseado. Si se necesita alguna gema Ruby en particular dentro del libro de cocina, es necesario instalar la gema durante la fase de complicación.

El recurso chef_gem hará exactamente lo mismo, y en Chef, Omnibus es la única forma de trabajar. Su función principal es poner gemas a disposición del propio Chef.