可以使用 Service Management Automation (SMA) Runbook 在适用于 Windows Server 环境的 Microsoft Azure Pack 中自动执行例程操作。 SMA Runbook 有两种不同的类型:
类型 | 描述 |
---|---|
PowerShell 工作流 | 基于 Windows PowerShell 工作流的文本 Runbook。 |
PowerShell | 基于 Windows PowerShell 脚本的文本运行手册。 |
PowerShell 工作流运行手册
PowerShell 工作流运行手册基于 Windows PowerShell 工作流。 可以使用管理门户中的编辑器直接编辑运行手册的代码。 还可以使用任何脱机文本编辑器并将 Runbook 导入 SMA。
优点
- 使用 PowerShell 工作流代码实现所有复杂的逻辑。
- 在出现错误时,使用检查点来恢复 Runbook。
- 使用并行处理并行执行多个操作。
- 将其他 PowerShell 工作流 Runbook 作为子 Runbook 包含在内,以创建高级工作流。
限制
- 你必须熟悉 PowerShell 工作流。
- Runbook 必须处理 PowerShell 工作流的其他复杂性,例如反序列化的对象。
- 与 PowerShell Runbook 相比,Runbook 需要更长时间来启动,因为它在运行前需要进行编译。
- PowerShell 运行簿只能通过使用 Start-SMARunbook cmdlet 来作为子运行簿包含,该 cmdlet 会创建一个新作业。
PowerShell 运行手册
PowerShell 作业簿基于 Windows PowerShell。 可以使用管理门户中的编辑器直接编辑运行手册的代码。 还可以使用任何脱机文本编辑器并将 Runbook 导入 SMA。
优点
- 使用 PowerShell 代码实现所有复杂逻辑,而无需使用 PowerShell 工作流的其他复杂性。
- 与 PowerShell 工作流 Runbook 相比,Runbook 的启动速度更快,因为它在运行前不需要经过编译。
限制
- 你必须熟悉 PowerShell 脚本。
- 不能使用 并行处理 并行执行多个操作。
- 出现错误时,无法使用检查点来恢复 Runbook。
- 只能使用 Start-SMARunbook cmdlet(将创建新作业),包括 PowerShell 工作流 Runbook 作为子 Runbook。
SMA 如何执行 Runbook
由 SMA Web 服务使用服务管理门户或 Start-SmaRunbook Windows PowerShell cmdlet 来执行启动 Runbook 的请求。 Web 服务将此请求写入自动化数据库,该请求由其中一台自动化工作服务器检索。
如果已填充 Runbook 的 RunbookWorker 属性,则该工作进程服务器将处理作业。 如果工作程序服务器不可用,则作业将失败并显示错误。 如果未填充 Runbook 的 RunbookWorker 属性,则 SMA 会随机选择一台可用的工作进程服务器来处理该请求。
辅助角色服务器创建一个作业,该作业在辅助角色服务器上运行,该作业服务请求并远程访问它将使用的任何计算机或其他资源。 这需要 runbook 中的 cmdlet 能够远程访问这些资源。 或者,运行手册可以包含 InlineScript 命令,以便使用 PowerShell 远程处理在目标计算机上本地运行命令。 下图说明了此概念。
如果作业挂起或中断,则可能会在不同的工作进程服务器上恢复。 因此,您应该谨慎使用所有 Worker 服务器无法访问的本地资源,例如本地计算机上的文件。 应尽可能使用全局资产(如变量)在检查点之间共享信息。
权限
为了让运行手册执行必要的操作,它必须具备对其所用资源的访问权限。 SMA 中的 Runbook 始终在 Automation Runbook Service 的服务帐户上下文中运行。 如果此帐户没有所需的权限,则可以在 Runbook 中使用 凭据 或 连接 全局资源,使用具有所需权限的凭据运行所需的命令。 这些凭据也可以与通过参数接受凭据的 cmdlet 配合使用,或是与 InlineScript 配合使用以便运行使用备用凭据的代码块。