2013-05-17 9 views
5

Ich bin ein großer Fan von Berkshelf und ich habe nur wenige Community-Kochbücher veröffentlicht, die es verwenden, und es ist großartig.Wie man Berkshelf benutzt, um Organisation Repo zu handhaben?

Jetzt beginne ich ein neues Koch-Projekt und ich ging auch mit Berkshelf für diese.

Aber ich finde einige Verwirrungen/Schwierigkeiten, die es für das Projekt verwenden.

Folgendes ist in der Berksfile:

site :opscode 

cookbook 'mediawiki', github: 'millisami/chef-mediawiki' 
cookbook 'sp-mediawiki', path: 'site-cookbooks/sp-mediawiki' 

ich meine Bewerbung Kochbuch in der site-cookbooks Ordner erzeugt haben.

Wenn ich berks install, es Fehler aus:

An error occurred while reading the Berksfile: no metadata.rb or metadata.json found at \ 
/Users/millisami/Code/chef-sp/site-cookbooks/sp-mediawiki 

Jetzt, wo generiere ich mich frage ich meine Bewerbung sp-mediawiki Kochbuch?

Wenn Sie nur ein neues erstellen berks cookbook sp-mediawiki, wird es ähnlich wie die Bibliothek Kochbuch.

Diese Art von Fluss ist perfekt mit librarian-chef, die ich in einem anderen Projekt verwende.

Also, ich versuche, ein Spiel zu setzen, die:

  1. Berkshelf gut individuelle Kochbücher zu entwickeln
  2. Librarian-Chef ist gut, die Top-Level-Orchestrierung

zu verwalten Habe ich Recht/Unrecht? Wie nutzen Sie Berkshelf, um das Chef-Repo Ihres Org zu verwalten?

+0

Haben Sie eine Lösung für dieses Problem gefunden? Es ist in Ordnung, deine eigene Frage zu beantworten. Bitte vergiss nicht, eine Antwort als richtig zu markieren! :) – sethvargo

Antwort

3

Wie ich in meiner Antwort auf GitHub sagte:

Wenn Sie eine Berksfile an der Spitze Ihres chef-repo haben, können Sie Berkshelf verwalten Sie alle Ihre Kochbuch Abhängigkeiten für Sie.

Zum Beispiel, lasst uns sagen, ich schreibe eine Anwendung Kochbuch, das auf dem Apache2 Kochbuch abhängt. Ich möchte hinzufügen, um meine Berksfile:

site :opscode 

cookbook 'apache2', '~> x.x.x' # optional version constraint 

und führen Sie den Befehl berks install dieses Kochbuch zu installieren. Da es sich um eine Bibliothek handelt, ist sie auf Ihrem Rechner "irgendwo" installiert und Sie sollten sich nicht darum kümmern, sie zu finden. Jetzt können Sie Ihre Anwendung-Kochbuch erzeugen (nennen wir es my-apache2):

$ berks cookbook my-apache2 

Und das wird das Skelett für Sie erstellen.Dann können Sie apache2 als die Abhängigkeit von diesem neuen Kochbuch in der metadata.rb hinzufügen:

name 'my-apache2' 
# suppressed 
version '1.0.0' 

depends 'apache2' 

Und Ihre Verzeichnisstruktur wie folgt aussieht:

chef-repo 
    | Berksfile 
    |_ cookbooks 
    |_ my-apache2 

Beachten Sie die apache Kochbuch ist nicht da. Die Bibliothek Kochbücher leben alle in ~/.berkshelf/cookbooks, aber Sie sollten sich nicht darum kümmern. Sie werden automatisch eingezogen und Ihrem Pfad hinzugefügt.

Wenn ein anderer Teammitglied Ihren Chef-Repo verwenden möchte, lassen Sie ihn einfach berks install laufen und alle notwendigen Abhängigkeiten werden auf seinem Rechner installiert.

Wenn Sie Befehle wie berks upload ausführen, findet Berkshelf automatisch alle notwendigen Kochbücher für Sie.

Macht das Sinn?

+0

Ich weiß, diese Frage und Antwort sind jetzt fast zwei Jahre alt, aber ich bin immer noch unklar, wie Berkshelf mit einem * Organisation * Repo zu verwenden. Sie verwenden ein Anwendungs-Kochbuch als Beispiel in Ihrer Antwort, aber es ist mir nicht klar, wie das auf diese Frage zutrifft (besonders für Chef Zero). Braucht Berkshelf ein Kochbuch? Gibt es keine Möglichkeit, ein Organisationsrepo zu erstellen, das selbst keine Kochbücher (direkt) enthält? –