【问题标题】:AWS, OpsWorks and Chef dependencies: what's the cleanest solution?AWS、OpsWorks 和 Chef 依赖项:最干净的解决方案是什么?
【发布时间】:2014-05-02 02:25:06
【问题描述】:

我有一个 Chef 项目,在本地与 Vagrant 合作,效果非常好。我正在使用librarian-chef,这意味着我可以在Cheffile 中指定我的依赖项,如下所示:

site 'http://community.opscode.com/api/v1'
cookbook 'jenkins'

然后当我运行 librarian-chef install 时,它会将 jenkins 和它所依赖的所有食谱下拉到 cookbooks 目录中。

还有另一个目录site-cookbooks,这是我编写所有我自己的自定义食谱和食谱的地方。

Vagrantfile 中,您可以告诉它查看食谱的两种不同路径:

config.vm.provision "chef_solo" do |chef|
  chef.cookbooks_path = ["cookbooks", "site-cookbooks"]
  # snip
end

当我运行 vagrant up 时,这非常有效。但是,它似乎不能很好地与 AWS OpsWorks 配合使用——因为这要求所有说明书都位于 Chef 存储库的顶层。

那么我的问题是:在 OpsWorks 中使用 Chef 的最佳方式是什么,而不包括我的存储库顶层的所有依赖项?

【问题讨论】:

    标签: amazon-web-services chef-infra vagrant aws-opsworks librarian


    【解决方案1】:

    OpsWorks 不能很好地配合为 Chef 创建的许多工具。我在它出现后不久就尝试使用它并放弃了它(当时 OpsWorks 使用的是 Chef 9)。

    我建议您从 OpsWorks 转到 Enterprise Chef,或尝试以下方法:

    1.为您的食谱创建单独的存储库

    将所有食谱保存在单独的存储库中。如果您希望它成为更大存储库的一部分,您可以将其包含为 git 子模块。 Git 子模块通常是一个的东西,但食谱是一个独立的实体,它可以独立于你的项目的其余部分,所以在这种情况下它实际上工作得很好。

    要在另一个存储库中添加食谱存储库,请使用:

    git submodule add git://github.com/my/cookbooks.git ./cookbooks
    

    2。将您的食谱与社区食谱放在一起

    您可以将食谱克隆到您的存储库中,将它们添加为子模块,或者尝试使用 librarian-chef/Berkshelf 来管理它们。您可以尝试使用此方法,它应该与图书管理员一起使用:https://sethvargo.com/using-amazon-opsworks-with-berkshelf/

    【讨论】:

      【解决方案2】:

      最近,OpsWorks supports Chef 11.10 and Berkshelf 为您提供了一种更好的方式来管理食谱依赖项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-26
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        • 2014-09-01
        • 2020-02-21
        • 1970-01-01
        相关资源
        最近更新 更多