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