创作 Service Management Automation Runbook

Service Management Automation 和 Microsoft Azure 自动化 中的 Runbook 是 Windows PowerShell 工作流或 PowerShell 脚本。 利用它们能够自动完成管理和部署云服务器的管理流程或 Windows PowerShell 脚本可执行的任何其他功能。

这两个系统之间的 Runbook 没有区别,同一 Runbook 可以使用相同的功能运行。 本文中使用术语“自动化”时,是指 Service Management Automation 和 Microsoft Azure 自动化。

Automation 提供的用于与 Windows PowerShell 工作流一起使用的其他服务包括以下各项:

  • Runbook 的集中存储和管理。

  • 用于计划和运行 Runbook 的可扩展架构。

  • 集中管理并可用于所有 Runbook 的全局资源。

  • 用于创作和测试 Runbook 的用户界面。

  • 用于管理和启动 Runbook 的 cmdlet 集。

创建或导入 Runbook

可以通过在管理门户中创建 Runbook 或从文件导入 Runbook,将 Runbook 添加到 Service Management Automation。

在管理门户中创建 Runbook

  1. 在管理门户中,选择“新建”、“App 服务”、“自动化”、“Runbook”、“快速创建”。

  2. 输入所需的信息,然后选择“ 创建”。 Runbook 名称必须以字母开头,可以使用字母、数字、下划线和短划线。

  3. 如果现在想要编辑 Runbook,请选择“ 编辑 Runbook”。 否则,请选择“ 确定”。

  4. 新的 Runbook 将出现在“Runbook”选项卡中。

从文件导入 Runbook

  1. 在管理门户中,选择“自动化” ,然后选择自动化帐户。

  2. 选择“导入” 。

  3. 选择“ 浏览文件 ”,找到要导入的脚本文件。

  4. 如果现在想要编辑 Runbook,请选择“ 编辑 Runbook”。 否则,请选择“ 确定”。

  5. 新 runbook 会出现在自动化帐户的“Runbook” 选项卡上。

使用 Windows PowerShell 从脚本文件导入 Runbook

可以使用 Import-SmaRunbook cmdlet 通过包含工作流的脚本文件创建新 runbook。

下面的示例命令演示如何将脚本文件导入到现有 runbook 中,然后发布它。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

Import-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Path $scriptPath
Publish-SMARunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

编辑 Runbook

Service Management Automation 中的每个 Runbook 都有两个版本:草稿和已发布。 编辑工作流的草稿版本,然后发布它,以便可以执行它。 无法编辑已发布的版本。

使用管理门户编辑 Runbook

管理门户包括一个编辑器,可以用于查看和编辑 runbook。 除了提供基本文本编辑功能外,编辑器还提供自动插入 Runbook、全局资产和活动代码的功能。

  1. 在管理门户中,选择“自动化”

  2. 选择“Runbook”选项卡。

  3. 选择要编辑的 Runbook 的名称。

  4. 选择“创作”选项卡。

  5. 选择屏幕顶部的“草稿屏幕底部的“编辑”按钮。

  6. 执行所需的编辑。

  7. 在编辑完成后选择“ 保存 ”。

  8. 如果希望发布 Runbook 的最新草稿版本,请选择 “发布 ”。

为 Runbook、全局资产和活动插入代码的步骤选择所需的选项卡:

按照以下步骤将代码插入 Runbook:

  1. 在管理门户编辑器中打开 runbook。

  2. 在屏幕底部,选择“插入,然后选择“Runbook”。

  3. 选择要从中心列插入的 Runbook,然后选择向右箭头。

  4. 如果该 Runbook 具有参数,则会将其列出供你参考。

  5. 选择复选按钮。

  6. 运行所选 Runbook 的代码将插入到当前 Runbook 中。

  7. 如果 Runbook 需要参数,请提供适当的值来代替大括号 <>括起来的数据类型。

使用 PowerShell 编辑自动化 Runbook

要使用 Windows PowerShell 编辑 runbook,请使用选择的编辑器来编辑工作流,然后将它保存为 .ps1 文件。 可以使用 Get-SMARunbookDefinition cmdlet 检索 runbook 的内容,然后使用 Edit-SMARunbook cmdlet 将现有草稿工作流替换为已修改的工作流。

使用 Windows PowerShell 检索 Runbook 的内容

以下示例命令演示了如何检索 Runbook 的脚本并将其保存到脚本文件。 在此示例中,检索的是草稿版本。 也可以检索 runbook 的已发布版本,不过不能更改此版本。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

$runbookDefinition = Get-SMARunbookDefinition -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Type Draft
$runbookContent = $runbookDefinition.Content

Out-File -InputObject $runbookContent -FilePath $scriptPath

使用 Windows PowerShell 更改 Runbook 的内容

下面的示例命令演示如何将 runbook 的现有内容替换为包含工作流的脚本文件的内容。

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$scriptPath = "c:\runbooks\Test-Runbook.ps1"

Edit-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Path $scriptPath -Overwrite
Publish-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName -Path $scriptPath

使用 PowerShell ISE 编辑自动化 Runbook

Windows PowerShell 集成脚本环境(ISE)是一个应用程序,可用于运行命令和编写、测试和调试脚本。 借助 SMA PowerShell ISE 加载项,可以使用此工具编写和测试自动化 Runbook。

  1. 打开 Windows PowerShell ISE。

  2. 如果未在 ISE 右侧显示 SMA ISE 加载项,请打开加载项菜单,并启用 SMA ISE 加载项

  3. 在“配置”选项卡上登录到 SMA

  4. 选择“Runbook”选项卡。应会看到 SMA Runbook 列表。

  5. 选择要编辑的 Runbook,然后选择“ 下载”。 这会从 SMA 下载 Runbook 的本地副本。

  6. 选择打开。 这将使用 Runbook 创建新选项卡。

  7. 对 Runbook 进行必要的更改。

  8. 选择“ 上传草稿 ”以将 Runbook 发送到 SMA。 这将覆盖 Runbook 的现有草稿版本。

  9. 如果要发布 Runbook 的最新草稿版本,请选择 “发布 草稿”。

发布 Runbook

创建 Runbook 后,需要发布它,以便 Runbook 辅助角色可以执行它。 Service Management Automation 中的每个 Runbook 都有草稿和已发布版本。 只有已发布版才能用来运行,只有草稿版才能用来编辑。 已发布版不受对草稿版所做的任何更改的影响。 准备好使草稿版本可用时,可以发布该版本,这会用草稿版本覆盖已发布版本。

使用管理门户发布 Runbook

  1. 选择“自动化” 工作区。

  2. 在屏幕顶部,选择“Runbook”

  3. 找到要编辑的 runbook 并单击其名称。

  4. 在屏幕顶部,选择“ 创作”。

  5. 选择“ 草稿”。

  6. 在屏幕底部,选择“ 发布”。

  7. 对验证消息选择“ ”。

使用 PowerShell 运行 Runbook

可以通过 Windows PowerShell 来使用 Publish-SmaRunbook 发布 runbook。 下面的示例命令演示如何发布 runbook。

$webServer = 'https://MyServer'
$port = 9090
$runbookPath = 'c:\runbooks\Sample-TestRunbook.ps1'
$runbookName = 'Test-Runbook'

Publish-SmaRunbook -WebServiceEndpoint $webServer -Port $port -Name $runbookName

使用 PowerShell ISE 发布 Runbook

Windows PowerShell 集成脚本环境(ISE)是一个应用程序,可用于运行命令和编写、测试和调试脚本。 借助 SMA PowerShell ISE 加载项,可以使用此工具编写和测试自动化 Runbook。

  1. 打开 Windows PowerShell ISE。

  2. 如果未在 ISE 右侧显示 SMA ISE 加载项,请打开加载项菜单,并启用 SMA ISE 加载项

  3. 在“配置”选项卡上登录到 SMA

  4. 选择“Runbook”选项卡。应会看到 SMA Runbook 列表。

  5. 选择 Runbook,然后选择“发布草稿以发布 Runbook 的最新草稿版本。

测试 Runbook

可以在 Service Management Automation 中测试 Runbook 的草稿版本,同时使 Runbook 的已发布版本保持不变。 这样便可以确保新的 Runbook 在替代已发布版之前各项功能运行正常。

测试 Runbook 时,将执行草稿版 Runbook,并会完成其所执行的任何操作。 未创建作业历史记录,但 “测试输出”窗格中会显示“输出 ”和 “警告”和“错误 ”流。 仅当$VerbosePreference变量设置为“继续”时,才会在输出窗格中显示到详细流的消息。

测试 Runbook 时,它仍会正常执行工作流,并针对环境中的资源执行任何操作。 因此,只应针对非生产资源执行测试 runbook。

在 Service Management Automation 中测试 Runbook

要测试 runbook, 请在管理门户中打开 runbook 的草稿版本。 选择 屏幕底部的“测试 ”按钮以启动测试。

在使用输出窗格下的按钮进行测试时,可以停止或挂起 Runbook。 暂停 Runbook 时,该 Runbook 会完成它在被暂停之前正在进行的活动。 暂停 Runbook 后,可以将它停止或重启。

使用 PowerShell ISE 测试 Runbook

PowerShell ISE 加载项提供 cmdlet,这些 cmdlet 模拟了 Get-SMACredential 和 Set-SMAVariable 等标准活动,因此可以像测试任何其他脚本一样在本地计算机上测试 Runbook。

全局资产及其值将从自动化组下载,用于本地测试。 您可以在“资产”选项卡上检查或更改这些值。加密值以橙色显示,并且不会下载其值。 如果要在本地测试中使用这些资产,则必须在本地设置其值。

若要在 SMA 中测试 Runbook,请选择 SMA 中的测试草稿。 将打开一个新窗口。 选择“启动新作业以启动测试。 输出将显示在窗口中。

自动化 Runbook 示例

以下 Runbook 附带 Service Management Automation 作为示例 Runbook 来演示技术和最佳做法。 可在适用于 Windows Server 的 Azure Pack Microsoft 自动化扩展中使用它们。

Runbook 名称 说明
Sample-Deleting-VMCloud-Subscription 演示用于在用户删除 VM 云订阅时触发 Runbook 的有用方案。
Sample-Managing-Azure 演示如何使用 Microsoft Azure PowerShell 模块连接到 Microsoft Azure 订阅并执行基本操作。
Sample-Managing-ConfigurationManager 演示 Service Management Automation 连接到 Configuration Manager 的功能。
Sample-Managing-DataProtectionManager 演示如何连接到 Data Protection Manager (DPM) 服务器并查看有关 DPM 服务器上的磁盘的信息。
Sample-Managing-MySQLServers 演示如何检索将随后用于检索主机服务器列表的安全令牌。
Sample-Managing-OperationsManager 演示 Service Management Automation 连接到 System Center Operations Manager 的功能。
Sample-Managing-Orchestrator 演示如何连接到 System Center Orchestrator 并启动 Orchestrator Runbook 以使用现有基础结构。
Sample-Managing-Plans 演示如何创建新计划并将具有已定义配额的 SQL Server 服务添加到新计划。
Sample-Managing-ServiceBusClouds 演示如何连接到“服务总线云”服务器并查看有关创建的命名空间的信息。
Sample-Managing-SQLServers 演示如何创建新的服务器组并添加 SQL 托管服务器。
Sample-Managing-UserAccounts 演示如何在 Microsoft Azure Pack for Windows Server 中创建用户,该包将在 Microsoft Azure Pack 中创建,并显示在管理员用户扩展的管理门户中。 但是,此用户还应集成到身份验证提供程序(例如 AuthSite)中,以便访问租户的管理门户,此示例中不包括该门户。
Sample-Managing-VirtualMachineManager 演示如何连接到 Virtual Machine Manager (VMM) 服务器并查看有关 VMM 服务器许可证书的信息。
Sample-Managing-VMClouds 演示如何访问有关 Service Provider Foundation 服务器的数据库连接的信息,以及有关 Service Provider Foundation 管理的 VMM 服务器对象的信息。
Sample-Managing-WebSiteCloud 演示如何连接到“网站云”控制器服务器并查看有关“网站云”部署的服务器的信息。
Sample-Modify-VMCloud-Subscription 演示用于在租户或管理员挂起或激活 VM 云订阅时触发 Runbook 的有用方案。
Sample-Using-Activities 演示 Service Management Automation 使用活动的功能
Sample-Using-Checkpoints 演示如何在 Service Management Automation 中使用检查点。
Sample-Using-Connections 演示 Service Management Automation 使用连接连接到远程系统的功能。
Sample-Using-Credentials 演示 Service Management Automation 使用凭据的功能,并输出运行 Service Management Automation Runbook 的用户。 然后,它连接到服务器“ServerName”,并输出由“SampleCredential”指定的正在访问服务器的用户。
Sample-Using-Modules 演示 Runbook 中的导入模块,并输出服务器“ServerName”上已导入模块的数量。 然后,它导入由“ModulePath”指定的模块,并输出新模块计数以及与新导入的模块对应的信息。
Sample-Using-RunbookParameters 演示如何为 Runbook 使用输入参数,并且还指定是否需要参数,提供默认参数值,并稍后在工作流中使用参数值。
Sample-Using-Runbooks 演示如何从另一个 Runbook 内调用 Runbook。
Sample-Using-SuspendWorkflow 演示如何强制挂起 Runbook。 如果在 Runbook 应继续之前需要手动步骤,例如接收特定人员的注销批准,这可能很有用。 手动步骤完成后,将手动恢复挂起的 Runbook 以继续运行 Runbook。
Sample-Using-Variables 演示 Service Management Automation 使用变量的功能。
Sample-Using-VMCloud-Automation 演示用于在 Service Provider Foundation 事件的开头触发 Runbook 的有用方案。

后续步骤