gpt4 book ai didi

powershell - Azure 自动化作业共享订阅上下文

转载 作者:行者123 更新时间:2023-12-02 22:46:32 24 4
gpt4 key购买 nike

我有一个 Azure 自动化 Runbook,它为每个订阅启动一个子 Runbook。

foreach ($sub in $subscriptions)
{
$ChildRunbookInputParams = @{"SubscriptionId"="$($sub.SubscriptionId)"}

$job = Start-AzureRmAutomationRunbook `
-Name $ChildRunbookName `
-Parameters $ChildRunbookInputParams `
-ResourceGroupName $AutomationAccountResourceGroup `
-AutomationAccountName $AutomationAccountName
}

父 Runbook 和子 Runbook 都使用相同的运行方式帐户。

我遇到的问题是 Runbook 似乎正在共享上下文,即使它们作为独立作业运行。
父 Runbook 对包含自动化帐户的订阅执行 Set-AzureRmContext,以便它可以 Start-AzureRmAutomationRunbook。子 Runbook 对它传递的订阅 ID 执行 Set-AzureRmContext 操作,以便它可以处理该订阅中的资源。
第一个子 Runbook 启动后,父 Runbook 中的后续 Start-AzureRmAutomationRunbook 调用会失败,因为它不再找到指定的 Runbook。随着其他子 Runbook 启动(父 Runbook 在第一个子作业更改订阅之前启动多个子作业),先前启动的子作业将开始处理最后一个订阅的资源。

这是预期的行为吗?使用多个订阅似乎是一个常见的要求;推荐的模式是什么?

最佳答案

我们也遇到了这个问题,必须向 Microsoft 提出支持案例来解决。自 2017 年 9 月以来,这可能才成为可能,因为 Azure PowerShell 模块/cmdlet 开始支持将配置文件(AzureRM 上下文)作为参数传递的能力;这可确保 AzureRM 命令并行运行(通过工作流或使用 Start-AzureRMAutoRunbookJob 启动新的子自动化作业)针对指定的上下文执行。

出现此问题的原因是因为使用 Azure 管理的自动化工作线程,在高作业量下,Azure 重用工作线程以节省资源,并且上下文可能会丢失。

GitHub 上提供了此示例 ( https://github.com/jefffanjoy/DemoCode/tree/master/Runbooks/Azure%20Automation )

关于powershell - Azure 自动化作业共享订阅上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com