Как работает Azure Resource Manager
Проследите путь запроса на создание ресурса через уровень ARM, разберитесь с группами ресурсов как с логическими контейнерами и изучите ролевой доступ и журнал аудита ARM.
«Как работает Azure Resource Manager» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Что такое Azure Resource Manager
Azure Resource Manager (ARM) — это Service развёртывания и управления Azure. Любое действие, выполняемое на портале Azure, через CLI, PowerShell или REST API, проходит через ARM. Он действует как централизованная плоскость управления, которая аутентифицирует и авторизует запросы, а также направляет каждую операцию с ресурсами.
Поток обработки запросов ARM
Когда Вы отправляете запрос на создание ресурса, ARM перехватывает его, проверяет Вашу личность через Microsoft Entra ID, проверяет разрешения RBAC, применяет все правила Azure Policy, а затем передаёт проверенный запрос соответствующему поставщику ресурсов. Поставщик ресурсов (например, Microsoft.Compute) выполняет фактическую операцию и возвращает результат в ARM.
# Example: creating a VM via Azure CLI (routed through ARM)
az vm create \
--resource-group MyRG \
--name MyVM \
--image UbuntuLTS \
--admin-username azureuserПоставщики ресурсов и типы ресурсов
Службы Azure предоставляются через поставщиков ресурсов, каждый из которых определяется пространством имён, например Microsoft.Storage или Microsoft.Network. Каждый тип ресурса (например, Microsoft.Storage/storageAccounts) необходимо зарегистрировать в Вашей подписке, прежде чем Вы сможете создавать его экземпляры. Большинство поставщиков регистрируются автоматически при первом использовании соответствующей службы.
# List registered resource providers
az provider list --query "[?registrationState=='Registered'].namespace" -o table
# Register a provider manually
az provider register --namespace Microsoft.InsightsГруппы ресурсов как логические контейнеры
Группа ресурсов — это логический контейнер, содержащий связанные ресурсы Azure. Все ресурсы в группе используют один и тот же жизненный цикл: их можно развернуть, обновить и удалить вместе. Группы ресурсов также служат областью действия по умолчанию для назначений RBAC и отслеживания затрат. Каждый ресурс Azure должен принадлежать ровно одной группе ресурсов.
# Create a resource group
az group create --name MyResourceGroup --location eastus
# List all resources in a resource group
az resource list --resource-group MyResourceGroup -o tableARM и управление доступом на основе ролей
ARM применяет управление доступом на основе ролей (RBAC) на каждом уровне области действия: в группе управления, подписке, группе ресурсов или отдельном ресурсе. Встроенные роли, такие как Owner, Contributor и Reader, охватывают большинство сценариев. ARM оценивает назначения ролей сверху вниз, начиная с наиболее широкой области действия, а назначения запрета могут блокировать унаследованные разрешения.
# Assign Contributor role at resource group scope
az role assignment create \
--assignee user@contoso.com \
--role 'Contributor' \
--resource-group MyResourceGroupЖурнал аудита ARM
Каждая операция, проходящая через ARM, записывается в Azure Activity Log. Журнал действий фиксирует, кто выполнил операцию, какой ресурс был затронут, когда произошла операция и завершилась ли она успешно или с ошибкой. По умолчанию журналы действий хранятся 90 дней. Их можно архивировать в учётную запись Storage или передавать в Log Analytics для более длительного хранения.
# Query recent ARM operations in activity log
az monitor activity-log list \
--resource-group MyResourceGroup \
--max-events 10 \
--query '[].{time:eventTimestamp, caller:caller, operation:operationName.value, status:status.value}' \
-o tableДекларативные и императивные развертывания
ARM поддерживает как декларативный, так и императивный стиль развертывания. При декларативном развертывании ARM-шаблоны или Bicep описывают желаемое конечное состояние, а ARM определяет операции, необходимые для его достижения. При императивном развертывании команды CLI или PowerShell выполняются пошагово. Декларативные развертывания предпочтительны благодаря воспроизводимости, контролю версий и идемпотентности.
# Imperative: create storage account step-by-step
az storage account create \
--name mystorageaccount \
--resource-group MyRG \
--location eastus \
--sku Standard_LRS
# Declarative: deploy via ARM template
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @azuredeploy.parameters.jsonРежимы развертывания: Complete и Incremental
Развертывания ARM-шаблонов могут выполняться в двух режимах. Режим Incremental (используется по умолчанию) добавляет или обновляет ресурсы, определённые в шаблоне, оставляя без изменений уже существующие в группе ресурсы, которых нет в шаблоне. Режим Complete удаляет из группы ресурсов все ресурсы, не определённые в шаблоне, чтобы группа в точности соответствовала шаблону. Используйте его с осторожностью.
# Incremental deployment (default)
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--mode Incremental
# Complete deployment (deletes unlisted resources!)
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--mode CompleteСтруктура ARM-шаблона
ARM-шаблон — это документ JSON с шестью основными разделами: $schema (версия шаблона), contentVersion, parameters (входные данные), variables (вычисляемые значения), resources (что нужно развернуть) и outputs (возвращаемые значения). Массив ресурсов содержит по одному объекту для каждого ресурса Azure; в каждом объекте указываются тип, версия API, имя, расположение и свойства.
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
'contentVersion': '1.0.0.0',
'parameters': {},
'variables': {},
'resources': [
{
'type': 'Microsoft.Storage/storageAccounts',
'apiVersion': '2023-01-01',
'name': 'mystorageaccount',
'location': '[resourceGroup().location]',
'sku': { 'name': 'Standard_LRS' },
'kind': 'StorageV2'
}
],
'outputs': {}
}Управление зависимостями в ARM
При развертывании нескольких ресурсов ARM по умолчанию может развертывать независимые ресурсы параллельно, ускоряя развертывание. Если один ресурс зависит от другого (например, VM требуется NIC, а NIC — VNet), зависимость явно объявляется с помощью dependsOn. ARM разрешает граф зависимостей и соответствующим образом выстраивает операции в последовательность.
{
'type': 'Microsoft.Network/networkInterfaces',
'name': 'myNic',
'dependsOn': [
'[resourceId("Microsoft.Network/virtualNetworks", "myVNet")]'
],
'properties': {
'ipConfigurations': [{
'name': 'ipconfig1',
'properties': {
'subnet': {
'id': '[resourceId("Microsoft.Network/virtualNetworks/subnets", "myVNet", "mySubnet")]'
}
}
}]
}
}Анализ развертывания What-If
Перед запуском развертывания используйте операцию what-if, чтобы просмотреть изменения, которые ARM внесёт, не применяя их фактически. В результатах перечисляются ресурсы, которые будут созданы, изменены или удалены; типы изменений выделяются разными цветами. Это особенно полезно перед развертыванием в режиме Complete или внесением изменений в рабочие окружения.
# Preview changes before deploying
az deployment group what-if \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @params.jsonБыстрая проверка
Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.
Итоги урока
В этом уроке Вы узнали, что Azure Resource Manager — это централизованный уровень управления всеми ресурсами Azure, группы ресурсов — логические контейнеры для ресурсов с общим жизненным циклом, а развертывания ARM могут выполняться в режимах Incremental или Complete с поддержкой предварительного просмотра what-if. Далее мы рассмотрим написание ARM-шаблонов.
Часто задаваемые вопросы
Урок «Как работает Azure Resource Manager» бесплатный?
Да — полный текст урока «Как работает Azure Resource Manager» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Как работает Azure Resource Manager»?
Проследите путь запроса на создание ресурса через уровень ARM, разберитесь с группами ресурсов как с логическими контейнерами и изучите ролевой доступ и журнал аудита ARM. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Как работает Azure Resource Manager»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Как работает Azure Resource Manager
- Создание шаблонов ARM
- Bicep: современная IaC для Azure
- Terraform в Azure