运行 Windows PowerShell 脚本 - AWS OpsWorks

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

运行 Windows PowerShell 脚本

重要

该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre mium Su AWS pp ort 与 AWS 支持 团队联系。

注意

这些示例假定您已完成在 Windows 实例上运行配方示例。如果没有,您应该先完成该示例。特别是,它描述了如何启用对您的实例的RDP访问权限

让配方在 Windows 实例上执行任务(尤其是没有相应 Chef 资源的任务)的一种方法是让配方运行 Windows 脚本。 PowerShell 本节介绍如何使用 Windows PowerShell 脚本安装 Windows 功能,从而向您介绍基础知识。

powershell_script资源在实例上运行 Windows PowerShell cmdlet。以下示例使用 In stal WindowsFeature l-cmdlet 在实例上安装XPS查看器。

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

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

    • 姓名 — PowerShellTest

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

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

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

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

    • 姓名 — PowerShell

    • 短名称 - powershell

  3. 向 PowerShell 图层@@ 添加一个具有默认设置的全天候实例,然后启动该实例。

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

当实例正在启动时(通常需要几分钟),您可以创建说明书。本示例的配方将创建一个数据目录,该配方基本上来自于示例 3:创建目录,只是针对 Windows 进行了修改。

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

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

    name "powershell" version "0.1.0"
  3. recipes 目录中创建一个 powershell 目录。

  4. 创建包含以下配方的 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 不会在已安装该功能的情况下再次安装该功能。

  5. 创建 powershell 目录的 .zip 存档。

  6. 将档案上传到 Amazon S3 存储桶公开该档案,然后记录档案URL。您还可以使用私有存档,但公有存档对本示例已经足够了,并且使用起来更容易一点。

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

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

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

    • 存储库类型 - S3 存档

    • 存储库 URL-您之前录制URL的食谱档案

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

  2. 运行 Update Custom Cookbooks 堆栈命令,这会将当前版本的自定义说明书安装到实例上。

  3. 完成 Update Custom Cookbooks 命令后,通过在 Recipes to execute 设置为 powershell::default 的情况下运行 Execute Recipes 堆栈命令来执行配方。

注意

为了方便起见,此示例使用了 Execute Recipes,但通常会 AWS OpsWorks 让 Stacks 通过将配方分配给相应的生命周期事件来自动运行配方。您可以通过手动触发事件来运行此类配方。您可以使用堆栈命令触发设置和配置事件,使用部署命令触发部署和取消部署事件。

配方成功运行后,您可以对其进行验证。

验证 powershell 配方
  1. 检查 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 ...
  2. RDP用于登录实例并打开 “开始” 菜单。 XPS查看器应与 Windows 配件一起发布。