Opsworks Chef 12.0 用一个公用文件管理两本食谱

Posted

技术标签:

【中文标题】Opsworks Chef 12.0 用一个公用文件管理两本食谱【英文标题】:Opsworks Chef 12.0 manage two cookbook with one common file 【发布时间】:2016-04-24 11:08:03 【问题描述】:

我正在使用 AWS Opsworks 并且有一堆 Chef 12.0 .. 问题因为在 Chef 12 食谱依赖项中不受支持.. 我设法创建了一个食谱来安装我的网络服务器并部署一个 APP .. 以支持 2 个 APP不同的堆栈他们有不同的食谱,但有一个公共文件正在安装网络服务器(/recipes/webserver.rb),有没有一种方法可以让食谱只继承/调用一个公共文件?因为我不希望如果网络服务器配方发生变化,我必须更新两本食谱。

提前致谢

【问题讨论】:

不支持依赖怎么办? chef 12.0 中不再支持berkshelf,我只是重读了文档。它可以打包依赖项locally 非常令人困惑。我应该首先在 Opsworks 的哪里上传这个 我认为docs.aws.amazon.com/opsworks/latest/userguide/… 中的“本地打包多个食谱的依赖项”部分应该回答您应该如何使用 Berkshelf 的问题。不同之处在于您需要在本地运行它并将所有说明书上传到 Opsworks,而不是像以前那样在 Opsworks 中运行。 嗯.. 看起来很有趣,但是如果我尝试这种方法.. 似乎我不再使用 opsworks 了.. 我不能在堆栈生命周期事件中绑定配方了,对吧? 好吧,这看起来像是他们现在推荐的使用 Chef 12 的做事方式,所以我不会说“你不再使用 opsworks”;) 根据docs,所有这些应该随着 Chef 12 而改变,这就是你现在必须手动上传食谱。将它们绑定到生命周期事件的方式应该不会有任何变化...您可以尝试一下,让我们知道您遇到了什么问题吗? 【参考方案1】:

您可以使用include_recipe 将一个食谱包含在另一个食谱中。您可能还想研究将通用逻辑放在自定义资源中并在两个应用程序配方中使用它。查看 https://github.com/poise/application_examples/ 获取资源驱动应用程序部署的一些示例。

【讨论】:

这是我们的选择,但缺点是我们有不同应用程序的混合配方。它们应该易于管理并避免可能的混淆......

以上是关于Opsworks Chef 12.0 用一个公用文件管理两本食谱的主要内容,如果未能解决你的问题,请参考以下文章

OpsWorks 找不到我的 Chef 食谱

OpsWorks 部署错误 - Chef::Exceptions::ChildConvergeError

AWS Opsworks 中的 Chef 环境

OpsWorks / Chef PHP 部署流程

OpsWorks:如何设置 Chef 环境?

从 AWS Opsworks Stacks Chef 11 迁移到 Chef 12 - 堆栈属性问题