2013-05-17 9 views
5

Sono un grande fan di Berkshelf e ho pubblicato alcuni libri di cucina di community che lo utilizzano ed è fantastico.Come utilizzare Berkshelf per gestire il repository dell'organizzazione?

Ora, sto iniziando un nuovo progetto di chef e sono andato avanti con Berkshelf anche per questo.

Ma sto riscontrando alcune confusioni/difficoltà nell'utilizzarlo per il progetto.

seguito è nel Berksfile:

site :opscode 

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

ho generato il mio libro di cucina di applicazione all'interno della cartella site-cookbooks.

Quando faccio berks install, esso errori fuori:

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

Ora mi chiedo dove posso generare la mia domanda sp-mediawiki libro di cucina?

Se si crea solo uno nuovo berks cookbook sp-mediawiki, sarà simile al ricettario della biblioteca.

Questo tipo di flusso è perfettamente eseguito utilizzando librarian-chef che sto utilizzando su un altro progetto.

Quindi, sto cercando di mettere una linea che:

  1. Berkshelf è buono per sviluppare i singoli libri di cucina
  2. Librarian-chef è buono per la gestione di livello superiore orchestrazione

Ho ragione/torto? Come usi Berkshelf per gestire il repo da chef della tua Org?

+0

Hai trovato una soluzione a questo problema? Va bene rispondere alla tua stessa domanda. Si prega di non dimenticare di contrassegnare una risposta corretta! :) – sethvargo

risposta

3

Come ho detto nella mia risposta su GitHub:

Se si dispone di un Berksfile nella parte superiore del vostro chef-repo, è possibile che si Berkshelf di gestire tutti i vostri libro di cucina dipendenze per te.

Ad esempio, diciamo che sto scrivendo un ricettario dell'applicazione che dipende dal ricettario apache2. Vorrei aggiungere al mio Berksfile:

site :opscode 

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

ed eseguire il comando berks install per installare questo libro di cucina. Perché è una libreria, è installata sulla tua macchina "da qualche parte" e non dovresti preoccuparti di trovarla. Ora, si genera l'applicazione-libro di cucina (chiamiamolo my-apache2):

$ berks cookbook my-apache2 

E questo creerà lo scheletro per voi.Poi si può aggiungere apache2 come una dipendenza da questo nuovo libro di cucina nel metadata.rb:

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

depends 'apache2' 

E la struttura delle directory assomiglia a:

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

Avviso il apache libro di cucina non c'è. I libri di cucina della biblioteca vivono tutti in ~/.berkshelf/cookbooks, ma non dovresti preoccupartene. Vengono automaticamente inseriti e aggiunti al tuo percorso per te.

Se un altro compagno di squadra desidera utilizzare il proprio chef-repo, è sufficiente eseguire il numero berks install e tutte le dipendenze necessarie verranno installate anche sul proprio computer.

Quando si eseguono comandi come berks upload, Berkshelf troverà e risolverà automaticamente tutti i libri di cucina necessari.

Ha senso?

+0

So che questa domanda e risposta hanno ormai quasi due anni, ma non sono ancora chiaro come usare Berkshelf con un repository * dell'organizzazione *. Si utilizza un ricettario di applicazione come esempio nella risposta, ma non è ovvio per me come ciò si applica a questa domanda (in particolare per Chef Zero). Berkshelf richiede un libro di cucina? Non esiste un modo per creare un repository aziendale che non contenga alcun libro di cucina (direttamente) stesso? –