Использование нового модуля Azure PowerShell Az в модулях автоматизации

Опубликовано: 2 Марта, 2023
Использование нового модуля Azure PowerShell Az в модулях автоматизации

В конце 2018 года Microsoft выпустила новый модуль Azure для PowerShell, который называется Az module. Все обновления будут применяться к этому новому модулю. Предыдущий модуль назывался AzureRM, а последняя доступная версия — 6.13.1. При создании новой учетной записи автоматизации все начальные модули Runbook PowerShell используют модуль AzureRM. В этой статье мы рассмотрим необходимые изменения, которые необходимо выполнить, чтобы начать использовать новый модуль Az с учетными записями автоматизации.

Вам может быть интересно: это просто вопрос переименования командлетов, которые есть в наших скриптах? Есть две небольшие сложности: во-первых, они не работают вместе, поэтому в общем случае мы должны использовать один или другой. Во-вторых, за модулем Az будущее, и они постоянно получают обновления. При этом мы должны убедиться, что все доступные и требуемые параметры совпадают или, по крайней мере, совместимы с предыдущим модулем. Пример, иллюстрирующий наш сценарий: простое изменение одного командлета между модулем AzureRM и Az приводит к следующей ошибке.

Золотое правило — это соглашение об именах командлетов: когда мы меняем на . Например, Get-AzureRMVM в новом модуле — это Get-azVM, вот и все! Есть некоторые исключения, но их не так много.

Создание новой учетной записи автоматизации в Microsoft Azure

Первым шагом является создание новой учетной записи службы автоматизации Azure. Войдя на портал Azure, введите Учетные записи автоматизации в кнопке поиска. В новой колонке нажмите «Добавить» и укажите имя, группу ресурсов и обязательно оставьте «да» в поле ?». Раздел. Нажмите «Создать» и дождитесь завершения процесса создания.

Щелкните только что созданную , а затем щелкните элемент Runbooks. Будут перечислены те, которые по умолчанию поставляются с любой новой учетной записью автоматизации. Дважды щелкните AzureAutomationTutorialScript, который является типом . В новой колонке, предназначенной для данного модуля Runbook, нажмите «Изменить», чтобы увидеть код, и результат будет похож на изображение, изображенное ниже.

Мы выделили все командлеты, использующие предыдущие модули, и их необходимо заменить, чтобы использовать модуль AZ.

Когда вы начнете переходить с AzureRM на модуль Az, большинство командлетов — это всего лишь вопрос следования нашему золотому правилу (замените на ). Для безопасности рекомендуется проверить, имеют ли замененные командлеты одинаковые требования к параметрам.

Однако, если вы не уверены, лучше всего проверить онлайн-документацию. Для каждого отдельного командлета Microsoft информирует модуль, как показано на рисунке ниже. Это дает вам достаточно информации, чтобы решить, какой модуль используется и необходимые параметры.

Я использовал первое правило, которое мы можем использовать для перехода модулей. Итак, я ищу Get-AzResourceGroup (только что заменил строку AzureRM для AZ) и нахожу командлет и параметры.

Загрузка модулей Az в ваш аккаунт автоматизации

При использовании учетных записей автоматизации цель состоит в том, чтобы сделать ее как можно более простой, включая загрузку только необходимых модулей для модулей Runbook. Чтобы использовать модули Az, нам необходимо установить модуль Az.Accounts, который является требованием для любого другого модуля Az, который нам может потребоваться.

Вернитесь к первой колонке вашей учетной записи автоматизации, щелкните элемент «Модули» с левой стороны. Щелкните Обзор галереи, в новой колонке введите Az.Accounts и щелкните первый элемент, затем щелкните Импорт. В появившейся новой колонке нажмите OK и дождитесь завершения.

Мы должны повторить тот же процесс для любого другого модуля, который нам нужен. Поскольку мы хотим управлять ресурсами Azure, мы продолжим и добавим модули: , и .

После загрузки модуля в вашу учетную запись автоматизации мы всегда можем проверить свойства модуля, и будет указан список всех командлетов, входящих в состав модуля.

Внесение изменений для использования модуля Az

В этом первом модуле Runbook, который поставляется с любой новой учетной записью автоматизации, нам нужно добавить или изменить элементы, выделенные красным, чтобы запустить модуль Runbook с модулем Az. Если вам нужна копия этого скрипта ниже, вы можете получить его здесь на GitHub.

Import-Module Az.Accounts Import-Module Az.Automation Import-Module Az.Compute $connectionName = "AzureRunAsConnection" try { # Получить подключение "AzureRunAsConnection" $servicePrincipalConnection = Get-AutomationConnection -Name $connectionName "Вход в Azure..." Connect-AzAccount ` -ServicePrincipal ` -TenantId $servicePrincipalConnection.TenantId ` -ApplicationId $servicePrincipalConnection.ApplicationId ` -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint } catch { if (!$servicePrincipalConnection) { $ErrorMessage = "Соединение $connectionName не найдено." throw $ErrorMessage } else{ Write-Error -Message $_.Exception throw $_.Exception } } #Получить все ресурсы ARM из всех групп ресурсов $ResourceGroups = Get-AzResourceGroup foreach ($ResourceGroup в $ResourceGroups) { Write-Output ( «Отображение ресурсов в группе ресурсов» + $ResourceGroup.ResourceGroupName) $Resources = Get-AzResource -ResourceGroupName $ResourceGroup.ResourceGroupName | Выберите ResourceName, ResourceType ForEach ($Resource в $Resources) { Write-Output ($Resource.ResourceName + "типа" + $Resource.ResourceType) } Write-Output ("") }

Некоторые заметки с поля

В целом этот процесс не сложен и требует больше терпения и проверки существующих сценариев при использовании новых командлетов модуля Az. Вот несколько ключевых моментов, на которые я хотел бы обратить ваше внимание:

  • В настоящее время любая новая учетная запись автоматизации имеет встроенные модули Runbook, использующие модуль AzureRM. Итак, если вы перешли на модули Az, сохраните их и не используйте встроенные модули Runbook или измените их соответствующим образом, чтобы использовать новый модуль.
  • Обязательно обновите текущий модуль AzureRM до последней доступной версии (6.13.1, если быть точным). Перед выполнением любого перехода необходимо убедиться, что существующие сценарии работают правильно в последней версии AzureRM.
  • Мы можем воспользоваться командлетом Enable-AzureRMAlias, чтобы сохранить совместимость с модулем Az и иметь возможность распознавать устаревшие командлеты. Есть некоторые предостережения, о которых вам нужно знать. Этот командлет не работает в модулях, только командлеты.
  • Некоторые модули изменили свои имена, и наиболее заметным из них является изменение AzureRM.Profile на Az.Accounts.
  • На данный момент Get-AutomationAccount нельзя заменить на Get-AZAutomationAccount. Существует известная ошибка, которую трудно использовать в сценарии автоматизации.