Открыть сервис

Azure Resource Manager

Azure Resource Manager (ARM) — это сервис управления ресурсами в облачной платформе Microsoft Azure, предоставляющий единый уровень управления для развёртывания, настройки и администрирования ресурсов Azure. ARM реализует декларативную модель на основе шаблонов, что позволяет управлять инфраструктурой как кодом (Infrastructure as Code, IaC) и обеспечивает согласованность состояний ресурсов на протяжении всего их жизненного цикла. Введён в 2014 году, заменив классическую модель управления Azure Service Management (ASM), и с тех пор является основным интерфейсом для работы с Azure.

История

До появления ARM управление ресурсами в Azure осуществлялось через классическую модель развёртывания (Azure Service Management, ASM), которая была представлена в 2010 году. ASM работала на основе модели «роль — экземпляр» и не поддерживала группировку ресурсов, что создавало трудности при управлении сложными приложениями. Каждый ресурс создавался и управлялся независимо, без возможности объединения в логические единицы.

В 2014 году Microsoft анонсировала Azure Resource Manager как новую модель развёртывания и управления. Основные нововведения включали:

  • Группы ресурсов — логические контейнеры для объединения связанных ресурсов (например, виртуальных машин, сетей, хранилищ), что упрощало их совместное управление и мониторинг.
  • Декларативные шаблоны — возможность описывать желаемое состояние инфраструктуры в формате JSON (JavaScript Object Notation), что позволяло автоматизировать развёртывание и повторно использовать конфигурации.
  • Управление доступом на основе ролей (RBAC) — детальная настройка прав доступа на уровне ресурсов и групп ресурсов.
  • Тегирование — добавление метаданных (ключ-значение) для организации, фильтрации и учёта затрат.

С 2015 года ARM стал обязательным для всех новых ресурсов Azure, а в 2018 году Microsoft объявила о прекращении поддержки классической модели развёртывания для большинства сервисов. К 2020 году ARM полностью вытеснил ASM, хотя некоторые старые ресурсы (например, классические учётные записи хранения) всё ещё могут существовать.

Архитектура и принципы работы

ARM функционирует как единый слой управления, который обрабатывает все запросы к ресурсам Azure — от создания до удаления. Он взаимодействует с поставщиками ресурсов (Resource Providers), каждый из которых отвечает за определённый тип сервисов (например, Microsoft.Compute для виртуальных машин, Microsoft.Network для сетей, Microsoft.Storage для хранилищ).

Основные компоненты

  • Группа ресурсов (Resource Group)контейнер, объединяющий ресурсы, которые разделяют общий жизненный цикл, доступ и политики. Ресурс может принадлежать только одной группе, но группа может содержать ресурсы разных типов и регионов.
  • Шаблон ARM (ARM Template) — JSON-файл, описывающий желаемое состояние инфраструктуры. Шаблон состоит из разделов: $schema (схема версии), contentVersion (версия шаблона), parameters (входные параметры, например, имена или размеры), variables (локальные переменные), resources (определения ресурсов с их свойствами и зависимостями), outputs (возвращаемые значения, например, IP-адреса).
  • Поставщик ресурсов (Resource Provider) — сервис, который управляет конкретным типом ресурсов. Каждый поставщик регистрируется в подписке и может быть активирован или деактивирован.
  • Политики Azure (Azure Policy) — механизм для применения правил соответствия (например, запрет на создание ресурсов определённого размера или в определённом регионе). Политики применяются на уровне подписки, группы управления или группы ресурсов.
  • Управление доступом на основе ролей (RBAC) — система авторизации, которая назначает роли (например, «Владелец», «Участник», «Читатель») пользователям, группам или приложениям на определённую область (подписка, группа ресурсов, отдельный ресурс).

Процесс развёртывания

  1. Пользователь отправляет запрос на создание или обновление ресурса через портал Azure, Azure CLI, PowerShell или REST API.
  2. ARM проверяет запрос на соответствие политикам, RBAC и квотам подписки.
  3. ARM преобразует декларативное описание (шаблон) в последовательность вызовов к поставщикам ресурсов, учитывая зависимости между ресурсами (например, виртуальная машина не может быть создана до создания виртуальной сети).
  4. Поставщики ресурсов выполняют операции (создание, удаление, обновление) и возвращают результаты.
  5. ARM обновляет состояние ресурсов в своей базе данных и возвращает ответ пользователю.

ARM поддерживает идемпотентность: повторное применение одного и того же шаблона не приводит к дублированию ресурсов, а только корректирует их состояние до заданного.

Классификация шаблонов ARM

Шаблоны ARM можно классифицировать по нескольким признакам:

По способу использования

  • Встроенные шаблоны — предоставляются Microsoft в Azure Marketplace или в документации, готовые к использованию для типовых сценариев (например, развёртывание веб-приложения с базой данных).
  • Пользовательские шаблоны — создаются администраторами для конкретных проектов, могут храниться в репозиториях (например, GitHub) или в Azure.
  • Связанные шаблоны — позволяют разбивать сложные развёртывания на несколько файлов, которые ссылаются друг на друга, что упрощает повторное использование и управление.

По уровню детализации

  • Модульные шаблоны — описывают отдельные компоненты (например, одну виртуальную машину или сеть).
  • Комплексные шаблоны — описывают всю инфраструктуру приложения, включая несколько групп ресурсов и регионов.

По формату

  • JSON — оригинальный формат ARM, поддерживаемый с 2014 года.
  • Bicep — предметно-ориентированный язык (DSL), представленный Microsoft в 2020 году как альтернатива JSON. Bicep имеет более лаконичный синтаксис, поддерживает модули и автоматически компилируется в JSON. Считается предпочтительным для новых проектов.

Применение

ARM используется во всех сценариях управления ресурсами Azure:

  • Развёртывание инфраструктурыавтоматизация создания виртуальных машин, сетей, хранилищ, баз данных и других сервисов. Шаблоны ARM позволяют разворачивать идентичные среды (например, для разработки, тестирования и продакшена) с минимальными изменениями параметров.
  • Управление конфигурациями — обновление существующих ресурсов (например, изменение размера виртуальной машины или добавление диска) без ручного вмешательства.
  • Обеспечение соответствия — применение политик Azure для контроля за соблюдением корпоративных стандартов (например, использование только определённых регионов или типов хранилищ).
  • Учёт затрат и тегирование — автоматическое добавление тегов (например, «Проект: X», «Окружение: Dev») при развёртывании, что упрощает анализ затрат и управление ресурсами.
  • Миграция с классической модели — перенос ресурсов из ASM в ARM с помощью инструментов, таких как Azure Migrate.

Преимущества и ограничения

Преимущества

  • Декларативность — описание желаемого состояния, а не последовательности команд, что снижает риск ошибок.
  • Повторяемость — один и тот же шаблон можно использовать многократно для разных сред.
  • Управление зависимостями — ARM автоматически определяет порядок создания ресурсов.
  • Интеграция с CI/CD — шаблоны ARM могут быть включены в пайплайны Azure DevOps, GitHub Actions или Jenkins.
  • Безопасность — встроенные RBAC и политики Azure позволяют ограничить доступ и действия.

Ограничения

  • Сложность JSON — для больших проектов шаблоны могут стать громоздкими и трудночитаемыми, что частично решается использованием Bicep.
  • Ограничения на размер шаблона — максимальный размер шаблона ARM составляет 4 МБ, а количество ресурсов в одном шаблоне — 800 (для Bicep — 800 модулей).
  • Зависимость от поставщиков ресурсов — не все сервисы Azure полностью поддерживают ARM (например, некоторые функции Azure DevOps управляются через отдельные API).
  • Время развёртывания — сложные развёртывания могут занимать до нескольких часов, особенно при большом количестве ресурсов.

Интересные факты

  • ARM поддерживает развёртывание в нескольких регионах одновременно, что позволяет создавать глобально распределённые приложения из одного шаблона.
  • В 2021 году Microsoft представила Azure Resource Manager Templates (ARM Templates) как часть Azure Quickstart Templates — библиотеки из более чем 1000 готовых шаблонов, доступных на GitHub.
  • Bicep, альтернатива JSON, был разработан с учётом опыта Terraform и других IaC-инструментов и поддерживает обратную совместимость с ARM.

Источники

  • Microsoft Learn: «What is Azure Resource Manager?» (документация Microsoft)
  • Microsoft Docs: «Azure Resource Manager overview» (официальная документация)
  • Azure Quickstart Templates (GitHub-репозиторий Microsoft)
  • «Azure Resource Manager Templates: Best Practices» (Microsoft Press, 2020)
  • Статья «Azure Resource Manager vs. Classic Deployment» (TechNet, 2015)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →