Что такое Azure Resource Manager?
Вы провели некоторое время с командой, изучая преимущества инфраструктуры в виде кода и различные подходы, доступные. Ваша компания растет в быстром темпе, и ваша команда знает, что она собирается развернуть значительное количество ресурсов в Azure. Как команда, вы решили, что декларативная инфраструктура как код является правильным подходом к подготовке ресурсов. Команда не хочет поддерживать сценарии, в которых перечисляется каждый шаг развертывания. Прежде чем начать процесс создания первого шаблона, необходимо понять, как работает Azure Resource Manager. Изучение типов шаблонов, доступных для использования с Azure, поможет вам определить следующие шаги в стратегии инфраструктуры как кода.
В этом уроке вы узнаете о Resource Manager и двух типах шаблонов Resource Manager.
Основные понятия Azure Resource Manager
Azure Resource Manager — это служба, которая используется для развертывания ресурсов и управления ими в Azure. Resource Manager можно использовать для создания, обновления и удаления ресурсов в подписке Azure. Вы можете взаимодействовать с Resource Manager с помощью многих средств, включая портал Azure. Resource Manager также предоставляет ряд других функций, таких как управление доступом, аудит и добавление тегов, которые помогают управлять ресурсами после развертывания.
Терминология
По мере того как вы начинаете свой переход в облако с помощью Resource Manager, важно понимать некоторые термины и концепции.
Ресурс: управляемый элемент, доступный на платформе Azure. Виртуальные сети, виртуальные машины, учетные записи хранения, веб-приложения и базы данных являются примерами ресурсов.
Группа ресурсов — это логический контейнер, содержащий связанные ресурсы для решения Azure. Группа ресурсов содержит ресурсы, которыми вы хотите управлять как группой. Большинство ресурсов Azure входят в группу ресурсов. Решение о том, что должно входить в группу ресурсов, принимается исходя из того, что наиболее оптимально для решения.
Примечание.
Небольшое количество ресурсов не содержится в группах ресурсов. Эти типы ресурсов предназначены для конкретных целей, например для управления доступом и применения политик. Дополнительные сведения об этих ресурсах см. в следующем модуле.
Подписка — это логический контейнер и границы выставления счетов для ресурсов и групп ресурсов. Каждый ресурс и группа ресурсов Azure связаны только с одной подпиской.
Группа управления — логический контейнер, который вы используете для управления несколькими подписками. Можно определить иерархию групп управления, подписок, групп ресурсов и ресурсов для эффективного управления доступом, политиками и соответствием с помощью наследования.
Шаблон Azure Resource Manager (шаблон ARM) — это файл шаблона, который определяет один или несколько ресурсов для развертывания в группе ресурсов, подписке, группе управления или арендаторе. Вы можете использовать шаблон для развертывания ресурсов, обеспечивая тем самым согласованность и повторяемость. Существует два типа файлов шаблонов ARM: JSON и Bicep. В этом модуле основное внимание уделяется Bicep.
Льготы
Resource Manager предоставляет множество преимуществ и возможностей, связанных с подготовкой ресурсов инфраструктуры как кода:
- Вы можете развертывать и отслеживать все ресурсы вашего решения как единую группу, а не по отдельности, а также управлять ими.
- Вы можете повторно развертывать решение на протяжении всего цикла разработки и гарантировать, что ресурсы развертываются в согласованном состоянии.
- Вы можете управлять инфраструктурой с помощью декларативных шаблонов, а не с помощью сценариев.
- Вы можете указать зависимости ресурсов, чтобы обеспечить развертывание ресурсов в правильном порядке.
Операции. Уровень управления и плоскость данных
В Azure можно выполнять два типа операций: операции уровня управления и операции плоскости данных. Используйте уровень управления, чтобы управлять ресурсами в подписке. Используйте плоскость данных для доступа к функциям, предоставляемым ресурсом.
Например, для создания виртуальной машины вы используете операцию уровня управления, но для подключения к виртуальной машине с помощью протокола удаленного рабочего стола (RDP) используете операцию плоскости данных.
Уровень управления
При отправке запроса из любого из средств Azure, API или пакетов sdk (SDK), Resource Manager получает, проверяет подлинность и авторизует запрос. Затем Resource Manager отправляет запрос поставщику ресурсов Azure, который принимает запрошенное действие. Так как все запросы обрабатываются через один API, результаты и возможности будут согласованы в различных средствах, доступных в Azure.
На следующем рисунке показана роль, которую Resource Manager играет в обработке запросов Azure:
Все запросы операции уровня управления отправляются на URL-адрес Resource Manager. Например, операция создания или обновления виртуальных машин является операцией уровня управления. Ниже приведен URL-адрес запроса для этой операции:
PUT https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}?api-version=2022-08-01
В уровне управления предусмотрено, какие ресурсы необходимо создать, а какие уже существуют. Resource Manager понимает разницу между этими запросами и не создает идентичные ресурсы или не удаляет существующие ресурсы, хотя существуют способы переопределения этого поведения.
Плоскость данных
При запуске операции плоскости данных запросы отправляются определенной конечной точке в вашей подписке Azure. Например, операция обнаружения языка в службах ИИ Azure — это операция плоскости данных, так как URL-адрес запроса:
POST https://eastus.api.cognitive.microsoft.com/text/analytics/v2.0/languages
Такие функции Resource Manager, как управление доступом и блокировки, не всегда применяются к операциям плоскости данных. Например, у пользователя могут отсутствовать разрешения на управление виртуальной машиной с помощью уровня управления, но он может входить в операционную систему.
Что такое шаблоны ARM?
Шаблоны Azure Resource Manager — это файлы, которые определяют инфраструктуру и конфигурацию для развертывания. При написании шаблона ARM вы используете декларативный подход для подготовки ресурсов. Эти шаблоны описывают каждый ресурс в развертывании, но не объясняют, как их развертывать. При отправке шаблона в Resource Manager для развертывания уровень управления может упорядоченно и согласованно развертывать определенные ресурсы. Из предыдущего урока вы узнали о различиях между императивным и декларативным кодом.
Зачем использовать шаблоны ARM?
Существует множество преимуществ использования шаблонов ARM ( JSON или Bicep) для подготовки ресурсов.
Повторяемые результаты. Шаблоны ARM являются идемпотентными. Это означает, что вы можете многократно развертывать один и тот же шаблон и получать тот же результат. Шаблон не дублирует ресурсы.
Оркестрация. При отправке шаблона развертывания в Resource Manager ресурсы в шаблоне развертываются параллельно. Этот процесс позволяет быстрее выполнять развертывания. Resource Manager организует эти развертывания в правильном порядке, если один ресурс зависит от другого.
Предварительная версия: средство what-if, доступное в Azure PowerShell и Azure CLI, позволяет предварительно просмотреть изменения среды перед развертыванием шаблона. Это средство содержит сведения о любых созданиях, изменениях и удалениях, сделанных шаблоном.
Тестирование и проверка. Вы можете использовать такие инструменты, как анализатор кода Bicep, для проверки качества шаблонов перед развертыванием. Шаблоны ARM, отправленные в Resource Manager, проверяются перед процессом развертывания. Эта проверка предупреждает вас об ошибках в шаблоне перед подготовкой ресурсов.
Модульность. Вы можете разбить свои шаблоны на более мелкие компоненты и связать их вместе при развертывании.
Интеграция CI/CD. Шаблоны ARM можно интегрировать в несколько средств CI/CD, таких как Azure DevOps и GitHub Actions. Эти средства можно использовать для создания версий шаблонов с помощью системы управления версиями и создания конвейеров выпуска.
Расширяемость. С помощью сценариев развертывания можно выполнять сценарии Bash или PowerShell в шаблонах ARM. Эти сценарии выполняют при развертывании такие задачи, как операции плоскости данных. Благодаря расширяемости можно развернуть полное решение, используя один шаблон ARM.
Шаблоны JSON и Bicep
Сейчас доступны два типа шаблонов ARM: шаблоны JSON и Bicep. Нотация объектов JavaScript (JSON) является форматом файла с открытым стандартом, который может использовать несколько языков. Bicep — это новый доменный язык, который был недавно создан для разработки шаблонов ARM и в котором используется более удобный синтаксис. Для шаблонов ARM и развертываний ресурсов можно использовать любой из этих форматов шаблона.