пятница, 7 сентября 2018 г.

AzureRM v.5 и v.6. Недокументированная особенность работы Get-AzureRMResource

В очередной раз столкнулся с тем, что скрипты для работы с подпиской Microsoft Azure не захотели работать корректно на новом сервере. Оказалось, в работе AzureRM версий 5.Х.Х и 6.Х.Х есть различия, которые не описаны в документации. Это приводит к тому, что скрипты, написанные ранее, не работают после обновления до AzureRM v.6, так как вместе с ним обновляется и модуль AzureRM.Resources.
Итак, суть проблемы в том, что командлет Get-AzureRMResource имеет разный вывод для версий 5 и 6. Внезапно, они оказались несовместимы, хотя в списке изменений ничего подобного нет. Для примера привожу ссылку на AzureRM module v.6.0.1:

https://www.powershellgallery.com/packages/AzureRM/6.0.1

Например, в AzureRM.Resources 5.Х мы могли использовать командлет таким образом:

Get-AzureRmResource -ResourceType 'microsoft.web/sites' -ResourceGroupName $ResourceGroupName -ResourceName $WebAppName

В версии 6.0 уже появились особенности. Например, вывод предыдущей команды не будет содержать Properties. Проблема актуальна для всех версий модуля AzureRM.Resources 6.X, которые есть сегодня.

Пример вывода для для командлетов разных версий (для увеличения можно кликнуть по изображению).



Для AzureRM.Resources 6.X нам необходимо переделать скрипты, в которых используется командлет Get-AzureRmResource, примерно следующим образом:

Get-AzureRmResource -ResourceType 'microsoft.web/sites' -ResourceGroupName $ResourceGroupName -ExpandProperties | WHERE {$_.Name -eq $WebAppName}

Я написал запрос в техническую поддержку Microsoft Azure. Со мной согласились, что это не нормальное поведение и завели кейс на исправление. Через две недели переписки (у меня самый дешевый пакет поддержки) я получил следующий ответ (03.08.2018). Привожу его тут дословно:

Hello Artsiom:

This support request will now be archived. If you have further problems within the scope of this issue, please do reopen the support request. You may receive an invitation from Microsoft to complete a brief web survey. Your feedback is very important to us. We use it to continually improve our service.

We would appreciate it if you can take the time to complete this survey.

In addition, if you would like to discuss any feedback you can contact me or my manager using the contact information in my signature.

Below is a summary of the support request for your records:

Symptom:
Get-AzureRmResource powershell command not working as expected when adding  -ExpandProperties  command.Properties can no longer be seen in newer version.

This used to work in 5.5.2 of AzureRm.Resources.The current version 6.2.0 does not support this command.

Cause: This is an issue/bug in the powershell Get-AzureRmResource command.

Resolution:  A workaround was provided by removing this from the original powershell cmdlet. You have opted  to utilize the following workaround:

Get-AzureRmResource -ResourceType 'microsoft.web/sites' -ResourceGroupName $ResourceGroupName -ExpandProperties | WHERE {$_.Name -eq $WebAppName}

This issue should be mitigated in Azure RM 6.6 powershell module.

На этом всё, ожидаем исправления в следующий версиях модуля.

1 комментарий: