本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Overriding AWS OpsWorks 使用自定义食谱属性堆叠属性
重要
这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过
注意
对于 Windows 堆栈, AWS OpsWorks Stacks 使用单独的 Chef 运行来制作内置食谱和自定义食谱。这意味着,您无法使用此节中讨论的方法来覆盖 Windows 堆栈的内置属性。
JSON“自定义” 是一种便捷的覆盖方式 AWS OpsWorks 堆栈堆栈配置和内置食谱属性,但它有一些限制。特别是,您必须为每次使用JSON手动输入自定义,因此您没有强大的方法来管理定义。更好的方式一般是使用自定义说明书属性文件来覆盖内置属性。这样做可让您将定义置于源代码管理之下。
使用自定义属性文件进行覆盖的过程 AWS OpsWorks 堆栈的定义很简单。
要覆盖 AWS OpsWorks 堆栈属性定义
-
如说明书和诀窍中所述设置说明书存储库。
-
使用与包含您要覆盖的属性的内置说明书相同的名称创建一个说明书。例如,要覆盖 Apache 属性,说明书应命名为 apache2。
-
将
attributes
文件夹添加到说明书并将一个名为customize.rb
的文件添加到该文件夹中。 -
将一个属性定义添加到您要覆盖、设置为您的首选值的每个内置说明书属性的文件中。该属性必须是
normal
类型或更高的类型,并且具有与相应的节点名称完全相同的节点名称 AWS OpsWorks 堆叠属性。有关详细清单 AWS OpsWorks 堆叠属性,包括节点名称,请参见堆栈配置和部署属性:Linux和。内置说明书属性有关属性和属性文件的更多信息,请参阅关于属性文件。 重要
您的属性必须是
normal
类型才能覆盖 AWS OpsWorks 堆叠属性;default
类型没有优先级。例如,如果您的customize.rb
文件包含default[:apache][:keepalivetimeout] = 5
属性定义,则内置apache.rb
属性文件中的对应属性将先进行评估,并且优先。有关更多信息,请参阅 覆盖属性。 -
对于包含您要覆盖的属性的每个内置说明书,重复步骤 2 至 4。
-
为您的堆栈启用自定义食谱并提供所需的信息 AWS OpsWorks 堆栈,用于将您的食谱下载到堆栈的实例中。有关更多信息,请参阅 安装自定义说明书。
注意
有关此过程的完整演练,请参阅覆盖内置属性。
后续生命周期事件、部署命令和堆栈命令使用的节点对象现在将包含您的属性定义,而不是 AWS OpsWorks 堆叠值。
例如,要覆盖keepalivetimeout
中讨论的内置 logrotate schedule
和 如何指定自定义 JSON 设置,请将 apache2
apache 说明书添加到您的存储库并将 customize.rb
文件添加到说明书中包含下列内容的 attributes
文件夹。
normal[:apache][:keepalivetimeout] = 5 normal[:apache][:logrotate][:schedule] = 'weekly'
重要
你不应该覆盖 AWS OpsWorks 通过修改关联的内置属性文件的副本来堆叠属性。例如,如果您将 apache.rb
复制到您的 apache2/attributes
文件夹并修改其部分设置,实际上将会覆盖内置文件中的所有属性。配方将使用副本中的属性定义并忽略内置文件。如果 AWS OpsWorks Stacks 稍后会修改内置属性文件,除非你手动更新副本,否则配方将无法访问这些更改。
为避免这种情况,所有内置说明书都包含空的 customize.rb
属性文件,该文件是所有模块中通过 include_attribute
指令要求的。通过覆盖 customize.rb
的副本中的属性,您仅影响这些特定属性。配方将获取内置属性文件中的任何其他属性值,并且将自动获取您尚未覆盖的任何属性的当前值。
此方法将帮助您在说明书存储库中维持少量的属性,从而降低您的维护开销并使未来的升级管理变得更轻松。