本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Windows 实例上运行配方
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
本主题基本上是在 Linux 实例上运行配方的简化版本,旨在向您展示如何在 Windows 堆栈上运行配方。我们建议您先浏览在 Linux 实例上运行配方,当中信息更为详细,且大部分内容都与任一类型的操作系统有关。
有关如何在 AWS OpsWorks Stacks Linux 实例上运行配方的说明,请参阅在 Linux 实例上运行配方。
启用 RDP 访问
在开始之前,如果您尚未执行此操作,则必须设置一个安全组,该安全组包含一条允许对您的实例进行 RDP 访问的入站规则。您在创建堆栈时将需要该组。
当您在某个区域中创建第一个堆栈时, AWS OpsWorks Stacks 会创建一组安全组。它们包括一个名为类似的名字AWS-OpsWorks-RDP-Server
, AWS OpsWorks 堆栈将其连接到所有 Windows 实例以允许 RDP 访问。但是,默认情况下,此安全组没有任何规则,因此您必须添加入站规则以允许 RDP 访问您的实例。
允许 RDP 访问
-
打开 Amazon S3 控制台
,将其设置为堆栈的区域,然后从导航窗格中选择安全组。 -
选择 AWS OpsWorks-RDP-Server,选择入站选项卡,然后选择编辑。
-
使用以下设置添加一条规则:
-
类型 - RDP
-
源 -允许的源 IP 地址。
通常您会允许来自您的 IP 地址或指定 IP 地址范围(一般是公司的 IP 地址范围)的入站 RDP 请求。
-
注意
如下文所述,您还必须编辑用户权限以便为普通用户授予 RDP 访问权限。
有关更多信息,请参阅 使用 RDP 登录。
创建和运行配方
下面简要总结了如何为本示例创建堆栈。有关更多信息,请参阅 创建新堆栈。
创建堆栈
-
打开 AWS OpsWorks Stacks 控制台
,然后选择 Add Stack (添加堆栈)。指定以下设置,接受其他设置的默认值,然后选择 Add Stack。 -
姓名 — WindowsRecipeTest
-
区域-美国西部(俄勒冈州)
本示例在任何区域都有效,但我们建议将美国西部(俄勒冈州)用于教程。
-
默认操作系统 - Microsoft Windows Server 2012 R2
-
-
选择 Add a layer 并将采用以下设置的自定义层添加到堆栈。
-
姓名 — RecipeTest
-
短名称 - recipetest
-
-
向 RecipeTest图层@@ 添加具有默认设置的全天候实例并启动它。
AWS OpsWorks 堆栈会自动分配
AWS-OpsWorks-RDP-Server
给此实例,从而允许授权用户登录该实例。 -
选择 Permissions、Edit,然后选择 SSH/RDP 和 sudo/admin。除了
AWS-OpsWorks-RDP-Server
安全组之外,普通用户还需要此授权才能登录实例。注意
您也可以以管理员身份登录,但需要采用另一个登录过程。有关更多信息,请参阅 使用 RDP 登录。
当实例正在启动时(通常需要几分钟),您可以创建说明书。本示例的配方将创建一个数据目录,该配方基本上来自于示例 3:创建目录,只是针对 Windows 进行了修改。
注意
在为 AWS OpsWorks Stacks Windows 实例实现食谱时,你使用的目录结构与为 Stacks Lin AWS OpsWorks ux 实例实现食谱时使用的目录结构略有不同。有关更多信息,请参阅 说明书存储库。
设置说明书
-
创建一个名为
windowstest
的目录并导航到该目录。 -
创建一个包含以下内容的
metadata.rb
文件,并将该文件保存到windowstest
。name "windowstest" version "0.1.0"
-
在
recipes
中创建windowstest
目录。 -
创建包含以下配方的
default.rb
文件,并将该文件保存到recipes
目录。Chef::Log.info("******Creating a data directory.******") directory 'C:\data' do rights :full_control, '
instance_name
\username
' inherits false action :create end将
username
替换为您的用户名。 -
将说明书放在存储库中。
要在 AWS OpsWorks Stacks 实例上安装您的食谱,您必须将其存储在存储库中,并向 AWS OpsWorks Stacks 提供将食谱下载到该实例所需的信息。您可以将 Windows 说明书作为存档文件存储在 S3 存储桶或 Git 存储库中。本示例使用了 S3 存储桶,因此您必须创建
windowstest
目录的 .zip 存档。有关说明书存储库的更多信息,请参阅说明书存储库。 -
将存档上传到 S3 存储桶,公开存档,然后记录存档的 URL。您还可以使用私有存档,但公有存档对本示例已经足够了,并且使用起来更容易一点。
发送到 Amazon S3 存储桶的内容可能包含客户内容。有关删除敏感数据的更多信息,请参阅如何清空 S3 存储桶?或如何删除 S3 存储桶?。
您现在可以安装说明书并运行配方。
运行配方
-
编辑堆栈以启用自定义说明书,然后指定以下设置。
-
存储库类型 - S3 存档
-
存储库 URL -您之前记录的说明书存档 URL
接受其他设置的默认值,然后选择 Save 更新堆栈配置。
-
-
运行“Update Custom Cookbooks”堆栈命令,这会将当前版本的自定义说明书安装到堆栈的实例 (包括联机实例) 上。如果您的说明书存在早期版本,此命令会覆盖该版本。
-
完成“Update Custom Cookbooks”命令后,通过在 Recipes to execute 设置为
windowstest::default
的情况下运行 Execute Recipes 堆栈命令执行配方。此命令将启动 Chef 运行并显示一个包含配方的运行列表。
配方成功运行后,您可以对其进行验证。
验证 windowstest
-
检查 Chef 日志。选择 opstest1 实例 Log 列中的 show,显示日志。向下滚动,您将在接近底部的位置看到您的日志。
... [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/attributes/customize.rb in the cache. [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/metadata.rb in the cache. [2014-07-31T17:01:46+00:00] INFO: ******Creating a data directory.****** [2014-07-31T17:01:46+00:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3) ...
-
选择 Instances,选择实例的 Actions 列中的 rdp,然后请求一个具有合适到期时间的 RDP 密码。复制 DNS 名称、用户名和密码。您随后可以将该信息用于 RDP 客户端 (如 Windows 远程桌面连接客户端) 以登录实例并验证
c:\data
是否存在。有关更多信息,请参阅 使用 RDP 登录。
注意
如果您的配方无法正常运行,请参阅排查并修复配方问题以获取故障排除提示;其中大多数提示也适用于 Windows 实例。如果你想通过编辑实例上的配方来测试你的修复程序,请在C:\chef\cookbooks
目录中查找你的食谱, AWS OpsWorks Stacks 会安装自定义食谱。
自动执行配方
Execute Recipes 命令是一种测试自定义配方的便捷方式,这正是大多数此类示例中都使用它的原因。但是,实际上,您通常会在实例生命周期的标准时刻运行配方,例如在实例完成启动后或部署应用程序时。 AWS OpsWorks Stacks 支持每个层的一组生命周期事件:设置、配置、部署、取消部署和关闭,从而简化实例上的运行配方。通过将配方分配给相应的生命周期事件,可以让 AWS OpsWorks Stacks 在图层的实例上自动运行配方。
您通常会在实例完成启动后立即创建目录,与设置事件对应。下面展示了如何使用之前在示例中创建的同一堆栈在设置时运行示例配方。您可以对其他事件使用相同的过程。
在设置时自动运行配方
-
在导航窗格中选择 “图层”,然后选择图 RecipeTest 层的 “食谱” 链接旁边的铅笔图标。
-
将
windowstest::default
添加到层的 Setup (设置) 配方,选择 + 将前者添加到层,然后选择 Save (保存) 保存配置。 -
选择 Instances,将另一个实例添加到层,然后启动该实例。
该实例应名为
recipetest2
。启动完成后, AWS OpsWorks Stacks 将运行。windowstest::default
-
在
recipetest2
实例处于在线状态后,请验证c:\data
是否存在。