Оптимізація DevOps: інтеграція Azure CLI в конвеєри CI/CD
By Mirko Peters ·
У швидкому світі сучасної розробки програмного забезпечення ефективність і швидкість означають усе. Оскільки команди розробників впроваджують практики безперервної інтеграції та безперервного розгортання (CI/CD), потреба в легких, надійних і кросплатформних інструментах автоматизації ще ніколи не була такою критичною. Чи ви створюєте тимчасові середовища для тестування, розгортаєте інфраструктуру
Automatically translated with AI from the original post. Read the English original
У швидкому світі сучасної розробки програмного забезпечення ефективність і швидкість означають усе. Оскільки команди розробників впроваджують практики безперервної інтеграції та безперервного розгортання (CI/CD), потреба в легких, надійних і кросплатформних інструментах автоматизації ще ніколи не була такою критичною. Чи ви створюєте тимчасові середовища для тестування, розгортаєте інфраструктуру як код чи налаштовуєте мікросервіси, інструменти вашого конвеєра мають працювати швидко й стабільно.
Ось і Azure CLI. Створений для простоти, швидкості та роботи на різних платформах, він швидко став основним інструментом хмарних інженерів, які хочуть оптимізувати робочі процеси DevOps. У цьому матеріалі ми розглянемо, чому Azure CLI добре підходить для сучасних конвеєрів розгортання, як він порівнюється з альтернативними інструментами управління та як його без проблем інтегрувати в процеси CI/CD.
Якщо вам сподобався цей детальний розбір, обов’язково послухайте наш пов’язаний випуск подкасту Azure CLI vs PowerShell: Which Should You Use?, де ми розбираємо ключові відмінності між провідними інтерфейсами управління хмарою від Microsoft.
Вступ до Azure CLI у CI/CD
Конвеєрам безперервної інтеграції та безперервного розгортання потрібні інструменти, які можуть працювати в мінімальних контейнерних середовищах без великих накладних витрат. Раніше скрипти автоматизації були жорстко прив’язані до конкретних операційних систем, що створювало труднощі під час переходу між локальними комп’ютерами розробників, агентами збірки та робочими кластерами. Сучасний DevOps потребує інструментів, які забезпечують повну узгодженість роботи у Windows, macOS і Linux.
Azure CLI відповідає цим вимогам. Завдяки чіткій, зручній для скриптів структурі команд, яка за замовчуванням виводить дані у форматі JSON, він дозволяє розробникам і автоматизованим агентам запитувати, створювати та змінювати хмарні ресурси без зайвих зусиль. Коли його вбудовують у конвеєр CI/CD, наприклад GitHub Actions, GitLab CI або Azure DevOps, Azure CLI перетворює абстрактні кроки розгортання на повторювані та детерміновані код.
Чому Azure CLI для сучасних конвеєрів
Під час проєктування сучасних архітектур CI/CD кожна секунда має значення. Агенти збірки споживають обчислювальні ресурси, а тривалі черги розгортання можуть сповільнити темп розробки. Azure CLI спеціально оптимізовано для таких високошвидкісних середовищ. Оскільки його внутрішня архітектура спирається на легковагові виклики REST, виконання є надзвичайно швидким і ефективним щодо ресурсів.
Крім того, контейнеризовані агенти збірки часто працюють на спрощених образах Linux. Встановлення громіздких залежностей може вдвічі затягнути запуск конвеєра. Мінімальний слід Azure CLI та просте встановлення роблять його ідеальним супутником для CI/CD-раннерів на основі Docker. Він дозволяє розробникам тестувати скрипти розгортання локально в тому самому середовищі оболонки, що й віддалений сервер збірки, значно зменшуючи кількість помилок типу «на моїй машині працює».
Azure CLI vs PowerShell: короткий порівняльний огляд
Вибір між Azure CLI і PowerShell — це поширена дискусія в управлінні хмарою. Обидва інструменти надзвичайно потужні, але вони орієнтовані на зовсім різні типи користувачів і операційні сценарії. Щоб зрозуміти, чому Azure CLI часто стає кращим вибором для конвеєрів CI/CD, корисно порівняти їх безпосередньо.
| Сценарій | Найкращий інструмент | Чим він вирізняється |
|---|---|---|
| Швидке розгортання ресурсів | Azure CLI | Швидкий, легкий, прості команди, працює на будь-якій платформі, чудово підходить для DevOps і скриптів. |
| Корпоративна автоматизація | PowerShell | Справляється зі складною автоматизацією, виводить дані у вигляді об’єктів, підтримує масові операції, має глибоку інтеграцію з Windows. |
| Інтеграція в конвеєр CI/CD | Azure 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. Загорнувши логіку розгортання в скрипти 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 в popular оркестратори CI/CD, як-от GitHub Actions чи Azure DevOps Pipelines, напрочуд просто. Оскільки агенти конвеєрів зазвичай виконують shell-скрипти, ви можете додавати стандартні команди `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 безпечними й продуктивними, дотримуйтеся перевірених найкращих практик:
- Ніколи не жорстко кодуйте секрети: Завжди зберігайте облікові дані службового принципала, рядки підключення та ключі API в захищеному менеджері секретів вашої платформи CI/CD (наприклад, GitHub Secrets або Azure DevOps Variable Groups).
- Фіксуйте версії CLI: Хмарні середовища змінюються швидко. Щоб уникнути несподіваних критичних змін у конвеєрах, явно вкажіть версію Azure CLI, яку мають використовувати ваші агенти збірки.
- Використовуйте запити до JSON: Застосовуйте вбудований параметр
--query, щоб витягувати конкретні ідентифікатори чи кінцеві точки з результатів команд, замість написання складних зовнішніх регулярних виразів або скриптів розбору. - Робіть скрипти ідемпотентними: Проєктуйте команди CLI так, щоб їх можна було запускати повторно без небажаних побічних ефектів або помилок дублювання ресурсів.
- Прибирайте тестові середовища: Використовуйте автоматичні скрипти видалення в конвеєрах перевірки пул-реквестів, щоб видаляти тимчасові групи ресурсів і не накопичувати зайві витрати в хмарі.
Висновок
Інтеграція Azure CLI у конвеєри CI/CD стає справжнім проривом для сучасних DevOps-команд. Його легка природа, крос-платформна сумісність та інтуїтивний синтаксис роблять його ідеальним помічником для швидкого автоматизованого розгортання в хмарі. Поєднуючи безпечні практики автентифікації, добре структуровані скрипти та надійну інтеграцію з конвеєрами, ви можете досягти безпрецедентного рівня швидкості й надійності в життєвому циклі доставки програмного забезпечення.
Щоб зануритися глибше в цю тему та почути жваву дискусію про філософію командних рядків, послухайте наш супутній епізод подкасту: Azure CLI vs PowerShell: Which Should You Use?. Опануйте обидва інструменти, зрозумійте їхні унікальні переваги та візьміть повний контроль над архітектурою вашої хмари Azure вже сьогодні!