Что такое Azure Resource Manager и когда его следует использовать?

Зачем я это использовал?

Некоторое время назад мне нужно было изменить адаптацию нашего продукта к облаку AZURE. цель состояла в том, чтобы уменьшить количество разрешений ролей, предоставляемых нам клиентами в их учетных записях AZURE, и упростить процесс их подключения к нашему продукту. мы решили передать создание ресурсов AZURE (необходимых для нашего продукта) самому заказчику (чтобы уменьшить как можно больше разрешений). поэтому, когда клиент хочет подключиться, мы предоставляем ему файл, адаптированный к его выбору, который создаст все необходимое, чтобы наш продукт работал на него. Заказчик запустит этот файл в своем аккаунте и подключит свои ресурсы к нашему продукту.

для описанного процесса я использовал ARM — Azure Resource Manager.

Что такое ARM?

Как следует из названия — менеджер ресурсов. Это мощный инструмент, который позволяет нам создавать/обновлять/удалять ресурсы Azure с помощью файла (обычно одного — в зависимости от того, что вы хотите создать). Когда мы хотим создать ресурс Azure (либо с помощью шаблона, портала, консоли, SDK), создание в конечном итоге переводится на «язык» ARM.

Совет: для начала вы можете создать ресурс на портале, а затем взять его ARM-шаблон. Ниже я покажу, как для (почти) каждого ресурса в учетной записи Azure можно увидеть файл шаблона ARM, который его создал.

Так зачем его использовать? Почему бы не создать все через консоль и все?

Удобство, эффективность и экономия времени, динамичность и простота замены. создание большого количества ресурсов (ВМ, учетной записи хранения, Наблюдателя за сетями и т. д.) на портале Azure занимает много времени (много кликов, много страниц для перемещения, много вариантов).

вместо этого вы можете создать все централизованно, в одном файле, со всеми необходимыми настройками. Если вам нужно добавить еще один ресурс в коллекцию, вы можете легко добавить его в файл с минимальными изменениями кода. Если вам нужно создать большое количество одного и того же ресурса, вы можете указать это (в строке или двух) в одном файле шаблона. Это очень эффективный и полезный инструмент.

Теперь, когда вы понимаете, почему я использовал этот инструмент и почему он вообще хорош-

Как использовать шаблон руки?

Сам шаблон представляет собой файл JSON. Есть определенные поля, которые необходимо установить в этом файле для его запуска, некоторые из них не обязательны:

Что означает каждое поле?

схема — обязательное поле. расположение файла схемы JSON, который описывает версию языка шаблона. Номер версии (здесь 2019-04-01), которую вы используете, зависит от области развертывания и вашего редактора JSON. развертывание может быть на уровне ресурсов, на уровне подписки и т. д.

contentVersion — обязательное поле. Версия файла. мы можем дать все, что захотим в стиле 1.0.0.0. Он используется для документирования изменений, внесенных в файл.

apiProfile — необязательное поле. Версия API, которая служит набором версий API для типов ресурсов.

параметры — необязательное поле. здесь мы можем определить значения, которые постоянно меняются от прогона к прогону. Существуют различные типы параметров — строка, массив, числовое значение, логическое значение и т. д. Для каждого параметра можно указать значения по умолчанию.

переменные — необязательное поле. используется в файле для упрощения длинных выражений. скажем, у вас есть длинное имя, которое будет использоваться в нескольких ресурсах — вы можете использовать переменную, чтобы дать ему простое имя, которое будет использоваться в файле.

функции — необязательное поле. Здесь вы можете определить функции, которые можно использовать в самом файле. примечание: здесь есть функции, которые не относятся к этой части, и они встроены — и могут использоваться в любой области файла. Например, функция concat для соединения строк, функция length, возвращающая количество значений в массиве, и многое другое.

ресурсы — обязательное поле. основная часть файла шаблона. Здесь мы определяем, какие ресурсы мы хотим создать. Каждый ресурс имеет переменные, необходимые для запуска. Существуют фиксированные переменные, такие как имя ресурса, тип, к которому он принадлежит, где он будет создан, а также переменные, относящиеся только к нему.

выходные данные — необязательное поле. Если мы хотим получить в качестве вывода определенные переменные после запуска (например, определенные ключи или имена), вы можете установить это здесь.

Где запустить шаблон?

вы можете запустить из нескольких мест:

  • Отведенное место для запуска пользовательского шаблона:

  • Запуск шаблона в облачной оболочке Azure: Bash/PowerShell.
  • используйте файл JSON из сохраненного места (например, AWS S3) и используйте страницу с:

`https://portal.azure.com/#create/Microsoft.Template/uri/s3_url_location

Как я уже упоминал, в Azure независимо от того, как мы создаем ресурс — в конце концов, его команды транслируются в файл шаблона ARM. Вы можете увидеть, например, в хранилище аккаунта созданный файл (я создал его в консоли):

В заключение я объяснил, как и зачем использовать ARM. вы можете прочитать об этом больше в: