Chef - Datentaschen

Chef-Datentaschen können als willkürliche Sammlung von Daten definiert werden, die mit Kochbüchern verwendet werden können. Die Verwendung von Datentaschen ist sehr hilfreich, wenn Sie keine Attribute in Rezepten fest codieren oder Attribute in Kochbüchern speichern möchten.

Arbeitsmethode

Im folgenden Setup versuchen wir, mit der http-Endpunkt-URL zu kommunizieren. Dazu müssen wir einen Datenbeutel erstellen, der die Endpunkt-URL-Details enthält und in unserem Rezept verwendet.

Step 1 - Erstellen Sie ein Verzeichnis für unsere Datentasche.

mma@laptop:~/chef-repo $ mkdir data_bags/hooks

Step 2- Erstellen Sie ein Datenbeutelelement für den Anforderungsfach. Man muss sicherstellen, dass man eine definierte requestBin-URL verwendet.

vipi@laptop:~/chef-repo $ subl data_bags/hooks/request_bin.json { 
   "id": "request_bin", 
   "url": "http://requestb.in/1abd0kf1" 
}

Step 3 - Erstellen Sie eine Datentasche auf dem Chef-Server

vipin@laptop:~/chef-repo $ knife data bag create hooks 
Created data_bag[hooks]

Step 4 - Laden Sie die Datentasche auf den Chef-Server hoch.

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

Step 5 - Aktualisieren Sie das Standardrezept des Kochbuchs, um das erforderliche Kochbuch aus einer Datentasche zu erhalten.

vipin@laptop:~/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 - 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]

Step 7 - Führen Sie den Chef-Client auf dem Knoten aus, um zu überprüfen, ob der http-Anforderungsbehälter ausgeführt wird.

user@server:~$ 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...

Wie es funktioniert

Data Bag ist eine benannte Sammlung von Strukturdateneinträgen. Man muss die Dateneingabe definieren und das Datenbeutelelement in der JSON-Datei aufrufen. Man kann auch innerhalb der Rezepte nach Datenbeuteln suchen, um die in den Datenbeuteln gespeicherten Daten zu verwenden.

Wir haben eine Datentasche namens Hooks erstellt. Ein Datentasche ist ein Verzeichnis im Chef-Repository. Wir haben Messer verwendet, um es auf dem Server zu erstellen.