Chef - Data Bags

I data bag di Chef possono essere definiti come una raccolta arbitraria di dati che è possibile utilizzare con i libri di cucina. L'uso dei data bag è molto utile quando non si desidera codificare gli attributi nelle ricette né memorizzare gli attributi nei libri di cucina.

Metodo di lavoro

Nella seguente configurazione, stiamo cercando di comunicare con l'URL dell'endpoint http. Per questo, dobbiamo creare un data bag, che conterrà i dettagli dell'URL dell'endpoint e lo utilizzerà nella nostra ricetta.

Step 1 - Crea una directory per il nostro data bag.

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

Step 2- Creare un articolo del sacchetto di dati per il cestino delle richieste. È necessario assicurarsi di utilizzare un URL requestBin definito.

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

Step 3 - Crea un data bag sul server Chef

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

Step 4 - Carica il data bag sul server Chef.

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

Step 5 - Aggiorna la ricetta predefinita del ricettario per ricevere il ricettario richiesto da un sacchetto dati.

[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 - Carica il ricettario modificato sul server Chef.

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

Step 7 - Eseguire il client Chef sul nodo per verificare se il bin della richiesta http viene eseguito.

[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...

Come funziona

Il data bag è una raccolta denominata di voci di dati della struttura. È necessario definire l'immissione dei dati e chiamare l'elemento del sacchetto di dati nel file JSON. Si può anche cercare un articolo del sacchetto di dati all'interno delle ricette per utilizzare i dati memorizzati nei sacchetti di dati.

Abbiamo creato un data bag chiamato hooks. Un data bag è una directory all'interno del repository Chef. Abbiamo usato il coltello per crearlo sul server.