对 Windows 堆栈使用 AWS OpsWorks Stacks 特定的搜索索引 - AWS OpsWorks

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

对 Windows 堆栈使用 AWS OpsWorks Stacks 特定的搜索索引

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够正常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时它们将停产。为准备此过渡,我们建议您尽快将堆栈过渡到AWS Systems Manager。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终止常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager Application Manager

注意

此示例假定您已完成在 Windows 实例上运行配方示例。如果没有,您应该先完成该示例。具体而言,它介绍了如何启用对实例的 RDP 访问。

除了 node 之外,AWS OpsWorks Stacks 还提供下列搜索索引:

  • 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 Stacks 索引检索 AWS OpsWorks Stacks 特定的属性的值。它基于一个具有自定义层 (带一个实例) 的简单 Windows 堆栈。它使用 Chef 搜索获取实例的 AWS OpsWorks Stacks ID 并将结果放入 Chef 日志中。

下面简要总结了如何为本示例创建堆栈。有关更多信息,请参阅 创建新堆栈

创建堆栈
  1. 打开 AWS OpsWorks Stacks 控制台,然后选择 + Stack (+ 堆栈)。指定以下设置,接受其他设置的默认值,然后选择 Add Stack

    • 名称 - IDSearch

    • 区域-美国西部(俄勒冈州)

      本示例在任何区域都有效,但我们建议将美国西部(俄勒冈州)用于教程。

    • 默认操作系统 - Microsoft Windows Server 2012 R2

  2. 选择 Add a layer 并将采用以下设置的自定义层添加到堆栈。

    • 名称 - IDCheck

    • 短名称 - idcheck

  3. 向 IDCheck 层添加全天候 t2.micro 实例 (采用默认设置) 并启动此实例。它将被命名为 iptest1。

    AWS OpsWorks Stacks 自动将 AWS-OpsWorks-RDP-Server 分配到此实例。启用 RDP 访问 介绍如何将入站规则添加到此安全组,以允许授权用户登录实例。

  4. 选择 PermissionsEdit,然后选择 SSH/RDPsudo/admin。除了 AWS-OpsWorks-RDP-Server 安全组之外,普通用户还需要此授权才能登录实例。

    注意

    您也可以以管理员身份登录,但需要采用另一个登录过程。有关更多信息,请参阅 使用 RDP 登录

设置说明书
  1. 创建一个名为 idcheck 的目录并导航到该目录。

  2. 创建一个包含以下内容的 metadata.rb 文件,并将该文件保存到 opstest

    name "idcheck" version "0.1.0"
  3. 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 Stacks ID 将分配给 instance_id 属性,因此您可将此 ID 引用为 windowsserver[:instance_id]。配方将对应字符串插入消息并将消息添加到 Chef 日志中。

  4. 创建 ipaddress 说明书的 .zip 存档,将存档上传到 Amazon S3 存储桶并记录存档的 URL。有关说明书存储库的更多信息,请参阅说明书存储库

    发送到 Amazon S3 存储桶的内容可能包含客户内容。有关删除敏感数据的更多信息,请参阅如何清空 S3 存储桶?如何删除 S3 存储桶?

您现在可以安装说明书并运行配方。

安装说明书并运行配方
  1. 编辑堆栈以启用自定义说明书,然后指定以下设置。

    • 存储库类型 - S3 存档

    • 存储库 URL -您之前记录的说明书存档 URL

    接受其他设置的默认值,然后选择 Save 更新堆栈配置。

  2. 运行“Update Custom Cookbooks”堆栈命令,这会将当前版本的自定义说明书安装到堆栈的实例 (包括联机实例) 上。如果您的说明书存在早期版本,此命令会覆盖该版本。

  3. 完成“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 ...