厨师食谱交付 - 厨师服务器与神器+ berkshelf

kel*_*lyb 1 artifactory chef-infra berkshelf

我的公司一直在对Chef进行大量投资.我们建立了一个值得尊敬的烹饪书库来自动化我们的基础设施.我们故意忽略了Chef Server和菜谱共享的问题,因为我们希望首先在我们的烹饪书中获得一些临界质量,以便推动我们如何解决这个问题.现在我们在那里,我们正在探索各种选择.我们已经对Artifactory进行了大量投资,我们很高兴地使用它来存储使用Artifactory中的nuget,ivy,maven,npm和bower存储库来跨Windows/.NET和Java存储CI系统的所有内容.我一直在读这个话题:

在厨师仓库管理自定义食谱

Berkshelf-api和Chef Supermarket与传统工件库的做法有何不同?

当我们在Artfiactory中已经有一个通用工件服务器时,我很难看到Chef Server作为食谱库的重点.最适合我们当前环境的模型是从Jenkins工作中将Cookbook发布到Artifactory,并根据需要使用Berkshelf将它们从那里拉出来.从我的阅读中看来,Berkshelf可以与Artifactory作为一个来源进行交流,但我还没有找到有关如何做到这一点的详细信息.到目前为止我们遇到的每个包管理器都有一些方法可以将它指向Artifactory,所以我假设有可行的.

任何人都可以分享关于如何最好地接近这个的指导吗?任何人都可以提供有关berkshelf是否能够愉快地完成这项工作的任何细节吗?

Mar*_*nor 5

今天使用厨师的大多数人直接从他们的源代码库部署.由于您已经在使用Artifactory,因此您了解在某个时间点保留发布的明确记录的重要性.发布工件存储库在构建软件和将其部署到目标系统之间创建了一个健康的区分.

使用厨师服务器的专用实例(存储已发布的食谱版本)只是一个选项.这种方法恰好与Berkself-api配合使用,并允许您继续使用Berkshelf作为将烹饪书上传到目标厨师服务器的工具.

没有什么可以阻止你使用神器.您需要创建一个包含您的cookbook及其所有依赖项的存档,berkshelf"package"就是这样做的.

berks package mycookbooks.tar.gz
mvn deploy:deploy-file \
    -Durl=$REPO_URL \
    -DrepositoryId=$REPO_ID \
    -DgroupId=org.myorg \
    -DartifactId=mycookbooks \
    -Dversion=1.2.3  \
    -Dpackaging=tar.gz \
    -Dfile=mycookbooks.tar.gz
Run Code Online (Sandbox Code Playgroud)

tarball可以用作当前chef-solo进程的一部分,也可以选择用于填充目标Chef服务器:

curl https://myrepo/org/myorg/1.2.3/mycookbooks-1.2.3.tar.gz
tar zxvf mycookbooks-1.2.3.tar.gz
knife cookbooks upload --all --environment my-prod-env
Run Code Online (Sandbox Code Playgroud)

"环境"选项将设置在菜谱版本限制厨师的环境,如果你想成为其中的某些在运行时应用的版本,非常有用.

  • 值得注意的是,JFrog在第5版中为Aritfactory添加了厨师超市支持(显然其他人有与我一样的愿景).我们使用Policyfiles,Artifactory作为超市以及Chef Server作为这些策略的部署目标,为所有这些找到了一个非常灵活的解决方案. (2认同)