使用 chef/artifactory-client 作为主厨 remote_file 供应商

Using chef/artifactory-client as chef remote_file provider

Chef developed a Ruby gem for interacting with Artifactory that Chef cookbooks could use to download artifacts and perform other actions. I assumed it would be leveraged as a provider for resources like remote_file,但是没有提供示例代码、在 Chef 或其他采用此方法的人中明确使用它的文档。

  1. 您是如何将 Chef 与 Artifactory 集成的?
  2. 您的 cookbooks/recipes 是否可以在不与 Artifactory 紧密耦合的情况下重新分发?

这两个项目(Artifactory gem 和 Chef)没有关联,前者不是食谱。有一本名为 artifact 的食谱,其中包含可从 Artifactory 下载的自定义资源,但我不确定它是否已得到维护。

有一个关于如何在 Artifactory 中配置 Chef 存储库以及如何配置你的 knife 以从 Artifactory 安装的 wiki 页面: https://www.jfrog.com/confluence/display/RTF/Chef+Cookbook+Repositories

这就是您要找的吗?

Artifactory 是一个通用的二进制托管软件,即使您不需要它的各种特定 API 兼容选项(RubyGems /PyPi /Docker /etc),您仍然可以创建一个"dumb" 文件存储库,其行为类似于可以匿名或通过身份验证方法提供文件的 Web 服务器。

它也是一个优秀的缓存代理,我经常在其他 "dumb" 文件存储库前面使用它,例如 NodeJS.org NodeJS 二进制存档的下载目录或我想要的其他远程安装程序确保我有我在管道中使用的任何版本的备份副本。

要将其用于 "remote_file",您只需创建一个名为 'local-config-artifacts' 的新存储库,然后将您的文件上传到那里。 Artifactory 的真正好处是它可以为您执行元数据计算 (md5/sha1/sha256/etc),然后您可以在您的食谱食谱中输入该值,这样您就可以下载 "idempotent"如果校验和发生变化,请下载。