Chef ‘cookbook’ dans Berksfile vs ‘dépend’ dans metadata.rb

Quelle est la différence entre l’ajout de livres de recettes à Berksfile à l’aide de «livre de recettes» et l’ajout de livres de recettes à metadata.rb à l’aide de «depend»? Par exemple, si j’ajoute à metadata.rb

depends 'nginx' 

dois-je l’append à Berksfile en utilisant

 cookbook 'nginx' 

?

Le Berksfile est spécifique à Berkshelf, tandis que le fichier de métadonnées est intégré à Chef.

L’ajout de vos dépendances au fichier de métadonnées permet à d’autres applications, comme le bibliothécaire-chef ou le supermarché, de lire également vos dépendances.

Notez que Berkshelf lit également les dépendances à partir des métadonnées, tant que vous ajoutez la ligne de metadata au fichier Berksfile.

Je recommande fortement de spécifier toutes les dépendances dans votre fichier de métadonnées et d’utiliser votre fichier Berksfile pour indiquer l’emplacement des livres de recettes spécifiques s’ils ne sont pas disponibles dans le supermarché (comme Github ou un chemin local).

Berksfile et metadata.rb ont des objectives différents à résoudre et apparaissent à différentes étapes du cycle de vie des livres de recettes.

  1. Berksfile est destiné à la gestion des dépendances pour les livres de recettes. Prenons un cas où mon livre de recettes utilise un livre de recettes communautaire du chef de supermarché . Dans ce cas, je dois d’abord télécharger ce livre de recettes de la communauté depuis le supermarché et le télécharger avec mon propre livre de recettes sur le serveur du chef. Berksfile simplifie ce stream de travail pour vous. Avec une seule commande ( berks install ), il télécharge tous les livres de recettes dépendants (et leurs livres de recettes dépendants – dépendances transitives) à partir de leurs sources respectives (provenant du repository git ou du supermarché). Avec une autre commande unique, berks upload tous ces livres de recettes sur le serveur du chef. Vous n’avez pas à les télécharger individuellement avec le knife cookbook upload . Le rôle de Berksfile en particulier dans le cycle de vie des livres de cuisine se termine ici.

  2. metadata.rb est référencé par chef-client lors de la convergence du noeud. Il utilise ce fichier pour télécharger tous les livres de recettes requirejs à partir du serveur chef (en supposant que ces livres de recettes soient désormais disponibles sur le serveur chef en utilisant berkshelf ou knife ) sur le nœud pour exécuter correctement l’exécution client-chef.