Azure CLI против Powershell?
Не совсем в состоянии понять достоинства интерфейса командной строки Azure в среде Windows.
Предназначен ли он для аудитории, которая хочет управлять Azure IAAS из среды Linux?
Я думал, что ядро Powershell будет подходить для администраторов не-Windows. Разве Powershell Core не будет хорошо перенесен на все платформы для обслуживания кроссплатформенной аудитории?
Короче говоря, стоит ли изучать интерфейс командной строки Azure?
12 ответов
Azure CLI - это PowerShell-подобный инструмент, доступный для всех платформ. Вы можете использовать те же команды независимо от того, какую платформу вы используете: Windows, Linux или Mac.
Сейчас есть две версии Azure CLI. Azure CLI 1.0 был написан с Node.js для достижения кроссплатформенных возможностей, а новый Azure CLI 2.0 написан на Python, чтобы предложить лучшие кроссплатформенные возможности. Оба с открытым исходным кодом и доступны на Github. Однако пока только некоторые командлеты PowerShell поддерживают использование в Linux.
Предназначен ли он для аудитории, которая хочет управлять Azure IAAS из среды Linux?
Я думаю, что ответ - да. Я думаю, что для разработчиков Linux или Mac они чаще используют Azure CLI.
И CLI Azure, и пакет PowerShell используют REST API Azure.
Как сказал один из наших контактов с Microsoft: используйте то, что вам нравится, и вы предпочитаете.
Есть несколько плюсов для Azure CLI:
- Открытый исходный код - который имеет много преимуществ. Это может развиваться быстрее в будущем. Вы можете посмотреть, что на самом деле есть в Кодексе, сообщество может или будет больше, и так далее.
- Azure CLI можно использовать с Groovy, Python, Ruby или любым другим языком сценариев. Легче найти хороших разработчиков для этих языков, чем опытного разработчика PowerShell. Например: я взял Groovy из-за Java. Эту комбинацию легче использовать, чем изучать сценарии PowerShell....
В настоящее время есть один действительно большой плюс для PowerShell: существует огромное хранилище примеров скриптов PowerShell для Azure. НО: часто вам приходится делать это самостоятельно, чтобы соответствовать вашим требованиям - поэтому пример может быть хорошей отправной точкой - иногда легче начать с нуля.
Моя рекомендация: используйте Azure CLI -> для написания сценариев используйте язык, с которым знакома ваша компания.
Просто хотел добавить свой опыт работы с Azure Cli и Az PowerShell.
Согласно 2019, оба являются кроссплатформенными, поэтому это должен быть только языковой / синтаксический вариант, но в Azure Cli все / большинство команд являются идемпотентными.
В итоге я заменил все свои шаблоны ARM скриптами Azure Cli, так как он стал менее подробным и простым для чтения.
В Az Powershell вам все еще нужно проверить, существует ли ресурс, прежде чем создавать его, иначе он выдаст исключение, поэтому сценарии могут стать очень сложными без всякой причины.
Мы используем Azure Cli и Az Powershell вместе с Azure DevOps. Команду Azure Cli можно выполнять только из сценариев bash (Linux) или bat (Windows). Так что это не оптимально...
- Мы разворачиваем ресурсы с помощью Azure Cli, потому что его легко читать, а команды являются идемпотентными.
- Для сложных сценариев я предпочитаю использовать PowerShell, так как есть много полезных языковых функций.
PowerShell имеет ряд существенных преимуществ перед CLI:
- PowerShell - это язык Функций Azure. Таким образом, вы можете легко написать модуль или код и отправить его в защищенную функцию Azure. CLI не поддерживается языком.
- То же самое и с модулями Runbook для автоматизации Azure, тогда как интерфейс командной строки не поддерживается.
- Если вы хотите организовать гибридную рабочую нагрузку, охватывающую локальную среду и облако, то есть развернуть Службу на Windows Server, а затем развернуть конечную точку в Azure для взаимодействия с ней, PowerShell может, а CLI - нет).
- Если вы хотите инвестировать в один язык, который может вызывать устаревшие модули для управления, PowerShell может, а CLI - нет.
- Если вы хотите создать свою собственную DLL на C# или любом другом языке и включить ее в свои сценарии. Мне пришлось перепроектировать библиотеки DLL и обернуть их в PowerShell для включения в оркестровки.
- Я добился гораздо большего успеха в расширении конвейеров DevOps с помощью PowerShell, чем CLI.
- PowerShell имеет очень хорошую поддержку многопоточных рабочих нагрузок для таких сценариев, как модульное и дымовое тестирование Azure и крупные параллельные развертывания Azure (помимо параллельных задач DevOps, которые становятся неуклюжими). ТБХ, мне неизвестна встроенная многопоточность в Azure CLI.
- Я могу разработать модуль, использовать его во всех вышеперечисленных сценариях, а затем передать его конечному клиенту; TBH, я не верю, что смогу сделать это для CLI (создать модуль, поставить цифровую подпись и затем создать дистрибутив nuget feed).
Я почти ничего не написал в PowerShell, тогда как с помощью CLI я могу делать что-то, но не другие. Мои навыки PowerShell сохранялись актуальными уже более 10 лет, когда я занимался корпоративными SharePoint, Dynamics, теперь Office и Azure... так что я предвзято.
Powershell не был доступен на платформе, отличной от Windows, до 2018 года. Начиная с января 2018 года, Powershell доступен на платформах MacOS и Linux.
Инструкции по установке Powershell на MacOS или Linux доступны здесь
PowerShell тоже с открытым исходным кодом. Microsoft только что выпустила модуль PowerShell Azure Az (декабрь 2018 г.), который использует ядро .Net. Так что он работает на Linux,Mac OS и Windows. CLI Azure все еще существует для разработчиков Linux, если это предпочтительнее.
Поскольку это часто задаваемый вопрос в сообществе, недавно в документацию была добавлена статья, посвященная сходствам, различиям и нюансам между различными параметрами командной строки Azure: Выберите правильный инструмент командной строки Azure . Этот документ также должен ответить на большинство ваших вопросов.
Когда дело доходит до управления Azure, у вас есть много вариантов. Хотя Azure CLI, Azure PowerShell и Azure Cloud Shell имеют перекрывающиеся функции, каждый из них работает по-разному, а язык иногда путают со средой.
Azure CLI и Azure PowerShell: Azure CLI и Azure PowerShell — это инструменты командной строки, которые позволяют создавать ресурсы Azure и управлять ими. Хотя оба являются кроссплатформенными и могут быть установлены в Windows, macOS и Linux, Azure CLI работает в Windows PowerShell, Cmd или Bash и других оболочках Unix, тогда как для Azure PowerShell требуется Windows PowerShell или PowerShell.
Различные среды оболочки: Windows PowerShell, PowerShell, Cmd и Bash являются средами оболочки. Среда вашей оболочки не только определяет, какие инструменты вы можете использовать, но и изменяет ваш опыт работы с командной строкой.
Shell Environment | Azure CLI | Azure PowerShell |
------------------|-----------|------------------|
Cmd | Yes | |
Bash | Yes | |
Windows PowerShell| Yes | Yes |
PowerShell | Yes | Yes |
Использование инструмента командной строки Azure не всегда необходимо, но это полезный навык. Вот несколько ключевых факторов, которые следует помнить при выборе инструмента командной строки:
- При выборе правильного инструмента учитывайте свой прошлый опыт и текущую рабочую среду.
- Синтаксис Azure CLI аналогичен синтаксису сценариев Bash. Если вы работаете в основном с системами Linux, Azure CLI кажется более естественным.
- Azure PowerShell — это модуль PowerShell. Если вы работаете в основном с системами Windows, Azure PowerShell подойдет вам идеально. Команды следуют схеме именования глагол-существительное, а данные возвращаются в виде объектов.
- Имейте в виду, что паритет функций для служб Azure не всегда существует между Azure CLI и Azure PowerShell.
- Выберите инструмент, который использует ваш опыт и сокращает кривую обучения. Используйте другой инструмент, когда это имеет смысл.
In a nutshell, is it worth learning Azure CLI?
Я заметил, что во время обучения MS Azure (основы AZ-900 и AZ-303 Azure Architect) упражнения выполняются в Azure CLI. Конечно, все они "копируют и вставляют этот код", но похоже, что MS предпочитает CLI над PowerShell, по крайней мере, в учебных целях.
Необязательно, вы будете использовать Azure CLI в Linux, вы также можете использовать его в Windows, и он работает довольно хорошо =D
На мой взгляд, это зависит от того, чем вы хотите заниматься. Я предпочитаю работать с командами Azure CLI вместо Azure CMDLETS. Но я все еще использую PowerShell в качестве языка программирования для скриптов.
Некоторые модули в интерфейсе командной строки более "прямые", чем командлеты AZ или AzRM.
Я использовал и Az Powershel, и cli, но когда документы неоднозначны или команды не поддерживаются, я настоятельно рекомендую пропустить оба варианта и перейти к Azure Rest API.
API Azure Rest обычно вызывается другими инструментами командной строки, поэтому в конечном итоге он является наиболее полнофункциональным и в целом хорошо документированным. Это тоже кроссплатформенность.
Самое сложное — это разобраться с авторизацией. Из powershell я обычно использую что-то вроде этого формата, но при необходимости конвертирую в curl+cli или помещаю в веб-приложение. Вот случайный пример:
$azContext = Get-AzContext
$subscriptionId = $azContext.Subscription.Id
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile)
$token = $profileClient.AcquireAccessToken($azContext.Subscription.TenantId)
$authHeader = @{
'Content-Type'='application/json'
'Authorization'='Bearer ' + $token.AccessToken
}
$uri = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$rg/providers/Microsoft.Web/sites/$site/config/web?api-version=2022-03-01"
$Body = @{
"properties" = @{netFrameworkVersion = "v6.0"}
}
$Params = @{
Uri = $uri
Headers = $authHeader
Method = "PUT"
Body = $Body | ConvertTo-Json -Depth 10
}
$response = Invoke-RestMethod @Params
$response.properties.netFrameworkVersion
Оба варианта предпочтительнее, потому что мы можем использовать любой из них для написания скриптов. В случае Powershell или Azure CLI вам необходимо загрузить программное обеспечение для написания сценариев, но Powershell более предпочтителен, поскольку это встроенный инструмент Microsoft. Но я также заметил, что отдавать команды через Powershell сложнее, если сравнивать с командной строкой.
по этой теме есть статья от MS со следующими отрывками:
Равенство функций для служб Azure не всегда существует между Azure CLI и Azure PowerShell.
При выборе подходящего инструмента учитывайте свой прошлый опыт и текущую рабочую среду.
Если вы работаете в основном с системами Windows, Azure PowerShell вам подойдет. Команды следуют схеме именования глагол-существительное, и данные возвращаются как объекты. Если вы работаете в основном с системами Linux, Azure CLI кажется более естественным.
Выберите инструмент, который использует ваш опыт и сокращает время обучения.