Chef - Bolsas de datos

Las bolsas de datos del chef se pueden definir como una colección arbitraria de datos que se pueden utilizar con libros de cocina. El uso de bolsas de datos es muy útil cuando uno no desea codificar atributos en recetas ni almacenar atributos en libros de cocina.

Método de trabajo

En la siguiente configuración, intentamos comunicarnos con la URL del extremo http. Para esto, necesitamos crear una bolsa de datos, que contendrá el detalle de la URL del punto final y lo usará en nuestra receta.

Step 1 - Cree un directorio para nuestra bolsa de datos.

[email protected]:~/chef-repo $ mkdir data_bags/hooks

Step 2- Cree un artículo de bolsa de datos para la ubicación de solicitudes. Es necesario asegurarse de que está utilizando una URL de requestBin definida.

[email protected]:~/chef-repo $ subl data_bags/hooks/request_bin.json { 
   "id": "request_bin", 
   "url": "http://requestb.in/1abd0kf1" 
}

Step 3 - Crea una bolsa de datos en el servidor Chef

[email protected]:~/chef-repo $ knife data bag create hooks 
Created data_bag[hooks]

Step 4 - Cargue la bolsa de datos en el servidor de Chef.

[email protected]:~/chef-repo $ knife data bag from file hooks requestbin.json 
Updated data_bag_item[hooks::RequestBin]

Step 5 - Actualice la receta predeterminada del libro de cocina para recibir el libro de cocina requerido de una bolsa de datos.

[email protected]:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb 
hook = data_bag_item('hooks', 'request_bin') 
http_request 'callback' do 
   url hook['url'] 
end

Step 6 - 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 7 - Ejecute el cliente Chef en el nodo para verificar si se ejecuta el contenedor de solicitudes http.

[email protected]:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-02-22T20:37:35+00:00] INFO: http_request[callback] 
GET to http://requestb.in/1abd0kf1 successful 
...TRUNCATED OUTPUT...

Cómo funciona

La bolsa de datos es una colección con nombre de entradas de datos de estructura. Es necesario definir la entrada de datos y llamar al elemento de la bolsa de datos en un archivo JSON. También se puede buscar el elemento de la bolsa de datos desde las recetas para utilizar los datos almacenados en las bolsas de datos.

Creamos una bolsa de datos llamada ganchos. Una bolsa de datos es un directorio dentro del repositorio de Chef. Usamos cuchillo para crearlo en el servidor.