使用自定义 AWS OpsWorks Cookbook 属性覆盖堆栈属性 - AWS OpsWorks

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

使用自定义 AWS OpsWorks Cookbook 属性覆盖堆栈属性

重要

该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre mium Su AWS pp ort 与 AWS Support 团队联系。

注意

对于 Windows 堆栈, AWS OpsWorks Stacks 使用单独的 Chef 运行来生成内置食谱和自定义食谱。这意味着,您无法使用此节中讨论的方法来覆盖 Windows 堆栈的内置属性。

自定义 JSON 是覆盖 AWS OpsWorks Stacks 堆栈配置和内置食谱属性的便捷方法,但它有一些限制。具体而言,您必须在每次使用时手动输入自定义 JSON,因此您没有管理定义的稳健方式。更好的方式一般是使用自定义说明书属性文件来覆盖内置属性。这样做可让您将定义置于源代码管理之下。

使用自定义属性文件覆盖 AWS OpsWorks 堆栈定义的过程非常简单。

重写 AWS OpsWorks Stacks 属性定义
  1. 说明书和诀窍中所述设置说明书存储库。

  2. 使用与包含您要覆盖的属性的内置说明书相同的名称创建一个说明书。例如,要覆盖 Apache 属性,说明书应命名为 apache2。

  3. attributes 文件夹添加到说明书并将一个名为 customize.rb 的文件添加到该文件夹中。

  4. 将一个属性定义添加到您要覆盖、设置为您的首选值的每个内置说明书属性的文件中。该属性必须是normal类型或更高的类型,并且与相应的 AWS OpsWorks Stacks 属性具有完全相同的节点名称。有关 AWS OpsWorks 堆栈属性的详细列表,包括节点名称,请参阅堆栈配置和部署属性:Linux和。内置说明书属性有关属性和属性文件的更多信息,请参阅关于属性文件

    重要

    您的属性必须是normal类型才能覆盖 AWS OpsWorks Stacks 属性;default类型没有优先级。例如,如果您的 customize.rb 文件包含 default[:apache][:keepalivetimeout] = 5 属性定义,则内置 apache.rb 属性文件中的对应属性将先进行评估,并且优先。有关更多信息,请参阅 覆盖属性

  5. 对于包含您要覆盖的属性的每个内置说明书,重复步骤 2 至 4。

  6. 为您的堆栈启用自定义食谱,并提供 Stac AWS OpsWorks ks 将您的食谱下载到堆栈实例所需的信息。有关更多信息,请参阅 安装自定义说明书

注意

有关此过程的完整演练,请参阅覆盖内置属性

后续生命周期事件、部署命令和堆栈命令使用的节点对象现在将包含您的属性定义而不是 AWS OpsWorks 堆栈值。

例如,要覆盖keepalivetimeout 中讨论的内置 logrotate schedule如何指定自定义 JSON 设置,请将 apache2apache 说明书添加到您的存储库并将 customize.rb 文件添加到说明书中包含下列内容的 attributes 文件夹。

normal[:apache][:keepalivetimeout] = 5 normal[:apache][:logrotate][:schedule] = 'weekly'
重要

不应通过修改关联的内置属性文件的副本来覆盖 AWS OpsWorks Stacks 属性。例如,如果您将 apache.rb 复制到您的 apache2/attributes 文件夹并修改其部分设置,实际上将会覆盖内置文件中的所有属性。配方将使用副本中的属性定义并忽略内置文件。如果 AWS OpsWorks Stacks 之后修改内置属性文件,除非您手动更新副本,否则配方将无权访问更改。

为避免这种情况,所有内置说明书都包含空的 customize.rb 属性文件,该文件是所有模块中通过 include_attribute 指令要求的。通过覆盖 customize.rb 的副本中的属性,您仅影响这些特定属性。配方将获取内置属性文件中的任何其他属性值,并且将自动获取您尚未覆盖的任何属性的当前值。

此方法将帮助您在说明书存储库中维持少量的属性,从而降低您的维护开销并使未来的升级管理变得更轻松。