我可以使用/覆盖 AWS OpsWork 的内置 unicorn::rails 配方安装自定义构建的 nginx 吗?

Posted

技术标签:

【中文标题】我可以使用/覆盖 AWS OpsWork 的内置 unicorn::rails 配方安装自定义构建的 nginx 吗?【英文标题】:Can I install a custom build of nginx using/overwriting AWS OpsWork's built-in unicorn::rails recipe? 【发布时间】:2014-11-27 16:15:34 【问题描述】:

免责声明:我完全是 AWS,尤其是 OpsWorks 菜鸟。我正在疯狂地阅读 OpsWorks 和 Chef 文档,希望我的问题很愚蠢/真的很简单。

在我的应用程序中,我使用的是 unicorn::rails 内置 OpsWorks Chef 食谱。我很确定 unicorn::rails 使用nginx/recipes/default.rb 中的这个神秘包调用构建了nginx along the way。 EC2 实例使用的是 Ubuntu,所以包管理器是 apt-get。

问题:

    是否可以使用内置的 OpsWorks Chef 配方进行自定义 nginx 构建? 如果 (a) 为真,在哪里修改 chef 脚本以构建带有模块的 nginx?

我怀疑我需要编写一个自定义 Chef 脚本并将另一个层添加到堆栈中。我希望尽可能长时间地使用内置配方,因为我是 AWS OpsWorks 和 Chef 的超级新手。

【问题讨论】:

这可能不是 Stack Overflow 的主题。我怀疑Super User、Webmasters 或Server Fault 可能更合适。 感谢@theTinMan!我会把它贴在那里。你知道我是否有办法将问题迁移到那里,还是我应该复制/粘贴? 如果我们投票关闭它,因为它位于错误的 Stack Exchange 站点上,它可以被迁移。这可能需要几天时间。相反,您可以将信息复制/粘贴到另一个站点,然后删除该站点。 【参考方案1】:
    没有。

opsworks nginx 配方安装 nginx package:

package "nginx" 

Chef 使用本地包管理器来完成此任务。这很可能是 Amazon 实例上的 rpm/yum。

替代品

如果您想使用自定义 nginx 构建,我建议使用主要的 nginx cookbook 和 source recipe 来构建和安装 nginx。有 node attributes 配置构建。

您还可以构建自己的 nginx rpm package 并使其可用于您的系统,然后让 opworks 安装您的 rpm 而不是 nginx 并稍作修改。不过,这可能是一个很滑的转速斜坡。

【讨论】:

此处的 aws 文档 - docs.aws.amazon.com/opsworks/latest/userguide/customizing.html 说您不能使用同名食谱覆盖内置食谱。您如何建议我们现在添加自定义食谱? 看来您必须创建一个完整的custom layer。请注意,它还说您最终将安装默认 nginx 和自定义 nginx。我将为我链接到的主要 nginx 食谱创建一个wrapper cookbook。在包装器中实现所有Opworks requirements,但尽可能多地调用nginx。 我认为以下更好 - 获取 apt cookbook,编写自定义说明书以卸载 nginx(如果存在),apt-add-repository nginx,apt-get update,安装 nginx。手动运行这个工作,只需要让它在厨师上工作;怎么说?

以上是关于我可以使用/覆盖 AWS OpsWork 的内置 unicorn::rails 配方安装自定义构建的 nginx 吗?的主要内容,如果未能解决你的问题,请参考以下文章

AWS opswork 云形成无法导入

如何使用 AWS OpsWork 部署 2 个或更多 Rails Web 应用程序?

aws opswork 是不是支持 CoreOS

使用 Terraform 创建 AWS-OPSWORK-STACK 时出错

cron 资源在 aws opswork 中不起作用?

使用 Jenkins 和 Opswork 集成进行持续部署