可以创建包含 PowerShell 脚本和依赖关系模块的 ZIP 软件包,以便在可扩展性操作中使用。

为可扩展性操作构建脚本的方法有两种:

  • Cloud Assembly 的可扩展性操作编辑器中直接编写脚本。
  • 在本地环境中创建脚本,然后将其与任何相关依赖关系一起添加到 ZIP 软件包。
通过使用 ZIP 软件包,可以为操作脚本和依赖关系创建自定义的预配置模板,然后可以将其导入到 Cloud Assembly,以便在可扩展性操作中使用。
注: 无需将 PowerCLI cmdlet 定义为依赖关系或将其捆绑到 ZIP 软件包。PowerCLI cmdlet 预配置了 Cloud Assembly 服务的 PowerShell 运行时。

另外,如果与操作脚本中的依赖关系相关联的模块无法由 Cloud Assembly 服务解析,例如,环境中缺少 Internet 访问权限,也可以使用 ZIP 软件包。

此外,还可以使用 ZIP 软件包创建包含多个 PowerShell 脚本文件的可扩展性操作。使用多个脚本文件有助于组织可扩展性操作代码的结构。

前提条件

确认您熟悉 PowerShell 和 PowerCLI。可以在 Docker Hub 找到具有 PowerShell Core、PowerCLI 10、PowerNSX 以及多个社区模块和脚本示例的 Docker 映像。

过程

  1. 在本地计算机上,为操作脚本和依赖关系创建一个文件夹。
    例如, /home/user1/zip-action
  2. 向文件夹中添加扩展名为 .psm1 的主 PowerShell 脚本。
    以下脚本提供了一个称为 main.psm1 的简单 PowerShell 函数:
    function handler($context, $payload) {
    
      Write-Host "Hello " $payload.target
    
     
    
      return $payload
    注: PowerShell 可扩展性操作的输出基于函数正文中显示的最后一个变量。所含函数中的所有其他变量都将放弃。
  3. (可选) 使用 context 参数将代理配置添加到您的主 PowerShell 脚本中。请参见使用上下文参数在 PowerShell 脚本中添加代理配置
  4. (可选) 添加 PowerShell 脚本的任何依赖关系。
    注: 您的 PowerShell 依赖关系脚本必须使用 .psm1 扩展名。请对脚本和保存脚本的子文件夹使用相同的名称。
    1. 登录到 Linux PowerShell shell。
      注: Cloud Assembly 中基于操作的可扩展性的运行时基于 Linux。在 Windows 环境中编译的任何 PowerShell 依赖关系可能会导致生成的 ZIP 软件包不可用。任何已安装的第三方依赖关系必须与 VMware Photon OS 兼容,因为 PowerShell 脚本在 Photon OS 上运行。
    2. 导航到 /home/user1/zip-action 文件夹。
    3. 通过运行 Save-Module cmdlet,下载并保存包含依赖关系的 PowerShell 模块。
      Save-Module -Name <module name> -Path ./
    4. 对任何其他依赖关系模块重复之前的子步骤。
      重要说明: 确认每个依赖关系模块位于单独的子文件夹中。有关编写和管理 PowerShell 模块的详细信息,请参见 如何编写 PowerShell 脚本模块
  5. 在分配的文件夹中,选择您的脚本元素以及(如果适用)依赖关系模块子文件夹并将其压缩为 ZIP 软件包。
    注: 脚本和依赖关系模块子文件夹必须存储在 ZIP 软件包的根级别。在 Linux 环境中创建 ZIP 软件包时,可能会遇到软件包内容未存储在根级别的问题。如果遇到此问题,请通过在命令行 shell 中运行 zip -r 命令来创建软件包。
    cd your_script_and_dependencies_folder
    zip -r ../your_action_ZIP.zip *

下一步做什么

使用 ZIP 软件包创建可扩展性操作脚本。请参见如何创建可扩展性操作