0

我正在使用 Chef 进行自动化。我有一本厨师回购食谱,其中包含自定义食谱以及来自 opscode 网站的食谱。

由于很少有食谱依赖于其他食谱,因此我使用 berks 实用程序安装了这些依赖项。

现在我的问题是如何管理食谱及其冗余。

4

1 回答 1

1

以下是详细答案,

您可以在同一个 berksfile 中提及您的包装说明书及其依赖项。“Beksfile”中的Cookbook源码,可以来自“Chef Supermarket”,GIT源码,系统本地路径。

考虑菜谱“mysql_wrapper”是您开发的菜谱,它使用“mysql”社区菜谱。还要考虑包装器位于系统本地路径中。

这是上述场景的示例 berksfile 内容。

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

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

这个怎么运作?

当您运行“berks install”或“berks upload”时,Berkshelf 会解析 berksfile 中提到的说明书。

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

设置一个项目来管理说明书、角色和 data_bags

  • 用你的食谱和其他东西创建一个项目存储库。
  • 项目 repo 只不过是一个目录,其中包含 1. Roles、2. Databags、3. Cookbooks 和 4. Environments 的其他目录。根据您的要求创建存储库。
  • 将您的食谱放在食谱目录中。
  • 创建一个目录作为“角色”。将角色添加为“.json”文件。
  • 在 data_bag/data_bag_item 的情况下,创建一个目录作为 data_bags。为每个 data_bag 创建一个目录并将项目添加为“.json”文件。
  • 在 repo 中创建 bersfile

管理厨师服务器

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

  • 在项目 repo 中创建一个目录“.chef”
  • 将您的 Chef 服务器刀/pem 文件复制到 .chef
  • 从项目存储库中运行命令“berks upload”。您的食谱将上传到 Chef 服务器。
  • 运行knife upload data_bags 和knife upload roles,从repo 上传你的数据包和角色。
于 2015-06-25T18:40:00.680 回答