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