项目
09/09/2024
27 个参与者
借助 Azure 自动化中的流程自动化,你可以创建并管理 PowerShell、PowerShell 工作流和图形 runbook。 有关详细信息,请参阅
Azure 自动化 runbook
。
自动化根据 runbook 内部定义的逻辑来执行 runbook。 如果 runbook 中断,则会从开始处重启。 此行为要求编写在发生暂时性问题时支持重启的 runbook。
在 Azure 自动化中启动 runbook 会创建一个作业,该作业是 runbook 的单个执行实例。 每个作业都通过连接到 Azure 订阅来访问 Azure 资源。 仅当数据中心内的资源可从公有云访问时,作业才能访问这些资源。
Azure 自动化分配辅助角色用于在 runbook 执行期间运行每个作业。 尽管辅助角色由多个自动化帐户共享,但不同自动化帐户中的作业是相互独立的。 你无法控制作业请求的辅助角色服务。
在 Azure 门户中查看 runbook 列表时,列表会显示已为每个 runbook 启动的每个作业的状态。 Azure 自动化最多将作业日志存储 30 天。
下图显示
PowerShell runbook
、
PowerShell 工作流 runbook
和
图形 runbook
的 runbook 作业的生命周期。
若要了解如何查看或删除个人数据,请参阅
GDPR 的常规数据主体请求
、
GDPR 的 Azure 数据主体请求
或
GDPR 的 Windows 数据主体请求
,具体取决于实际领域和需求。 有关 GDPR 的详细信息,请参阅
Microsoft 信任中心的 GDPR 部分
和
服务信任门户的 GDPR 部分
。
Runbook 执行环境
Azure 自动化中的 runbook 可以在 Azure 沙盒上运行,也可以在
混合 Runbook 辅助角色
上运行。
如果 runbook 设计为针对 Azure 中的资源进行身份验证和运行,则它们会在 Azure 沙盒中运行。 Azure 自动化会分配一个辅助角色,该辅助角色用于在 runbook 执行期间在沙盒中运行每个作业。 尽管辅助角色由多个自动化帐户共享,但不同自动化帐户中的作业是相互独立的。 使用同一沙盒的作业受沙盒的资源限制约束。 Azure 沙盒环境不支持交互式操作。 它阻止访问所有进程外 COM 服务器,并且不支持在 runbook 中对 Win32 提供程序进行
WMI 调用
。 仅在 Windows 混合 Runbook 辅助角色上运行 runbook 时才支持这些方案。
你也可以使用
混合 Runbook 辅助角色
直接在托管角色的计算机上运行 runbook,以及针对环境中的资源运行 runbook。 Azure 自动化存储并管理 runbook,然后将其发送到一个或多个分配的计算机。
在
Azure 存储
、
Azure Key Vault
或
Azure SQL
上启用 Azure 防火墙会阻止从 Azure 自动化 runbook 访问这些服务。 即使启用了允许受信任的 Microsoft 服务的防火墙例外,访问也会被阻止,因为自动化不是受信任服务列表的一部分。 启用防火墙后,只能使用混合 Runbook 辅助角色和
虚拟网络服务终结点
进行访问。
若要在 Linux 混合 Runbook 辅助角色上运行,必须对脚本进行签名并相应配置辅助角色。 或者,
必须关闭签名验证
。
Runbook 执行不应依赖于沙盒的时区。
下表列出一些 runbook 执行任务,并为每个任务列出了建议的执行环境。
与 Azure 资源集成
Azure 沙盒
在 Azure 中托管,身份验证更为简单。 如果使用 Azure VM 上的混合 Runbook 辅助角色,则可
将 runbook 身份验证与托管标识配合使用
。
获取管理 Azure 资源的最佳性能
Azure 沙盒
脚本在同一环境中运行,延迟更低。
最大程度减少运营成本
Azure 沙盒
没有计算开销,且不需要 VM。
执行长时间运行的脚本
混合 Runbook 辅助角色
Azure 沙盒具有
资源限制
。
与本地服务进行交互
混合 Runbook 辅助角色
直接访问主机,或其他云环境或本地环境中的资源。
需要第三方软件和可执行文件
混合 Runbook 辅助角色
管理操作系统并且可以安装软件。
使用 Runbook 监视文件或文件夹
混合 Runbook 辅助角色
在混合 Runbook 辅助角色上,使用
观察程序任务
。
运行资源密集型脚本
混合 Runbook 辅助角色
Azure 沙盒具有
资源限制
。
使用具有特定要求的模块
混合 Runbook 辅助角色
一些示例包括:
WinSCP - 对 winscp.exe 的依赖
IIS administration - 对启用或管理 IIS 的依赖
使用安装程序安装模块
混合 Runbook 辅助角色
沙盒模块必须支持复制。
使用需要 4.7.2 以外版本的 .NET Framework 的 runbook 或模块
混合 Runbook 辅助角色
Azure 沙盒支持 .NET Framework 4.7.2,不支持升级到其他版本。
运行需要提升的脚本
混合 Runbook 辅助角色
沙盒不允许提升。 借助混合 Runbook 辅助角色,可以在运行需要提升的命令时关闭 UAC 并使用
Invoke-Command
。
运行需要访问 Windows Management Instrumentation (WMI) 的脚本
混合 Runbook 辅助角色
在云中的沙盒中运行的作业无法访问 WMI 提供程序。
沙盒中的临时存储
如果需要按照 runbook 逻辑来创建临时文件,则可将 Azure 沙盒中的 Temp 文件夹(即
$env:TEMP
)用于 Azure 中运行的 runbook。 唯一的限制是不能使用超过 1 GB 的磁盘空间(每个沙盒的配额)。 使用 PowerShell 工作流时,这种情况可能会引发问题,因为 PowerShell 工作流使用检查点,脚本可能会在不同的沙盒中重试。
使用混合沙盒,可以根据混合 Runbook 辅助角色上的存储可用性使用
C:\temp
。 但是,根据 Azure VM 建议,不应在 Windows 或 Linux 上使用
临时磁盘
来存储需要持久保留的数据。
Runbook 必须包含用于处理
资源
(例如,VM、网络和网络上的资源)的逻辑。 资源绑定到 Azure 订阅,且 runbook 需要适当的凭据才能访问任何资源。 有关在 runbook 中处理资源的示例,请参阅
处理资源
。
Azure 自动化使用
Microsoft Defender for Cloud
保护你的资源以及检测 Linux 系统中的漏洞。 无论资源是否在 Azure 中,均可跨工作负荷提供安全性。 请参阅
Azure 自动化中的身份验证简介
。
Defender for Cloud 对可以在 VM 上运行任何签名或未签名脚本的用户施加限制。 如果你是具有 VM 的根访问权限的用户,则必须使用数字签名显式配置计算机或将其关闭。 否则,只有在创建自动化帐户并启用适当的功能之后,才能通过运行脚本来应用操作系统更新。
Pretplate
Azure
订阅
是与 Microsoft 达成的使用一项或多项基于云的服务的协议,并会为此向你收费。 对于 Azure 自动化,每个订阅都链接到一个 Azure 自动化帐户,你可以在帐户中
创建多个订阅
。
Runbook 需要适当
凭据
才能访问任何资源,无论是用于 Azure 还是第三方系统。 这些凭据存储在 Azure 自动化、密钥保管库等中。
Azure Monitor
Azure 自动化利用
Azure Monitor
来监视其计算机操作。 这些操作需要 Log Analytics 工作区和
Log Analytics 代理
。
适用于 Windows 的 Log Analytics 代理
适用于 Windows 的 Log Analytics 代理
可与 Azure Monitor 配合使用,用于管理 Windows VM 和物理计算机。 这些计算机可以在 Azure 或非 Azure 环境(例如本地数据中心)中运行。
适用于 Windows 的 Log Analytics 代理之前称为 Microsoft Monitoring Agent (MMA)。
适用于 Linux 的 Log Analytics 代理
适用于 Linux 的 Log Analytics 代理
与适用于 Windows 的代理工作原理类似,但它将 Linux 计算机连接到 Azure Monitor。 代理与特定的服务帐户一起安装,这些帐户执行需要根权限的命令。 有关详细信息,请参阅
服务帐户
。
Log Analytics 代理日志位于
/var/opt/microsoft/omsagent/log/omsagent.log
。
Runbook 权限
Runbook 需要通过凭据向 Azure 进行身份验证的权限。 请参阅
Azure 自动化身份验证概述
。
Azure 自动化包括以下 PowerShell 模块:
Orchestrator.AssetManagement.Cmdlets - 包含几个内部 cmdlet,它们只有在 Azure 沙盒环境中或对 Windows 混合 Runbook 辅助角色执行 runbook 时才可用。 这些 cmdlet 旨在用于代替 Azure PowerShell cmdlet 与自动化帐户资源进行交互。
Az.Automation - 用于与 Azure 自动化交互的推荐 PowerShell 模块,它替代了 AzureRM 自动化模块。 创建自动化帐户时,不自动包含 Az.Automation 模块,需要手动导入这些模块。
AzureRM.Automation - 创建自动化帐户时默认安装。
根据 runbook 和 DSC 配置所需的 cmdlet,也支持可安装的模块。 有关可用于你的 runbook 和 DSC 配置的模块的详细信息,请参阅
在 Azure 自动化中管理模块
。
Azure 自动化使用
证书
向 Azure 进行身份验证,或将其添加到 Azure 或第三方资源。 证书通过安全方式存储,以供 runbook 和 DSC 配置访问。
Runbook 可以使用未经证书颁发机构 (CA) 签名的自签名证书。 请参阅
创建新证书
。
Azure 自动化支持从同一自动化帐户运行作业的环境。 一个 runbook 可以同时运行多个作业。 同时运行的作业越多,就越可能将其分派到同一个沙盒中。 沙盒中最多可以运行 10 个作业。 当沙盒中没有作业在执行时,它将被删除;因此,不应使用它来保存文件。
在同一沙盒进程中运行的作业可能相互影响。 一个示例就是运行
Disconnect-AzAccount
cmdlet。 执行此 cmdlet 会断开共享沙盒进程中每个 runbook 作业的连接。 有关使用此方案的示例,请参阅
阻止并发作业
。
从 Azure 中运行的 runbook 启动的 PowerShell 作业可能无法在完整
PowerShell 语言模式
下运行。
下表介绍作业的可能状态。 可以查看所有 runbook 作业的状态摘要或在 Azure 门户中深入了解特定 runbook 作业的详细信息。 此外,还可配置与 Log Analytics 工作区的集成,以转发 runbook 作业状态和作业流。 有关与 Azure Monitor 日志集成的详细信息,请参阅
将作业状态和作业流从自动化转发到 Azure Monitor 日志
。 另请参阅
获取作业状态
,以获取使用 runbook 中的状态的示例。
图形或 PowerShell 工作流 runbook 未能编译。 PowerShell runbook 未能启动或作业遇到异常。 请参阅
Azure 自动化 runbook 类型
。
失败,正在等待资源
作业失败,因为它已达到
公平份额
限制三次,并且每次都从同一个检查点或 Runbook 开始处启动。
作业正在等待自动化辅助角色上的资源变得可用,以便其能够启动。
系统正在恢复已暂停的作业。
作业正在运行。
正在运行,正在等待资源
作业已卸载,因为它已达到公平份额限制。 片刻之后,它将从其上一个检查点恢复。
作业已分配给辅助角色,并且系统正在将它启动。
作业在完成之前已被用户停止。
系统正在停止作业。
Suspended
仅适用于
图形 runbook 和 PowerShell 工作流 runbook
。 作业已被用户、系统或 Runbook 中的命令暂停。 如果 runbook 没有检查点,则会从开始处启动。 如果它有检查点,它将重新启动并从其上一个检查点继续。 系统仅在发生异常时暂停 runbook。 默认情况下,
ErrorActionPreference
变量设置为“继续”,表示出错时作业将保持运行。 如果该首选项变量设置为“停止”,则出错时作业会暂停。
仅适用于
图形 runbook 和 PowerShell 工作流 runbook
。 系统正在尝试按用户请求暂停作业。 Runbook 只有在达到其下一个检查点后才能挂起。 如果 runbook 越过了最后一个检查点,则只有在完成后才能暂停。
此作业最近已提交,但尚未激活。
活动日志记录
在 Azure 自动化中执行 runbook 会在自动化帐户的活动日志中写入详细信息。 有关如何使用日志的详细信息,请参阅
从活动日志中检索详细信息
。
本部分介绍在 runbook 中处理异常或间歇性问题的一些方法。 一个示例是 WebSocket 异常。 正确的异常处理可防止暂时性网络故障导致 runbook 失败。
ErrorActionPreference
ErrorActionPreference
变量确定 PowerShell 如何响应非终止错误。 终止错误始终会终止,并且不受
ErrorActionPreference
影响。
当 runbook 使用
ErrorActionPreference
时,通常发生的非终止错误(例如
Get-ChildItem
cmdlet 中的
PathNotFound
)会阻止 runbook 完成。 以下示例演示如何使用
ErrorActionPreference
。 由于脚本停止,最后的
Write-Output
命令从不执行。