

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

# 使用自定义模板扩展 OpsWorks 堆栈配置文件
<a name="workingcookbook-template-override"></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 处理 Windows 堆栈的 Chef 运行方式与 Linux 堆栈不同，因此你不能将本节中讨论的技术用于 Windows 堆栈。

OpsWorks Stacks 使用模板来创建配置文件等文件，这些文件通常依赖于许多设置的属性。如果您使用自定义 JSON 或自定义食谱属性来覆盖 OpsWorks 堆栈定义，则您的首选设置将合并到配置文件中，而不是 OpsWorks 堆栈设置。但是， OpsWorks Stacks 不一定要为所有可能的配置设置指定属性；它接受某些设置的默认值，而直接在模板中对其他设置进行硬编码。如果没有相应的 OpsWorks Stacks 属性，则无法使用自定义 JSON 或自定义食谱属性来指定首选设置。

您可以通过创建自定义模板来扩展配置文件以包含额外的配置设置。随后，您可以向文件添加任何配置设置或其他必需内容，并覆盖任何硬编码的设置。有关模板的更多信息，请参阅[模板](workingcookbook-installingcustom-components-templates.md)。

**注意**  
您可以覆盖任何内置模板，但 opsworks-agent.monitrc.erb *除外*。

**创建自定义模板**

1. 创建一个具有与内置说明书相同的结构和目录名的说明书。然后，在适当的目录中创建一个与您要自定义的内置模板同名的模板文件。例如，要使用自定义模板扩展 Apache `httpd.conf` 配置文件，您必须在存储库中实施 `apache2` 说明书，并且您的模板文件必须为 `apache2/templates/default/apache.conf.erb`。使用完全相同的名称允许 OpsWorks Stacks 识别自定义模板并使用它来代替内置模板。

   最简单的方法是将内置模板文件从内置食谱[的 GitHub存储库复制到您的食谱](https://github.com/aws/opsworks-cookbooks)中，然后根据需要进行修改。
**重要**  
请不要复制内置说明书中的任何文件，但要自定义的模板文件除外。复制其他类型的说明书文件 (如配方) 将创建重复的 Chef 资源，并且可能导致错误。

   说明书还可以包含自定义属性、配方和相关文件，但其文件名不应与内置文件名重复。

1. 自定义模板文件以生成符合您要求的配置文件。您可以添加更多设置、删除现有设置、替换硬编码的属性等。

1. 如果您尚未执行此操作，请编辑堆栈设置以启用自定义说明书并指定说明书存储库。有关更多信息，请参阅 [安装自定义说明书](workingcookbook-installingcustom-enable.md)。

**注意**  
有关此过程的完整演练，请参阅[覆盖内置模板](cookbooks-101-opsworks-templates.md)。

您无需实现任何配方或在[图层配置中添加配方](workingcookbook-assigningcustom.md)即可覆盖模板。 OpsWorks Stacks 始终运行内置配方。当此堆栈运行创建配置文件的配方时，它将自动使用您的自定义模板，而不是使用内置模板。

**注意**  
如果 OpsWorks Stacks 对内置模板进行任何更改，则您的自定义模板可能会不同步，无法再正常工作。例如，假设您的模板引用了一个依赖文件，并且文件名发生了变化。 OpsWorks Stacks 不经常进行此类更改，当模板发生更改时，它会列出更改，并允许您选择升级到新版本。您应该监控 OpsWorks Stacks 存储库中是否有更改，并根据需要手动更新您的模板。