本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Window OpsWorks s 堆栈上使用特定于堆栈的搜索索引
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
注意
此示例假定您已完成在 Windows 实例上运行配方示例。如果没有,您应该先完成该示例。具体而言,它介绍了如何启用对实例的 RDP 访问。
OpsWorks 除了 Stacks 还提供以下搜索索引:node
-
aws_opsworks_stack
-堆栈配置。 -
aws_opsworks_layer
-堆栈的层配置。 -
aws_opsworks_instance
-堆栈的实例配置。 -
aws_opsworks_app
-堆栈的应用程序配置。 -
aws_opsworks_user
-堆栈的用户配置。 -
aws_opsworks_rds_db_instance
-已注册 RDS 实例的连接信息。
这些索引包括一些标准的 Chef 属性,但主要用于检索特定于 OpsWorks Stacks 的属性。例如,aws_opsworks_instance
包含一个提供实例状态 (如 status
) 的 online
属性。
注意
建议的做法是,在能够确保配方与标准 Chef 用法保持一致的情况下使用 node
。有关示例,请参阅对 Windows 堆栈使用节点搜索索引。
此示例说明如何使用 OpsWorks 堆栈索引来检索 OpsWorks 堆栈特定属性的值。它基于一个具有自定义层 (带一个实例) 的简单 Windows 堆栈。它使用 Chef 搜索来获取实例的 OpsWorks Stacks ID 并将结果放入 Chef 日志中。
下面简要总结了如何为本示例创建堆栈。有关更多信息,请参阅 创建新堆栈。
创建堆栈
-
打开 OpsWorks Stacks 控制台
,然后选择 + Stack (+ 堆栈)。指定以下设置,接受其他设置的默认值,然后选择 Add Stack。 -
姓名 — IDSearch
-
区域-美国西部(俄勒冈州)
本示例在任何区域都有效,但我们建议将美国西部(俄勒冈州)用于教程。
-
默认操作系统 - Microsoft Windows Server 2012 R2
-
-
选择 Add a layer 并将采用以下设置的自定义层添加到堆栈。
-
姓名 — IDCheck
-
短名称 - idcheck
-
-
将具有默认设置@@ 的全天候 t2.micro 实例添加到该 IDCheck 层并启动它。它将被命名为 iptest1。
OpsWorks 堆栈会自动分配
AWS-OpsWorks-RDP-Server
给此实例。 启用 RDP 访问说明如何向该安全组添加允许授权用户登录实例的入站规则。 -
选择 Permissions、Edit,然后选择 SSH/RDP 和 sudo/admin。除了
AWS-OpsWorks-RDP-Server
安全组之外,普通用户还需要此授权才能登录实例。注意
您也可以以管理员身份登录,但需要采用另一个登录过程。有关更多信息,请参阅 使用 RDP 登录。
设置说明书
-
创建一个名为
idcheck
的目录并导航到该目录。 -
创建一个包含以下内容的
metadata.rb
文件,并将该文件保存到opstest
。name "idcheck" version "0.1.0"
-
在
recipes
中创建一个idcheck
目录,并将包含以下配方的default.rb
文件添加到该目录。windowsserver = search(:aws_opsworks_instance, "hostname:idcheck*").first Chef::Log.info("**********The public IP address is: '#{windowsserver[:instance_id]}'**********")
此配方使用包含
aws_opsworks_instance
搜索索引的 Chef 搜索来获取堆栈中每个主机名以idcheck
开头的实例的实例属性。如果您使用默认主题,即通过在图层的短名称后添加整数来创建主机名,则此查询将返回图层中的每个实例。 IDCheck 在此示例中,已知层只有一个实例,因此配方只需将第一个实例分配给windowsserver
。对于多个实例,您可获取完整列表,然后枚举这些实例。此配方利用堆栈中只有一个实例具有此主机名的事实,因此第一个结果是正确结果。如果您的堆栈具有多个实例,则搜索其他属性可能返回多个结果。有关实例属性的列表,请参阅实例数据包 (aws_opsworks_instance)。
实例属性基本上是一个哈希表,实例的 OpsWorks 堆栈 ID 已分配给该
instance_id
属性,因此您可以将 ID 引用为windowsserver[:instance_id]
。配方将对应字符串插入消息并将消息添加到 Chef 日志中。 -
创建
ipaddress
说明书的.zip
存档,将存档上传到 Amazon S3 存储桶并记录存档的 URL。有关说明书存储库的更多信息,请参阅说明书存储库。发送到 Amazon S3 存储桶的内容可能包含客户内容。有关删除敏感数据的更多信息,请参阅如何清空 S3 存储桶?或如何删除 S3 存储桶?。
您现在可以安装说明书并运行配方。
安装说明书并运行配方
-
编辑堆栈以启用自定义说明书,然后指定以下设置。
-
存储库类型 - S3 存档
-
存储库 URL -您之前记录的说明书存档 URL
接受其他设置的默认值,然后选择 Save 更新堆栈配置。
-
-
运行“Update Custom Cookbooks”堆栈命令,这会将当前版本的自定义说明书安装到堆栈的实例 (包括联机实例) 上。如果您的说明书存在早期版本,此命令会覆盖该版本。
-
完成“Update Custom Cookbooks”命令后,通过在 Recipes to execute 设置为
idcheck::default
的情况下运行 Execute Recipes 堆栈命令执行配方。此命令将启动 Chef 运行并显示一个包含配方的运行列表。使 execute_recipes 页面保持打开状态。
配方成功运行后,您可通过查看 Chef 日志中的最新 execute_recipes 事件来验证它。在 Running command execute_recipes page 上,选择 iptest1 实例 Log 列中的 show,显示日志。向下滚动以查找您的日志消息 (接近底部位置),该日志消息与以下内容类似。
... [2015-05-13T20:03:47+00:00] INFO: Storing updated cookbooks/nodesearch/recipes/default.rb in the cache. [2015-05-13T20:03:47+00:00] INFO: Storing updated cookbooks/nodesearch/metadata.rb in the cache. [2015-05-13T20:03:47+00:00] INFO: **********The instance ID is: 'i-8703b570'********** [2015-05-13T20:03:47+00:00] INFO: Chef Run complete in 0.312518 seconds ...