使用基于负载的实例时,Amazon OpsWorks 自定义说明书未更新

Posted

技术标签:

【中文标题】使用基于负载的实例时,Amazon OpsWorks 自定义说明书未更新【英文标题】:Amazon OpsWorks Custom Cookbooks not updating when using Load-based instances 【发布时间】:2013-08-29 04:56:42 【问题描述】:

我在 Amazon OpsWorks 中部署了一个堆栈,并广泛使用自定义说明书来部署我的应用程序。我的堆栈中有许多基于负载的实例(它们仅在需要时启动)。

每当我对自定义说明书进行更改时,我都必须手动更新任何正在运行的实例上的说明书(通过导航到部署 > 运行命令)。问题是任何未启动的实例都不会更新,并且它们不会在下次启动时自动更新。

我发现我可以删除然后重新创建所有基于负载的实例,强制它们在下次需要时完全重新设置,但必须有更好的方法来部署更新的自定义说明书。

如何强制我的基于负载的离线实例在下次启动时更新其说明书(即使每次启动都可以)?

【问题讨论】:

【参考方案1】:

From this AWS employee response on an Amazon Opsworks forum:

没有办法将更新推送到停止的实例。我们正在考虑启用此功能的方法。目前,如果您创建一个新的基于时间或负载的实例,它将获取您的更新。

因此,目前看来,做您想做的事情的唯一方法是删除并重新创建每个基于负载的实例。这应确保他们在第一次启动时收到您的自定义食谱的新版本。

【讨论】:

【参考方案2】:

您可以从 Stack、Run Command 窗口运行 Update Custom Cookbooks 命令。

正如它所说:http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-installingcustom-enable-update.html

【讨论】:

【参考方案3】:

根据 opsworks 文档:

http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-installingcustom-enable-update-.html

手动更新自定义说明书

使用修改后的说明书更新您的存储库。 AWS OpsWorks 使用您在最初安装说明书时提供的缓存 URL,因此说明书根文件名、存储库位置和访问权限不应更改。

对于 Amazon S3 或 HTTP 存储库,将原始 .zip 文件替换为具有相同名称的新 .zip 文件。

对于 Git 或 Subversion 存储库,编辑堆栈设置以将 Branch/Revision 字段更改为新版本。

在堆栈页面上,单击运行命令并选择更新自定义说明书命令。

【讨论】:

来自我的原始帖子:“问题是任何未启动的实例都没有更新,并且它们不会在下次启动时自动更新。” 当一台机器当我执行 “在堆栈页面上,单击运行命令并选择更新自定义说明书命令”时 在线。,那台机器开机时自动更新。我试图在进行更新时不必启动每台机器。

以上是关于使用基于负载的实例时,Amazon OpsWorks 自定义说明书未更新的主要内容,如果未能解决你的问题,请参考以下文章

Amazon AWS负载均衡器EC2实例解决ip范围

OpsWorks 基于负载的实例与自动扩展组?

如何向 Opswork 注册 EC2 实例?

AWS opswork 云形成无法导入

Amazon AWS 使用心得(摸索篇一)

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