Chef

Chef ist ein Tool für Konfigurationsmanagement, d.h. für die Bereitstellung von Computern in einer gewünschten Konfiguration. Chef kostet 120 Dollar für 20 Server und 600 Dollar für 100 Server, jeweils per Monat. Die Free-Variante ist kostenlos für bis zu 5 Server.

Konfigurationen werden in einer DSL als Rezepte und Kochbücher formuliert und drücken Zielzustände über

- installierte Pakete,
- laufende Dienste,
- angelegte Benutzer und Benutzergruppen,
- vorhandene Verzeichnisse oder
- vorhandene (Konfigurations-)Dateien

aus. Die DSL basiert auf Ruby.

Dabei sind Rezepte (recipes) Folgen von Deklarationen über gewünschte Zielzustände der oben genannten Resourcen. Der Inhalt von (Konfigurations-)Dateien kann über Vorlagen (templates, basierend auf eRuby und seiner Implementierung Erubis) spezifiziert werden.

In einem Kochbuch (cookbook) werden ein oder mehrere Rezepte zusammengefasst. Kochbücher sind spezielle Verzeichnishierarchien, die Rezepte und weitere Dateien enthalten. Eine solche Verzeichnishierarchie kann mit

  knife cookbook create <Name des Kochbuchs>

angelegt werden. Es gibt hunderte vorgefertigte Kochbücher für gängige Pakete und Dienste.

Ein Kochbuch kann mit

  include_recipe "<Name des Rezepts>"
  depends "<Name des Rezepts>"

Rezepte aus anderen Kochbüchern inkludieren und verwenden.

Fertig entwickelte Kochbücher können mit

  knife cookbook upload <Name des Kochbuchs>

auf den Chef Server hochgeladen werden.

Mit

  knife node edit <Name des Rechners>

kann die Konfiguration des angegebenen Knotens angepasst werden. Diese enthält eine Liste mit anzuwendenden Rezepten (run_list).

  {
    "name": "<Name des Rechners>",
    "chef_environment": "_default",
    "normal": {
      "tags": [

      ]
    },
    "run_list": [

    ]
  }

In der Run List werden Rezepte in der Form

  "recipe[<Name des Rezepts>]"

aufgezählt.

Wird schließlich auf dem Computer z.B. per ssh

  sudo chef-client

ausgeführt, dann lädt der dort installiere Chef Client die benötigten Rezepte und führt diese aus. Damit wird der Computer in die spezifizierte Zielkonfiguration überführt.


Quellen

http://en.wikipedia.org/wiki/Chef_%28software%29
https://www.scriptrock.com/blog/puppet-vs-chef-battle-wages/
http://www.getchef.com/chef/#plans-pricing
https://supermarket.chef.io/cookbooks-directory
http://en.wikipedia.org/wiki/ERuby
https://rubygems.org/gems/erubis/versions/2.7.0
https://www.digitalocean.com/community/tutorials/how-to-create-simple-chef-cookbooks-to-manage-infrastructure-on-ubuntu