Я пытаюсь создать задание службы автоматизации Azure для создания стандартного набора тегов / значений в подписке.
Для работы с тегами требуется AzureResourceManager, который недоступен в автоматизации из коробки (проголосуйте за это элемент обратной связи!), поэтому я подписался на эти шаги для загрузки модуля ARM.
Когда я тестирую свой модуль Runbook, я получаю следующий результат:
-------------------------
PSComputerName : localhost
PSSourceJobInstanceId : a8b85213-ee0f-40ea-842f-d33f2e87c910
Id : xxxxx-56ad-42c2-97f4-e364456fc4a6
Name : xxxxx
Environment : AzureCloud
Account : my-service-principal-app-id
Properties : {Default, Tenants, SupportedModes}
-------------------------
New-AzureTag : Your Azure credentials have not been set up or have expired, please run Add-AzureAccount to set up your
Azure credentials.
At Add-SubscriptionTags:41 char:41
+
+ CategoryInfo : CloseError: (:) [New-AzureTag], ArgumentException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Tags.Tag.NewAzureTagCommand
Вот мой модуль Runbook:
workflow Add-SubscriptionTags
{
param
(
# Subscription
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]
$SubscriptionName
)
# Get the PowerShell credential and prints its properties
$cred = Get-AutomationPSCredential -Name 'AzureMaint'
# Connect to Azure
Add-AzureAccount -Credential $cred -ServicePrincipal -Tenant 'xxx-49ab-8a9c-4abce32afc1e' | Write-Verbose
# Set subscription
$subscription = Select-AzureSubscription -SubscriptionName $SubscriptionName -PassThru
write-output '-------------------------'
write-output $subscription
write-output '-------------------------'
# Add tags (Requires AzureResourceManager module)
New-AzureTag -Name 'Managed' -Value $true
New-AzureTag -Name 'Managed' -Value $false
}
AzureMaint PSCredential содержит идентификатор и ключ участника-службы, а субъекту-службе предоставлена роль участника в указанной подписке. Я могу сделать Add-AzureAccount
в ISE с этими учетными данными и добавить теги. Поскольку он успешно печатает информацию о подписке, я предполагаю, что это означает, что Add-AzureAccount
был успешным, так почему я получаю сообщение об ошибке?
Обновлять:
Я создал новую учетную запись автоматизации без модуля ARM, и у меня все еще та же проблема, хотя сообщение об ошибке немного отличается:
Your Azure credentials have not been set up or have expired, please run Add-AzureAccount
to set up your Azure credentials. (Your Azure credentials have not been set up or
have expired, please run Add-AzureAccount to set up your Azure credentials. (Unable
to retrieve service key for ServicePrincipal account xxx-4a00-becf-952fda93edc5.
Please run the Add-AzureAccount cmdlet to supply the credentials for this service principal.))
Итак, теперь мне интересно, не нравится ли мне использование принципала-службы?