Часто задаваемые вопросы о шаблонах ARM

В этой статье содержатся ответы на часто задаваемые вопросы о шаблонах Azure Resource Manager (шаблонах ARM).

Начало работы

Что такое шаблоны ARM и зачем их использовать?

Шаблоны ARM — это файлы JSON, в которых вы определяете, что нужно развернуть в Azure. Шаблоны помогают реализовать решение "инфраструктура как код" для Azure. Организация может многократно и надежно развертывать необходимую инфраструктуру в различных средах.

Дополнительные сведения о том, как шаблоны ARM помогают управлять инфраструктурой Azure, см. в статье Что такое шаблоны ARM?

Как начать работу с шаблонами?

Для упрощения создания шаблонов ARM необходимы подходящие инструменты. Рекомендуется установить Visual Studio Code и расширение средств Azure Resource Manager. Краткое описание этих средств см. в статье Краткое руководство. Создание шаблонов ARM с помощью Visual Studio Code.

Когда будете готовы ознакомиться с созданием шаблонов ARM, изучите серию учебных руководств для начинающих по шаблонам ARM. В этих руководствах пошагово описывается процесс создания шаблона ARM. Вы узнаете о различных разделах шаблона и о том, как они работают вместе. Это содержимое также доступно в виде модуля Microsoft Learn.

Что следует использовать для развертывания в Azure: шаблоны ARM или Terraform?

Используйте то, что вам больше нравится. Обе службы помогают автоматизировать развертывание в Azure.

Мы считаем, что при использовании шаблонов ARM существуют преимущества по сравнению с другими службами "инфраструктура как код". Дополнительные сведения об этих преимуществах см. в статье Почему следует выбирать шаблоны ARM?

Build 2020

Мне не удалось посмотреть презентацию на Microsoft Build 2020. Доступна ли она для просмотра?

Где можно получить дополнительные сведения о новых функциях, о которых вы объявили на Build?

Для получения общих сведений о функциях, над которыми мы работаем, присоединитесь к группе Yammer развертываний помощников по Azure.

Чтобы узнать о новом языке шаблона, зарегистрируйтесь для получения уведомлений.

Дополнительные сведения о спецификациях шаблонов см. в статье Спецификации шаблонов Azure Resource Manager.

Создание и тестирование шаблонов

Где можно узнать о лучших методиках использования шаблонов ARM?

Рекомендации по реализации шаблонов см. в статье Рекомендации по использованию шаблонов ARM. После создания шаблона запустите набор средств для тестирования ARM. Он проверяет, соответствует ли шаблон рекомендациям.

Моя среда настроена с помощью портала. Есть ли способ получить шаблон из существующей группы ресурсов?

Да, можно экспортировать шаблон из группы ресурсов. Экспортированный шаблон является хорошей отправной точкой для изучения шаблонов, но вы, вероятно, захотите изменить его, прежде чем использовать его в рабочей среде.

При экспорте шаблона можно выбрать ресурсы, которые необходимо включить в шаблон.

Можно ли создать в шаблоне ARM группу ресурсов и развернуть в ней ресурсы?

Да, можно создать группу ресурсов в шаблоне при развертывании шаблона на уровне подписки Azure. Пример создания группы ресурсов и развертывания ресурсов см. в разделе Группа ресурсов и ресурсы.

Можно ли создать подписку в шаблоне ARM?

Как можно протестировать шаблон перед его развертыванием?

Перед развертыванием шаблонов рекомендуется запустить для них набор средств для тестирования ARM и операцию "что если". Набор средств для тестирования проверяет, следует ли шаблон рекомендациям. Он выдает предупреждения при обнаружении изменений, которые могут улучшить процесс реализации шаблона.

Операция "что если" отображает изменения шаблона в вашей среде. Вы можете увидеть непредвиденные изменения еще до их развертывания. Функция "что если" также возвращает ошибки, которые она может обнаружить во время предварительной проверки. Например, если шаблон содержит синтаксическую ошибку, операция сообщит об этой ошибке. Она также возвращает все ошибки, которые можно определить, о последнем состоянии развернутых ресурсов. Например, если шаблон развертывает учетную запись хранения с именем, которое уже используется, то операция "что если" сообщит об этой ошибке.

Где можно найти сведения о свойствах, доступных для каждого типа ресурсов?

VS Code предоставляет службу IntelliSense для работы со свойствами ресурсов. Можно также просмотреть справочник по шаблонам для получения сведений о свойствах и описаний.

Мне нужно создать несколько экземпляров типа ресурса. Как создать итератор в шаблоне?

Используйте элемент "copy", чтобы указать более одного экземпляра. Элемент "copy" можно использовать для ресурсов, свойств, переменных и выходных данных.

Язык шаблонов

Если верить слухам, вы работаете над новым языком шаблона. Где можно найти больше информации об этом?

Дополнительные сведения о новом языке см. в статье Что такое Bicep (предварительная версия).

Есть ли планы по поддержке создания шаблонов в YAML?

В настоящее время нет планов по внедрению поддержки YAML. Мы считаем, что новый язык шаблона предлагает решение, которое проще использовать, чем YAML или JSON.

Можно ли будет по-прежнему писать шаблоны в JSON после выпуска нового языка шаблона?

Да, можно продолжать использовать шаблоны JSON.

Планируется ли предоставить средство для преобразования шаблонов JSON в новый язык шаблона?

Спецификации шаблонов

Как связаны спецификации шаблонов и Azure Blueprints?

Azure Blueprints будет использовать спецификации шаблонов в своей реализации, заменив ресурс blueprint definition ресурсом template spec. Мы предоставляем путь миграции для преобразования определения схемы в спецификацию шаблона, но API определения схемы по-прежнему будут поддерживаться. Изменения в ресурс blueprint assignment вноситься не будут. Схемы остаются пользовательским интерфейсом для создания управляемой среды в Azure.

Заменяют ли спецификации шаблонов связанные шаблоны?

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

Можно ли совместно использовать спецификации шаблонов в различных подписках?

Да, их можно использовать в различных подписках при условии, что пользователь имеет доступ на чтение к спецификации шаблона. Спецификации шаблонов нельзя использовать в различных клиентах.

Сценарии в шаблонах

Можно ли включить в шаблон сценарий для выполнения задач, которые нельзя выполнить в шаблоне?

Да, используйте сценарии развертывания. В шаблоны можно включить сценарии Azure PowerShell или Azure CLI.

Можно ли по-прежнему использовать расширения пользовательских скриптов и настройку требуемого состояния (DSC)?

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

Поддерживаются ли сценарии развертывания в Azure для государственных организаций?

Да, сценарии развертывания можно использовать в регионах US Gov (Аризона) и US Gov (Вирджиния).

Предварительный просмотр изменений перед развертыванием

Можно ли просмотреть изменения, которые происходят перед развертыванием шаблона?

Да, используйте функцию "что если". Она оценивает текущее состояние среды и сравнивает его с состоянием, которое будет существовать после развертывания. Вы можете проверить обобщенные изменения, чтобы убедиться, что шаблон не приводит к непредвиденным результатам.

Можно ли использовать функцию "что если" как для инкрементного, так и для полного режимов?

Да, поддерживаются оба режима развертывания. Пример использования инкрементного режима см. в разделе Запуск операции "что если". Пример использования полного режима см. в разделе Подтверждение удаления.

Работает ли функция "что если" со связанными шаблонами?

Да, "что если" оценивает состояние родительского шаблона и связанных с ним шаблонов.

Можно ли использовать функцию "что если" в конвейере Azure?

Да, можно использовать "что если" для проверки того, что конвейер продолжит работу.

При использовании функции "что если" я вижу изменения в свойствах, которых нет в моем шаблоне. Является ли этот "шум" ожидаемым?

Мы работаем над уменьшением этого шума. Вы можете помочь нам, сообщив о проблемах в наш репозиторий GitHub: https://aka.ms/WhatIfIssues

Визуализатор шаблонов

Есть ли способ визуализировать шаблон ARM и его ресурсы?

У нас есть расширение VS Code, созданное сообществом, которое отлично подходит для визуализации шаблонов ARM. В нем отображаются развертываемые ресурсы и связи между ними.

Можно ли использовать визуализатор шаблонов вне VS Code?

На портале выполняется предварительный просмотр визуализатора шаблонов. Дополнительные сведения см. в этой короткой сессии с Build.

Ограничения развертываний

Сколько групп ресурсов можно развернуть в одной операции развертывания?

В прошлом ограничение составляло пять групп ресурсов. Недавно оно было увеличено до 800 групп ресурсов. Дополнительные сведения см. в статье Создание групп ресурсов и ресурсов на уровне подписки.

В журнале развертывания возникла ошибка об ограничении в 800 развертываний. Что делать?

Мы меняем способ ведения журнала развертывания для группы ресурсов. В прошлом, чтобы избежать этой ошибки, приходилось вручную удалять развертывания из этого журнала. Начиная с июня 2020 года развертывания будут автоматически удаляться из журнала по мере приближения к предельному значению. См. статью Автоматическое удаление из журнала развертывания.

Удаление развертывания из журнала не влияет на развернутые ресурсы.

Шаблоны и инструменты DevOps

Можно ли интегрировать шаблоны ARM в Azure Pipelines?

Да. Описание использования шаблонов и конвейеров см. в разделах Учебник. Непрерывная интеграция шаблонов ARM с Azure Pipelines и Интеграция шаблонов ARM с Azure Pipelines.

Можно ли использовать GitHub Actions для развертывания шаблона?

Следующие шаги

Общие сведения о шаблонах ARM см. в статье Что такое шаблоны ARM?.