Azure Resource Manager

Завершено

Вы провели некоторое время со своей командой, изучая преимущества подхода "Инфраструктура как код" и различных доступных подходов. Ваша компания стремительно растет, и ваша команда понимает, что в Azure будет развернуто значительное количество ресурсов. Как участник команды вы решили, что декларативный подход "Инфраструктура как код" является правильным подходом к подготовке ресурсов. Команда не хочет поддерживать сценарии, в которых перечисляется каждый шаг развертывания. Прежде чем начать процесс создания первого шаблона, необходимо понять, как работает Azure Resource Manager. Изучение типов шаблонов, доступных для использования с Azure, поможет вам определить следующие шаги в стратегии инфраструктуры как кода.

В этом уроке вы узнаете о Resource Manager и двух типах шаблонов ARM.

Основные понятия 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, Resource Manager получает, авторизует запрос, а также выполняет проверку его подлинности. Затем Resource Manager отправляет запрос поставщику ресурсов Azure, который принимает запрошенное действие. Так как все запросы обрабатываются через один API, результаты и возможности будут согласованы в различных средствах, доступных в Azure.

На следующем рисунке показана роль, которую Resource Manager играет в обработке запросов Azure:

Diagram that shows how Azure Resource Manager accepts requests from all Azure clients and libraries.

Все запросы операции уровня управления отправляются на 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 и развертываний ресурсов можно использовать любой из этих форматов шаблона.