В современном облачном мире умение эффективно управлять ресурсами из командной строки — это настоящая «магия» для инженеров DevOps и разработчиков․ Azure CLI — кроссплатформенное средство командной строки для управления ресурсами Azure, в сочетании с мощью JSON-формата открывает беспрецедентные возможности для автоматизации инвентаризации, мониторинга и настройки бесплатных служб (Free Tier) и пробных возможностей платформы․
В этой статье мы подробно разберем, как использовать Azure CLI в среде Bash для поиска, фильтрации и автоматизации работы с бесплатными ресурсами Azure, используя нативную поддержку JSON и модули поиска (Azure AI Search)․
Фундамент: Azure CLI, Bash и JSON
Согласно официальной документации Microsoft Learn, Azure CLI — это кроссплатформенное средство, упрощающее управление ресурсами Azure из командной строки интерактивными командами или сценариями․ Лучшая среда для раскрытия его потенциала — Bash, благодаря нативной поддержке конвейеров (pipes) и утилит вроде jq для обработки JSON․
Ключевой параметр: --output json
По умолчанию Azure CLI может выводить данные в таблицах (table), TSV или JSON․ Для автоматизации JSON является стандартом де-факто․ Он позволяет:
- Получать результаты в виде словарей (объектов) или массивов․
- Глубоко вкладывать запросы с помощью параметра
--query(на языке JMESPath)․ - Бесшовно интегрироваться с
jq, Python, PowerShell или другими парсерами․
# Пример: Получение списка всех групп ресурсов в формате JSON
az group list --output json --query "[]․{Name:name, Location:location, Tags:tags}"
Совет: Изучите раздел «Советы по использованию Azure CLI» на Microsoft Learn, чтобы освоить правила кавычек, передачу параметров и выбор форматов выходных данных для сложных сценариев․
Автоматизация инвентаризации бесплатных служб (Free Tier)
Azure предлагает множество служб в рамках бесплатного уровня (Free Tier): от 12-месячных популярных служб до всегда бесплатных․ Ручной поиск их на портале утомителен․ Azure CLI позволяет скриптовать этот процесс․
Поиск подписок и проверка лимитов
Первым шагом является идентификация подписок, созданных при регистрации бесплатной учетной записи․
# Список подписок в JSON
az account list --output json --query "[]․{Name:name, Id:id, State:state, IsDefault:isDefault}"
Мониторинг использования бесплатных квот
Используя данные из раздела «Мониторинг и отслеживание использования бесплатной службы Azure» (Microsoft Cost Management), мы можем автоматизировать проверку остатков квот․ Хотя CLI для Cost Management имеет свои нюансы, базовый мониторинг лимитов ресурсов (vCPU, Storage Accounts) доступен через az vm list-usage и аналогичные команды․
# Проверка использования vCPU в регионе для Free Trial подписки
az vm list-usage --location eastus --output json --query "[?contains(name․value, 'cores')]․{Limit:limit, Current:currentValue, Name:name․localizedValue}"
«Магия» поиска: Azure AI Search и JSON Blob-объектов
Если под «магическими услугами» мы подразумеваем интеллектуальный поиск по неструктурированным данным, то Azure AI Search (ранее Cognitive Search) — это главный инструмент․ Azure CLI предоставляет модуль az search для полного управления жизненным циклом сервиса поиска․
Создание и настройка сервиса поиска через CLI
Скрипты с использованием модуля az search позволяют:
- Создавать сервис поиска (включая бесплатный уровень Free для разработки)․
- Масштабировать его вверх/вниз․
- Управлять API-ключами (администраторские и запросы)․
- Запрашивать системную информацию․
# Создание бесплатного сервиса поиска (Free SKU)
az search service create
--name my-free-search-svc
--resource-group myResourceGroup
--sku Free
--location eastus
--output json
Индексация JSON Blob-объектов: автоматизация извлечения текста
Одна из самых мощных возможностей — индексатор BLOB-объектов (Blob Indexer)․ Он автоматизирует извлечение текста, доступного для поиска, из BLOB-объектов JSON, хранящихся в Azure Storage․
Сценарий: У вас есть контейнер с тысячами JSON-файлов (логи, метаданные, каталоги услуг)․ Вам нужно сделать их поисковыми без написания кода парсеров․
# 1․ Создание источника данных (Data Source) ‒ связь с Storage Account
az search datasource create
--service-name my-free-search-svc
--name json-blob-source
--type azureblob
--connection-string "DefaultEndpointsProtocol=https;AccountName=․․․;AccountKey=․․․;EndpointSuffix=core․windows․net"
--container "my-json-container"
--output json
az search index create
--service-name my-free-search-svc
--name json-content-index
--fields @index_schema․json
--output json
az search indexer create
--service-name my-free-search-svc
--name json-auto-indexer
--data-source-name json-blob-source
--target-index-name json-content-index
--schedule-interval PT1H
--parameters '{"configuration": {"parsingMode": "json"}}'
--output json
Теперь любой новый JSON-файл, брошенный в контейнер, автоматически становится поисковым за счет распарсивания полей․ Это и есть автоматизация «поиска услуг» в чистом виде․
Azure Automation: Бесплатная оркестрация процессов
Для регулярного запуска скриптов поиска, очистки ресурсов или отчетов по бесплатным квотам идеально подходит Служба автоматизации Azure (Azure Automation)․
- Никаких предварительных трат․
- Без комиссии за прекращение использования․
- Плата только за необходимые ресурсы (минуты выполнения Runbook’ов, превышающие бесплатную квоту — 500 минут в месяц)․
Автоматизация жизненного цикла инфраструктуры
Согласно обзору служб автоматизации, Azure Automation позволяет управлять жизненным циклом инфраструктуры и приложений․ Вы можете хранить свои скрипты Azure CLI (Bash/PowerShell) как Runbook’и и запускать их по расписанию или вебхукам․
# Пример: Создание учетной записи автоматизации (Free Tier доступен по умолчанию для первых 500 мин)
az automation account create
--name myAutomationAccount
--resource-group myResourceGroup
--location eastus
--sku Free
--output json
Внутри Runbook’а вы можете использовать управляемое удостоверение (Managed Identity) для аутентификации в Azure CLI (`az login —identity`) и выполнять сложные JSON-запросы к Azure Resource Graph или Cost Management API для поиска «потерянных» бесплатных ресурсов или превышений лимитов․
Продвинутые техники: JMESPath и jq, язык магии JSON
Сила автоматизации кроется в фильтрации․ Параметр --query в Azure CLI использует язык JMESPath․ Для сложной пост-обработки в Bash незаменим jq․
Пример: Поиск всех ресурсов с тегом Environment: FreeTrial
# Azure Resource Graph Query через CLI (требует расширения resource-graph)
az graph query -q "Resources | where tags['Environment'] == 'FreeTrial' | project name, type, location, resourceGroup, tags" --output json |
jq '․data[] | {Name: ․name, Type: ․type, RG: ․resourceGroup, Location: ․location}'
Пример: Парсинг сложного JSON ответа от AI Search
При работе с модулем az search ответы могут быть вложенными․ jq позволяет «вытащить» именно то, что нужно для следующего шага конвейера․
# Получение статуса индексатора и извлечение последней ошибки (если есть)
az search indexer show --service-name my-svc --name my-indexer --output json |
jq '․lastResult | {Status: ․status, StartTime: ․startTime, EndTime: ․endTime, Errors: ․errors[], ItemsFailed: ․itemsFailed}'
Чек-лист лучших практик (Best Practices)
- Всегда используйте
--output jsonв скриптах․ Таблицы (table) ломают парсинг при изменении ширины колонок․ - Используйте
--queryна стороне сервера․ Фильтруйте данные в Azure (JMESPath), а не скачивайте гигабайты JSON для локальной фильтрацииjq․ - Храните секреты в Key Vault․ Не хардкодьте connection strings в скриптах автоматизации․ Используйте
az keyvault secret show․ - Идемпотентность․ Пишите скрипты так, чтобы их повторный запуск не создавал дубликаты (проверяйте существование через
az resource showилиaz search service show)․ - Версионируйте схемы индексов (AI Search)․ Храните
index_schema․jsonв Git․ Применяйте черезaz search index create --fields @file․json․ - Мониторьте бесплатные квоты․ Настройте Azure Automation Runbook, который раз в день проверяет
az vm list-usageиaz consumption usage list, и шлет алерт в Teams/Email при достижении 80% лимита․
Сочетание Azure CLI, нативной поддержки JSON и модулей вроде az search превращает рутину управления облаком в управляемый, предсказуемый и автоматизированный процесс․ Независимо от того, ищете ли вы неиспользуемые бесплатные виртуальные машины, индексируете каталоги «магических услуг» в JSON Blob-хранилище через Azure AI Search, или оркестрируете всё это через бесплатные минуты Azure Automation — командная строка остается самым мощным инструментом в арсенале инженера․
Начните с изучения Справочника по командам Azure CLI и раздела Azure CLI Scripts Using az search Module, чтобы написать свой первый скрипт автоматического обнаружения бесплатных возможностей Azure уже сегодня․
Помните: «Магия» в IT — это просто автоматизация, которую вы еще не написали․ Azure CLI + JSON — ваша волшебная палочка․