У меня есть модуль Runbook службы автоматизации Azure, который запускает дочерний модуль Runbook для каждой подписки.
foreach ($sub in $subscriptions)
{
$ChildRunbookInputParams = @{"SubscriptionId"="$($sub.SubscriptionId)"}
$job = Start-AzureRmAutomationRunbook `
-Name $ChildRunbookName `
-Parameters $ChildRunbookInputParams `
-ResourceGroupName $AutomationAccountResourceGroup `
-AutomationAccountName $AutomationAccountName
}
И родительский, и дочерний модули Runbook используют одну и ту же учетную запись запуска от имени.
Проблема, с которой я сталкиваюсь, заключается в том, что кажется, что модули Runbook совместно используют контексты, хотя они работают как независимые задания.
Родительский модуль Runbook выполняет Set-AzureRmContext
подписку, содержащую учетную запись автоматизации, чтобы она могла Start-AzureRmAutomationRunbook
. Дочерний модуль Runbook выполняет Set-AzureRmContext
переданный ему идентификатор подписки, чтобы он мог обрабатывать ресурсы в этой подписке.
После запуска первого дочернего модуля Runbook последующие Start-AzureRmAutomationRunbook
вызовы в родительском модуле Runbook завершаются сбоем, поскольку он больше не может найти указанный модуль Runbook . И по мере запуска дополнительных дочерних модулей Runbook (родительский модуль Runbook запускает несколько дочерних заданий до того, как первое из них изменяет подписки), ранее запущенные дочерние задания начинают обрабатывать ресурсы для последней подписки.
Это ожидаемое поведение? Работа с несколькими подписками кажется обычным требованием; какой рекомендуемый шаблон для этого?