Quelle est la différence entre l'ajout de livres de cuisine à Berksfile à l'aide de "livre de cuisine" et l'ajout de livres de cuisine à metadata.rb à l'aide de "dépend"? Par exemple, si j'ajoute à metadata.rb
depends 'nginx'
dois-je l'ajouter à 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 metadata
au fichier Berks.
Je recommande fortement de spécifier toutes les dépendances dans votre fichier de métadonnées et d'utiliser votre Berksfile pour indiquer où les livres de recettes spécifiques sont stockés s'ils ne sont pas disponibles dans le supermarché (comme Github ou un chemin local).
Berksfile et metadata.rb ont des objectifs différents à résoudre et se manifestent à différentes étapes du cycle de vie du livre de cuisine.
Berksfile sert à la gestion des dépendances pour les livres de recettes. Considérons un cas où mon livre de cuisine utilise un livre de cuisine communautaire de supermarché chef . Dans ce cas, je dois d'abord télécharger ce livre de cuisine communautaire du supermarché et le télécharger avec mon propre livre de cuisine sur le serveur du chef. Berksfile simplifie ce workflow 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 (peuvent provenir du référentiel git ou d'un supermarché). Avec une autre commande unique berks upload
il télécharge tous ces livres de recettes sur le serveur du chef. Vous n'avez pas besoin de les télécharger individuellement avec knife cookbook upload
. Le rôle de Berksfile en particulier le cycle de vie des livres de cuisine se termine ici.
metadata.rb est référé par chef-client tout en faisant converger le nœud. Il utilise ce fichier pour télécharger tous les livres de recettes requis depuis le serveur chef (en supposant que ces livres de recettes sont désormais disponibles sur le serveur chef en utilisant berkshelf
ou knife
) sur le nœud pour terminer avec succès le client-chef courir.