本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Window AWS OpsWorks s 堆栈上使用特定于堆栈的搜索索引
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
注意
此示例假定您已完成在 Windows 实例上运行配方示例。如果没有,您应该先完成该示例。特别是,它描述了如何启用对您的实例的RDP访问权限。
AWS 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 属性,但主要用于检索特定于 AWS OpsWorks Stacks 的属性。例如,aws_opsworks_instance
包含一个提供实例状态 (如 status
) 的 online
属性。
注意
建议的做法是,在能够确保配方与标准 Chef 用法保持一致的情况下使用 node
。有关示例,请参阅对 Windows 堆栈使用节点搜索索引。
此示例说明如何使用 AWS OpsWorks 堆栈索引来检索 AWS OpsWorks 堆栈特定属性的值。它基于一个具有自定义层 (带一个实例) 的简单 Windows 堆栈。它使用 Chef 搜索来获取实例的 AWS OpsWorks Stacks ID 并将结果放入 Chef 日志中。
下面简要总结了如何为本示例创建堆栈。有关更多信息,请参阅 创建新堆栈。
创建堆栈
-
打开 AWS OpsWorks Stacks 控制台
,然后选择 + Stack (+ 堆栈)。指定以下设置,接受其他设置的默认值,然后选择 Add Stack。 -
名称 – IDSearch
-
区域-美国西部(俄勒冈州)
本示例在任何区域都有效,但我们建议将美国西部(俄勒冈州)用于教程。
-
默认操作系统 - Microsoft Windows Server 2012 R2
-
-
选择 Add a layer 并将采用以下设置的自定义层添加到堆栈。
-
名称 – IDCheck
-
短名称 - idcheck
-
-
将具有默认设置@@ 的全天候 t2.micro 实例添加到该IDCheck层并启动它。它将被命名为 iptest1。
AWS OpsWorks 堆栈会自动分配
AWS-OpsWorks-RDP-Server
给此实例。 启用RDP访问权限说明如何向该安全组添加允许授权用户登录实例的入站规则。 -
选择 “权限”,然后选择 “编辑”,然后选择 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)。
实例属性基本上是一个哈希表,实例的 AWS 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 ...