Поделиться через


Тестирование кода Terraform

Terraform позволяет определять, просматривать и развертывать облачную инфраструктуру. Используя Terraform, вы создаёте файлы конфигурации, применяя синтаксис HCL. Синтаксис HCL позволяет указать поставщика облачных служб, таких как Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации вы создаете план выполнения, который позволяет предварительно просмотреть изменения в инфраструктуре до их внедрения. После того как вы проверите изменения, примените план выполнения для развертывания инфраструктуры.

Terraform — это инструмент "Инфраструктура как код" (IaC). Эта категория инструментов относится к тому факту, что вы обрабатываете файлы Terraform как исходный код проекта. Часть этого процесса включает управление версиями и управление исходным кодом. Кроме того, тестирование также должно быть частью процесса. В этой статье приводятся общие сведения о различных типах тестов, которые могут выполняться в проекте Terraform.

Реализация тестирования интеграции

Тесты интеграции проверяют, что новое изменение кода не нарушает существующий код. В DevOps непрерывная интеграция (CI) означает процесс, который создает всю систему каждый раз, когда изменяется кодовая база, например, когда кто-то хочет объединить PR в репозиторий Git. В следующем списке приведены распространенные примеры тестов интеграции:

  • Средства анализа статического кода, такие как lint и средства форматирования.
  • Запустите terraform validate, чтобы проверить синтаксис файла конфигурации.
  • Запустите terraform план , чтобы убедиться, что конфигурация будет работать должным образом.

Реализация модульного тестирования

Модульные тесты обеспечивают правильное поведение определенной части или функции программы. Модульные тесты написаны разработчиком функциональных возможностей. Иногда называется разработка на основе тестов или TDD, этот тип тестирования включает непрерывные короткие циклы разработки. В контексте проектов Terraform модульное тестирование может принимать форму использования terraform plan , чтобы гарантировать, что фактические значения, доступные в созданном плане, равны ожидаемым значениям.

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

  • Создание динамических блоков
  • Использование циклов
  • Вычисление локальных переменных

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

Реализация тестирования соответствия требованиям

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

Тестирование соответствия также обычно определяется как часть процесса непрерывной интеграции.

Осуществление сквозного тестирования (E2E)

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

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