Chefkoch - Rezepte dynamisch konfigurieren
Attribute sind die Schlüsselkomponenten für die dynamische Konfiguration von Kochbüchern. Mithilfe von Attributen können die Autoren das Kochbuch konfigurierbar machen. Durch Überschreiben der in Kochbüchern festgelegten Standardwerte kann der Benutzer seine eigenen Werte einfügen.
Step 1 - Erstellen Sie eine Standarddatei für Kochbuchattribute und fügen Sie ihr ein Standardattribut hinzu.
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/attributes/default.rb
default['my_cookbook']['message'] = 'hello world!'
Step 2 - Definieren Sie das Attribut im Rezept.
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb
message = node['my_cookbook']['message']
Chef::Log.info("** Saying what I was told to say: #{message}")
Step 3 - Hochladen des geänderten Kochbuchs.
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
Step 4 - Chef-Client des definierten Knotens ausführen.
user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-01-13T20:48:21+00:00] INFO: ** Saying what I was told to
say: hello world!
...TRUNCATED OUTPUT...
Arbeitsmethode
Chef lädt alle Attribute aus der Attributdatei, bevor sie ausgeführt werden. Die Attribute werden mit dem Knotenobjekt gespeichert. Man kann auf alle Attribute zugreifen, die mit dem Knotenobjekt in Rezepten gespeichert sind, und ihre aktuellen Werte abrufen.
Chefkoch hat eine eingeschränkte Struktur, beginnend mit der niedrigsten Standardeinstellung, wird dann normal (was mit dem Satz verbunden ist) und überschreibt dann. Die im Rezept festgelegte Attributebene hat Vorrang vor derselben in einer Attributdatei festgelegten Ebene.
Überschreiben des Attributs auf Knoten- und Umgebungsebene
In Rollen oder Umgebungen definierte Attribute haben die höchste Priorität.
Step 1 - Erstellen Sie eine Rolle.
vipin@laptop:~/chef-repo $ subl roles/german_hosts.rb
name "german_hosts"
description "This Role contains hosts, which should print out
their messages in German"
run_list "recipe[my_cookbook]"
default_attributes "my_cookbook" => { "message" => "Hallo Welt!" }
Step 2 - Laden Sie die Rolle auf den Chef-Server hoch.
vipin@laptop:~/chef-repo $ knife role from file german_hosts.rb
Updated Role german_hosts!
Step 3 - Weisen Sie die Rolle einem Knoten zu.
vipin@laptop:~/chef-repo $ knife node edit server
"run_list": [
"role[german_hosts]"
]
Saving updated run_list on node server
Step 4 - Führen Sie den Chef-Client aus.
user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-01-13T20:49:49+00:00] INFO: ** Saying what I was told to
say: Hallo Welt!
...TRUNCATED OUTPUT...