Применение рекомендаций с помощью модуля по набору средств для тестирования

Завершено

При разработке шаблонов Azure Resource Manager (шаблонов ARM) можно упростить создание допустимых шаблонов и предоставить рекомендации для улучшения их качества. Итак, каковы эти рекомендации и почему желательно, чтобы шаблоны соответствовали им?

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

  • Удобство обслуживания. В процессе разработки и редактирования шаблона со временем становится все труднее поддерживать его в ясной и упорядоченной форме. По мере развития шаблонов будет увеличиваться количество параметров и переменных. Чтобы правильно использовать их, важно понимать их назначение.

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

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

  • Гибкость. Шаблоны должны быть достаточно гибкими для использования в любой среде. Неправильная параметризация шаблонов может привести к невозможности их повторного использования.

  • Расширяемость — иногда нужно добавить собственные рекомендации. Ваша компания или команда может применять собственные правила.

Примечание.

Проверка кода на соответствие рекомендациям такого рода иногда называется анализом кода.

Набор средств для тестирования шаблонов ARM

Желательно использовать какое-либо средство тестирования, чтобы вы могли сосредоточиться на разработке, пока оно будет искать проблемы и повышать качество шаблонов. Существует такой инструмент, как набор средств для тестирования шаблонов ARM, который иногда называют ARM-ТТК. Он устраняет упомянутые выше проблемы, выполняя ряд тестов. Тесты можно разделить на следующие категории:

  • Проверка намерения пользователя. Эти тесты проверяют, используются ли все объявленные переменные и параметры, и выдают предупреждение, если это не так.
  • Выполнение рекомендаций по безопасности. Еще один важный аспект заключается в том, что шаблон не должен возвращать конфиденциальных данных, например секретов API.
  • Использование надлежащих языковых конструкций. Существуют языковые конструкции или вспомогательные функции, которые следует использовать вместо жестко заданных значений.

Примечание.

Это всего лишь рекомендации, а не требования. Но мы настаиваем, чтобы вы следовали этим рекомендациям.

Установка средства

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

  1. Установите PowerShell. Эта задача выполняется по-разному в зависимости от того, используете вы Linux, Mac или Windows.
  2. Скачивание модуля. Модуль находится в репозитории GitHub. Его можно скачать из репозитория или получить с помощью команды git clone.
  3. Импорт модуля. Это действие представляет собой однострочную инструкцию, которая вводится в сеанс PowerShell, после чего становятся доступными команды ARM-TTK.

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

Выполнение тестов

Выполнение тестов предусматривает вызов модуля с соответствующими параметрами. -TemplatePath — это обязательный параметр, который принимает строку, указывающую на расположение файла шаблона развертывания. Файлу шаблона должно быть задано имя azuredeploy.json или maintemplate.json. Поэтому типичный тестовый запуск может выглядеть так:

Test-AzTemplate -TemplatePath path/to/template

Средство проверяет файл шаблона, а также тестирует все файлы шаблонов в одном каталоге и его вложенных папках.

Обычно результат тестового запуска выглядит следующим образом:

[+] adminUsername Should Not Be A Literal (24 ms)
[+] apiVersions Should Be Recent (18 ms)
[+] artifacts parameter (16 ms)
[+] DeploymentTemplate Schema Is Correct (17 ms)
[+] IDs Should Be Derived From ResourceIDs (15 ms)
[-] Location Should Not Be Hardcoded (41 ms)
     azuredeploy.json must use the location parameter, not resourceGroup().location (except when used as a default value in the main template)

Успешные тесты кодируются зеленым цветом и префиксируются с помощью [+]префикса. Неудачные тесты кодируются красным цветом с префиксом [-].

Настройка параметров для тестового запуска

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

Параметр -File используется для запуска определенного файла. Параметр -Test позволяет указать тестовый сценарий для выполнения.

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

  • Выполнение тестов для одного файла. Если потребуется выполнить тесты только для одного файла, над которым вы работаете в данный момент. Причина в том, что так проще сосредоточиться на разработке этого конкретного файла шаблона. Дополнительное преимущество также в том, что выходные данные будут содержать только то, что вас интересует, и ничего лишнего. Используя параметр -File с путем к файлу (включая имя файла), можно выполнять тесты только для данного файла.

    Важно!

    Однако по-прежнему требуется, чтобы в указанном расположении существовал файл azuredeploy.json или maintemplate.json.

  • Выполнение теста одного типа для всех файлов. Иногда может потребоваться выполнить тест только одного типа, чтобы гарантировать выполнение условий только для данного сценария. Этого можно добиться с помощью параметра -Test. Он принимает полное имя теста, заключенное в кавычки, например Ресурсы должны иметь расположение.