本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
运行 Windows PowerShell 脚本
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
注意
这些示例假定您已完成在 Windows 实例上运行配方示例。如果没有,您应该先完成该示例。特别是,它描述了如何启用对您的实例的RDP访问权限。
让配方在 Windows 实例上执行任务(尤其是没有相应 Chef 资源的任务)的一种方法是让配方运行 Windows 脚本。 PowerShell 本节介绍如何使用 Windows PowerShell 脚本安装 Windows 功能,从而向您介绍基础知识。
该powershell_script
下面简要总结了如何为本示例创建堆栈。有关更多信息,请参阅 创建新堆栈。
创建堆栈
-
打开 AWS OpsWorks Stacks 控制台
,然后选择 Add Stack (添加堆栈)。指定以下设置,接受其他设置的默认值,然后单击 Add Stack。 -
姓名 — PowerShellTest
-
区域-美国西部(俄勒冈州)
本示例在任何区域都有效,但我们建议将美国西部(俄勒冈州)用于教程。
-
默认操作系统 - Microsoft Windows Server 2012 R2
-
-
选择 Add a layer 并将采用以下设置的自定义层添加到堆栈。
-
姓名 — PowerShell
-
短名称 - powershell
-
-
向 PowerShell 图层@@ 添加一个具有默认设置的全天候实例,然后启动该实例。
-
选择 “权限”,然后选择 “编辑”,然后选择 SSH/RDP和 sudo /admin。除了
AWS-OpsWorks-RDP-Server
安全组之外,您还需要此授权才能以普通用户身份登录实例。
当实例正在启动时(通常需要几分钟),您可以创建说明书。本示例的配方将创建一个数据目录,该配方基本上来自于示例 3:创建目录,只是针对 Windows 进行了修改。
设置说明书
-
创建一个名为
powershell
的目录并导航到该目录。 -
创建一个包含以下内容的
metadata.rb
文件,并将该文件保存到windowstest
。name "powershell" version "0.1.0"
-
在
recipes
目录中创建一个powershell
目录。 -
创建包含以下配方的
default.rb
文件,并将该文件保存到recipes
目录。Chef::Log.info("******Installing XPS.******") powershell_script "Install XPS Viewer" do code <<-EOH Install-WindowsFeature XPS-Viewer EOH guard_interpreter :powershell_script not_if "(Get-WindowsFeature -Name XPS-Viewer).installed" end
-
该
powershell_script
资源运行 cmdlet 来安装查看器。XPS本示例仅运行一个 cmdlet,但
code
块可以包含任意数量的命令行。 -
该
guard_interpreter
属性指示 Chef 使用 64 位版本的 Windows PowerShell。 -
not_if
guard 属性可确保 Chef 不会在已安装该功能的情况下再次安装该功能。
-
-
创建
powershell
目录的.zip
存档。 -
将档案上传到 Amazon S3 存储桶,公开该档案,然后记录档案URL。您还可以使用私有存档,但公有存档对本示例已经足够了,并且使用起来更容易一点。
发送到 Amazon S3 存储桶的内容可能包含客户内容。有关删除敏感数据的更多信息,请参阅如何清空 S3 存储桶?或如何删除 S3 存储桶?。
您现在可以安装说明书并运行配方。
运行配方
-
编辑堆栈以启用自定义说明书,然后指定以下设置。
-
存储库类型 - S3 存档
-
存储库 URL-您之前录制URL的食谱档案
接受其他设置的默认值,然后选择 Save 更新堆栈配置。
-
-
运行 Update Custom Cookbooks 堆栈命令,这会将当前版本的自定义说明书安装到实例上。
-
完成 Update Custom Cookbooks 命令后,通过在 Recipes to execute 设置为
powershell::default
的情况下运行 Execute Recipes 堆栈命令来执行配方。
注意
为了方便起见,此示例使用了 Execute Recipes,但通常会 AWS OpsWorks 让 Stacks 通过将配方分配给相应的生命周期事件来自动运行配方。您可以通过手动触发事件来运行此类配方。您可以使用堆栈命令触发设置和配置事件,使用部署命令触发部署和取消部署事件。
配方成功运行后,您可以对其进行验证。
验证 powershell 配方
-
检查 Chef 日志。单击 powershell1 实例 Log 列中的 show,显示日志。向下滚动,您将在接近底部的位置看到您的日志。
... [2015-04-27T18:12:09+00:00] INFO: Storing updated cookbooks/powershell/metadata.rb in the cache. [2015-04-27T18:12:09+00:00] INFO: ******Installing XPS.****** [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Install XPS Viewer] action run (powershell::default line 3) [2015-04-27T18:12:09+00:00] INFO: Processing powershell_script[Guard resource] action run (dynamically defined) [2015-04-27T18:12:42+00:00] INFO: powershell_script[Install XPS Viewer] ran successfully ...
-
RDP用于登录实例并打开 “开始” 菜单。 XPS查看器应与 Windows 配件一起发布。