本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Chef 搜索获取属性值
重要
AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够正常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时它们将停产。为准备此过渡,我们建议您 AWS Systems Manager 尽快将堆栈过渡到。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终结常见问题解答 和 将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager 应用程序管理器。
注意
此方法可用于 Windows 堆栈和 Chef 11.10 Linux 堆栈。
直接从节点对象获取堆栈配置和部署属性值可能很复杂,并且不能用于 Windows 堆栈。替代方法是使用 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 堆栈。下列主题提供了这两种堆栈类型的示例。