OpsWorks nginx 命名空间冲突

OpsWorks nginx 命名空间冲突

我想将我的一个食谱 nginx-passenger 部署到 opsworks。我已经使用 testkitchen 在本地测试了这些食谱,所有食谱和测试都成功通过。但是,在使用 opsworks 时,nginx-passenger::default 的运行失败,并显示错误“无法满足 nginx 的版本约束”。Opsworks 已经有一本名称完全相同但版本不同的食谱,所以这可能是由此引起的。

我已经搜索过这个错误,刚刚发现以下内容https://forums.aws.amazon.com/thread.jspa?threadID=153656

但这并不能提供真正的解决方案。

我的文件如下所示:

我的食谱/Berksfile:

source "https://supermarket.getchef.com"

cookbook 'user', '~> 0.3.0'
cookbook 'apt', '~> 2.6.0'
cookbook 'nginx', '~> 2.7.4'

my_cookbooks/nginx-passenger/metadata.rb

name "nginx-passenger"
version "0.1.0"

depends 'nginx', '~> 2.7.4'
depends 'apt', '~> 2.6.0'

您能推荐一种解决方法来解决这个问题吗?我真的很想在这里使用社区 nginx 手册。

编辑:对不起,我忘了提一些细节。我正在尝试创建一个自定义层,但我还没有为其分配任何配方。我已经创建了一个实例,更新了自定义食谱并手动执行了配方 nginx-passenger::default。

答案1

命名冲突是 OpsWorks 手册的一个已知问题,并且没有简单的解决方案。

您可能需要做的是将社区 nginx 和 nginx-passenger 食谱下载到您的食谱目录,将 nginx 食谱重命名为 nginx-community 之类的名称,然后将 nginx-passenger 食谱中的任何引用从 nginx 更新为 nginx-community。

另一方面,您可能应该考虑是否真的需要 nginx 和 nginx-passenger 社区手册。OpsWorks 有自己的 nginx 和 Passenger 手册,只是默认的 ruby​​ 堆栈使用 Apache。不过,您可能只需要覆盖 nginx 手册中的一两个文件即可使其与 Passenger 配合使用。

相关内容