

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 自定义堆栈 OpsWorks
<a name="customizing"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

OpsWorks Stacks 内置层提供的标准功能足以满足多种用途。但是，您可能会遇到以下一种或多种情况：
+ 某个内置层的标准配置只是够用，但不够理想；您想要针对特定要求优化它。

  例如，您可能希望为工作进程的最大数量或 `keepalivetimeout` 值等设置指定您自己的值，从而调整 Static Web Server 层的 Nginx 服务器配置。
+ 某个内置层的功能很好，但您希望通过安装更多程序包或运行一些自定义安装脚本来扩展它。

  例如，您可能希望通过还安装 Redis 服务器来扩展 PHP App Server 层。
+ 您有一些不由任何内置层处理的要求。

  例如， OpsWorks Stacks 不包括某些常用数据库服务器的内置层。您可以创建一个自定义层来将这些服务器安装在该层的实例上。
+ 您正在运行一个 Windows 堆栈，该堆栈仅支持自定义层。

OpsWorks Stacks 提供了多种自定义图层的方法，以满足您的特定要求。以下按照提高复杂性和增强功能的顺序列出了一些示例：

**注意**  
其中一些方法仅适用于 Linux 堆栈。有关详细信息，请参阅以下主题。
+ 使用自定义 JSON 覆盖默认 OpsWorks 堆栈设置。
+ 使用可覆盖默认 OpsWorks 堆栈设置的属性文件实现自定义 Chef 食谱。
+ 使用覆盖或扩展默认 OpsWorks Stacks 模板的模板实现自定义 Chef 食谱。
+ 使用运行 shell 脚本的简单配方实施自定义 Chef 说明书。
+ 使用执行创建和配置目录、安装程序包、创建配置文件、部署应用程序等任务的配方实施自定义 Chef 说明书。

您还可以覆盖配方，具体取决于堆栈的 Chef 版本和操作系统。
+ 对于 Chef 0.9 和 11.4 堆栈，您无法通过实施具有与内置配方相同的说明书和配方名称的自定义配方来覆盖内置配方。

  对于每个生命周期事件， OpsWorks Stacks 始终首先运行内置配方，然后运行任何自定义配方。由于这些 Chef 版本不会运行一个具有相同说明书和配方名称的配方两次，因此内置配方优先运行，而自定义配方不会执行。
+ 您可以在 Chef 11.10 堆栈上覆盖内置配方。

  有关更多信息，请参阅 [说明书安装和优先顺序](workingcookbook-chef11-10.md#workingcookbook-chef11-10-override)。
+ 您无法在 Windows 堆栈上覆盖内置配方。

   OpsWorks Stacks 处理 Chef 在 Windows 堆栈中运行的方式不允许覆盖内置配方。

**注意**  
由于许多技术都使用自定义食谱，因此[说明书和诀窍](workingcookbook.md)如果您还不熟悉食谱的实现，则应先阅读。 [说明书基础知识](cookbooks-101-basics.md)提供了实现自定义食谱的详细教程介绍，并[实现堆栈食谱 OpsWorks](cookbooks-101-opsworks.md)介绍了有关如何为 OpsWorks Stacks 实例实现食谱的一些细节。

**Topics**
+ [通过覆盖属性 OpsWorks 来自定义堆栈配置](workingcookbook-attributes.md)
+ [使用自定义模板扩展 OpsWorks 堆栈配置文件](workingcookbook-template-override.md)
+ [扩展层](workingcookbook-extend.md)
+ [创建自定义 Tomcat 服务器层](create-custom.md)
+ [堆栈配置和部署属性](workingcookbook-json.md)