Chef infra 如何将cookbook管理迁移到berkshelf

Chef infra 如何将cookbook管理迁移到berkshelf,chef-infra,berkshelf,Chef Infra,Berkshelf,我有点沉迷于chef,现在我有几个节点正在运行,我想清理一下如何管理我的烹饪书和依赖关系 从历史上看,我经常搜索厨师超市,找到一本适合我需要的食谱,然后用刀子安装那本食谱。刀食谱网站安装福。它将烹饪书放入我的烹饪书目录chef repo/cookbooks/foo 当我找不到我想要的东西时,我会在chef repo/cookbooks/mycompany bar的同一个目录中创建自己的同名食谱 现在我有了一个很好的社区食谱和定制食谱的小集合,我发现很难管理依赖项,并且希望迁移到Berkshell

我有点沉迷于chef,现在我有几个节点正在运行,我想清理一下如何管理我的烹饪书和依赖关系

从历史上看,我经常搜索厨师超市,找到一本适合我需要的食谱,然后用刀子安装那本食谱。刀食谱网站安装福。它将烹饪书放入我的烹饪书目录chef repo/cookbooks/foo

当我找不到我想要的东西时,我会在chef repo/cookbooks/mycompany bar的同一个目录中创建自己的同名食谱

现在我有了一个很好的社区食谱和定制食谱的小集合,我发现很难管理依赖项,并且希望迁移到Berkshellf

我的问题是:

我的许多角色只是简单地使用我安装的社区烹饪书,而不使用任何包含它们的包装器烹饪书

即:

我不知道如何安装和使用任何带有berkshelf的社区cookbook,首先创建自己的cookbook,然后依赖社区cookbook。这是我做事的正确方式吗


我需要为这些现有的烹饪书写一堆包装吗?ie:有我自己的mycompany主机名食谱吗?这取决于社区主机名食谱吗?

你可以直接在你的Berksfile中列出你需要的食谱


当您安装berks并上传berks时,这将使它们被拉进来。Berkshellf是管理食谱和依赖项的最佳方法

您可以在同一个berksfile中提到包装器cookbooks及其依赖项。 Beksfile中的Cookbook源代码,可以来自Chef Supermarket、GIT源代码和系统本地路径

假设cookbook mysql_wrapper是您开发的cookbook,它使用mysql社区cookbook。 还考虑包装器位于系统本地路径。< /P> 下面是上述场景的berksfile内容示例

source "https://supermarket.chef.io"

cookbook 'mysql'
cookbook 'mysql_wrapper', path: '/system/local/path/to/wrapper-cookbooks/mysql_wrapper'
它是如何工作的

运行berks install或berks upload时,BerksShelf解析berksfile中提到的烹饪书

依赖社区食谱将从超市下载,因为我们在第一行引用了它。 而包装器cookbook将由本地路径引用

建立一个管理食谱、角色和数据包的项目

你需要用你的食谱和其他东西创建一个项目存储库。 Project repo不过是一个目录,其中包含1的其他目录。角色,2。数据包,3。食谱和4。环境。根据您的需求创建存储库。 把你的食谱放在食谱目录里。 创建一个目录作为角色。将角色添加为.json文件。 对于数据包/数据包项目,创建一个目录作为数据包。为每个数据包创建一个目录,并将项目添加为.json文件。 在repo中创建文件 管理厨师服务器

如果您想上传内容,请按照以下步骤操作:

在项目repo中创建目录.chef 将Chef服务器刀/pem文件复制到.Chef中 从项目repo内部运行命令berks upload。您的食谱将上载到厨师服务器。 运行刀上传数据包和刀上传角色,从回购中上传数据包和角色。
metadata # this will get anything in your metadata.rb (and recursive dependenceis)
cookbook 'cookbookname', '1.3.5' #OR
cookbook 'cookbookname' # OR
cookbook 'cookbookname' '>= 1.5.2'
source "https://supermarket.chef.io"

cookbook 'mysql'
cookbook 'mysql_wrapper', path: '/system/local/path/to/wrapper-cookbooks/mysql_wrapper'