M365Con 2027 – бесплатная онлайн-конференция · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Оптимизация DevOps: интеграция Azure CLI в конвейеры CI/CD

By ·

В быстром мире современной разработки программного обеспечения эффективность и скорость решают всё. По мере того как команды разработки внедряют практики непрерывной интеграции и непрерывной поставки (CI/CD), потребность в легковесных, надёжных и кроссплатформенных инструментах автоматизации становится как никогда острой. Нужно ли вам развернуть временные среды для тестирования, развернуть инфраст

Automatically translated with AI from the original post. Read the English original

▶ BLOGStreamlining DevOps:Integrating Azure CLI…M365.FM
Titelbild: Streamlining DevOps: Integrating Azure CLI into CI/CD Pipelines

В быстром мире современной разработки программного обеспечения эффективность и скорость решают всё. По мере того как команды разработки внедряют практики непрерывной интеграции и непрерывной поставки (CI/CD), потребность в легковесных, надёжных и кроссплатформенных инструментах автоматизации становится как никогда острой. Нужно ли вам развернуть временные среды для тестирования, развернуть инфраструктуру как код или настроить микросервисы, инструменты конвейера должны работать быстро и стабильно.

На сцену выходит Azure CLI. Созданный ради простоты, скорости и работы на любой платформе, он быстро стал основным инструментом облачных инженеров, которые хотят упростить рабочие процессы DevOps. В этом материале мы разберём, почему Azure CLI хорошо подходит для современных конвейеров развёртывания, как он соотносится с другими инструментами управления и как встроить его в процессы CI/CD без лишних сложностей.

Если вам понравился этот подробный разбор, обязательно послушайте наш связанный эпизод подкаста, Azure CLI vs PowerShell: Which Should You Use?, где мы разбираем ключевые различия между премьерными интерфейсами управления облаком от Microsoft.

Введение в Azure CLI для CI/CD

Конвейерам непрерывной интеграции и непрерывной поставки нужны инструменты, которые работают в минимальных контейнерных средах без лишних накладных расходов. Раньше скрипты автоматизации были жёстко привязаны к конкретным операционным системам, и при переносе между локальными машинами разработчиков, build-агентами и производственными кластерами возникало множество трений. Современный DevOps требует инструментов, которые обеспечивают полный паритет между Windows, macOS и Linux.

Azure CLI отвечает на эти требования напрямую. Благодаря понятной структуре команд, удобной для скриптов, и выводу в формате JSON по умолчанию он позволяет разработчикам и автоматизированным агентам запрашивать, создавать и изменять облачные ресурсы без лишней возни. Встроенный в конвейер CI/CD, будь то GitHub Actions, GitLab CI или Azure DevOps, Azure CLI превращает абстрактные шаги развёртывания в повторяемый и предсказуемый код.

Почему Azure CLI для современных конвейеров

При проектировании современных архитектур CI/CD каждая секунда на счету. Build-агенты потребляют вычислительные ресурсы, а затянувшиеся очереди развёртывания могут замедлить разработку. Azure CLI специально оптимизирован для таких высокоскоростных сред. Поскольку его архитектура опирается на лёгкие REST-вызовы, выполнение происходит исключительно быстро и экономно по ресурсам.

Кроме того, контейнерные build-агенты часто работают на урезанных образах Linux. Установка громоздких зависимостей может существенно увеличить время запуска конвейера. Минимальный объём и простая установка Azure CLI делают его идеальным спутником для раннеров CI/CD на базе Docker. Он позволяет разработчикам тестировать скрипты развёртывания локально, в той же оболочке, что и удалённый build-сервер, и заметно сокращает количество ошибок в духе «у меня же работает».

Azure CLI против PowerShell: краткое сравнение

В управлении облаком часто возникает вопрос, что выбрать: Azure CLI или PowerShell. Оба инструмента очень мощные, но они рассчитаны на разных пользователей и разные операционные сценарии. Чтобы понять, почему Azure CLI часто выходит вперёд для конвейеров CI/CD, полезно сравнить их бок о бок.

СценарийЛучший инструментЧем выделяется
Быстрое развёртывание ресурсовAzure CLIБыстрый и лёгкий, простые команды, работает на любой платформе, отлично подходит для DevOps и скриптов.
Корпоративная автоматизацияPowerShellСправляется со сложной автоматизацией, вывод в виде объектов, массовые операции, глубокая интеграция с Windows.
Интеграция в конвейеры CI/CDAzure CLIКоманды высокого уровня, нативная поддержка инфраструктуры как кода, простая настройка конвейера.
Продвинутые скриптыPowerShellГибкие скрипты, создание собственных инструментов, глубокий контроль над ресурсами Azure.
Кроссплатформенное управлениеAzure CLIРаботает на Linux, macOS и Windows, написан на Python, идеально подходит для разнородных сред.

PowerShell отлично справляется с тяжёлыми объектно-ориентированными административными задачами и глубокой интеграцией с Windows, но Azure CLI выигрывает в контейнерных конвейерах благодаря простому текстовому выводу, более высокой скорости выполнения массовых лёгких операций и нативной совместимости с Bash.

Установка и настройка Azure CLI

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

Если вы настраиваете локальный компьютер или виртуальную машину-агент сборки под управлением Windows, установить CLI можно с помощью PowerShell:

Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi

Для Linux-раннеров CI/CD (например, стандартных раннеров Ubuntu в GitHub Actions) установку можно выполнить в один шаг через репозиторий пакетов Microsoft либо использовать предустановленные среды раннеров, в которых Azure CLI уже включен по умолчанию. После установки проверить её можно простой командой:

az --version

Для аутентификации в конвейере избегайте интерактивного входа через браузер. Вместо этого настройте конвейер так, чтобы он безопасно аутентифицировался с помощью субъекта-службы (Service Principal) или управляемого удостоверения (Managed Identity):

az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID

Базовый синтаксис Azure CLI и основные команды

Главное достоинство Azure CLI — его понятный и предсказуемый синтаксис. Каждая команда начинается с пространства имён az, затем следуют группа ресурсов или сервис и, наконец, действие, которое нужно выполнить. Такая плоская структура команд делает скрипты конвейеров удивительно простыми для написания и чтения.

Ниже приведены несколько базовых команд, которые часто используются в автоматизации облака:

# Create a resource group
az group create --name MyPipelineResourceGroup --location eastus

# List all virtual machines in a table format
az vm list --output table

# Deploy an ARM or Bicep template
az deployment group create --resource-group MyPipelineResourceGroup --template-file azuredeploy.json

По умолчанию команды Azure CLI возвращают чистые JSON-ответы. Это делает тривиальной задачей выборку нужных свойств с помощью встроенных выражений JMESPath (--query) и передачу этих значений в последующие шаги рабочего процесса CI/CD.

Автоматизация развертываний с Azure CLI

Автоматизация — это сердце DevOps. При развертывании приложений в Azure вы редко хотите полагаться на ручные действия в Azure Portal. Оборачивая логику развертывания в скрипты Azure CLI, вы обеспечиваете полную согласованность между средами разработки, тестирования и продакшена.

Представьте, что нужно создать новый Azure App Service, обновить его параметры конфигурации и развернуть код при каждом слиянии в основную ветку. Автоматизированный скрипт на основе Azure CLI делает это тривиальной задачей:

# Create an App Service plan
az appservice plan create --name MyPlan --resource-group MyResourceGroup --sku B1 --is-linux

# Create the web app
az webapp create --name MyAppService --resource-group MyResourceGroup --plan MyPlan --runtime "NODE:18-lts"

# Configure environment variables
az webapp config appsettings set --name MyAppService --resource-group MyResourceGroup --settings DATABASE_URL="Server=tcp:myServer.database.windows.net..."

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

Интеграция Azure CLI в конвейеры CI/CD

Интеграция команд Azure CLI в популярные оркестраторы CI/CD, такие как GitHub Actions или Azure DevOps Pipelines, выполняется на удивление просто. Поскольку агенты конвейеров обычно выполняют командные скрипты оболочки, вы можете разместить стандартные команды `az` прямо в файлах конфигурации рабочего процесса.

Ниже пример фрагмента файла рабочего процесса GitHub Actions, который выполняет вход в Azure и развертывает веб-приложение:

name: Deploy to Azure
on:
  push:
    branches: [ main ]
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Azure Login
      uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Deploy Azure Resources
      run: |
        az group create --name ProdRG --location eastus
        az deployment group create --resource-group ProdRG --template-file infra/main.bicep

Сочетая официальные действия раннеров с командами Azure CLI, вы получаете надёжный, поддающийся аудиту и автоматизированный конвейер развертывания, который срабатывает без сбоев при каждом изменении кода.

Лучшие практики оптимизации DevOps с Azure CLI

Чтобы извлечь максимум из автоматизации Azure CLI и сохранить свои конвейеры CI/CD безопасными и производительными, следуйте этим проверенным практикам:

Заключение

Интеграция Azure CLI в конвейеры CI/CD становится настоящим прорывом для современных DevOps-команд. Его легковесность, кроссплатформенность и интуитивный синтаксис делают его идеальным спутником для быстрых автоматизированных развертываний в облаке. Сочетая безопасные практики аутентификации, хорошо структурированные скрипты и надёжную интеграцию с конвейерами, вы сможете добиться беспрецедентного уровня скорости и надёжности на всех этапах жизненного цикла поставки программного обеспечения.

Чтобы глубже разобраться в этой теме и послушать живую дискуссию о философии командной строки, посмотрите наш сопутствующий выпуск подкаста: Azure CLI vs PowerShell: Which Should You Use?. Освойте оба инструмента, поймите их уникальные сильные стороны и возьмите полный контроль над архитектурой вашего облака Azure уже сегодня!

Azure DevOps Automation GitHub Actions

Related articles

RSS