使用 Chef 搜索获取属性值 - AWS OpsWorks

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

使用 Chef 搜索获取属性值

重要

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

注意

此方法可用于 Windows 堆栈和 Chef 11.10 Linux 堆栈。

直接从节点对象获取堆栈配置和部署属性值可能很复杂,并且不能用于 Windows 堆栈。替代方法是使用 Chef 搜索查询相关的属性。如果你熟悉 Chef 服务器,你会发现 Chef 搜索与 AWS OpsWorks Stacks 的工作方式略有不同。由于 AWS OpsWorks Stacks 在本地模式下使用 chef-client,因此 Chef 搜索依赖于名为 chef-zero 的 Chef 服务器的本地版本,因此搜索对存储在实例节点对象中的本地数据而不是远程服务器上的数据进行搜索。

实际上,将搜索限制在本地存储的数据上通常并不重要,因为 AWS OpsWorks Stacks 实例上的节点对象包含堆栈配置和部署属性。它们包含食谱通常从Chef服务器获取的大部分(如果不是全部)数据,并且使用相同的名称,因此您通常可以在 AWS OpsWorks Stacks实例上使用为Chef服务器编写的搜索代码,而无需修改。有关更多信息,请参阅 使用 Chef 搜索

下面显示了搜索查询的基本结构:

result = search(:search_index, "key:pattern")
  • 搜索索引指定了查询应用于的属性并确定了返回的对象的类型。

  • 键指定了属性名称。

  • 该模式指定要检索的属性的值。

    您可查询特定属性值或使用通配符查询一系列值。

  • 结果将显示一张列表,当中包含满足查询条件的对象,每个列表均为包含多个相关属性的哈希表。

    例如,如果您使用 node 搜索索引,则查询将返回一个实例对象列表 (每个满足查询的实例对应一个实例对象)。每个对象均为一个哈希表,其中包含一组定义实例配置的属性 (如主机名和 IP 地址)。

例如,以下查询使用 node 搜索索引,此索引是适用于堆栈的实例 (Chef 术语中的节点) 的标准 Chef 索引。它使用主机名 myhost 搜索实例。

result = search(:node, "hostname:myhost")

搜索将返回主机名为 myhost 的实例对象的列表。例如,如果您需要第一个实例的操作系统,它将由 result[0][:os] 表示。如果查询返回多个对象,则可枚举它们以检索必需信息。

如何在配方中使用搜索的详细信息取决于您使用的是 Linux 还是 Windows 堆栈。下列主题提供了这两种堆栈类型的示例。