Автоматизация тестирования инфраструктуры AWS с помощью Terratest

Организации, принимающие Инфраструктуру как Код (IaC) на AWS, часто сталкиваются с проблемой обеспечения того, чтобы их инфраструктура не только была правильно предоставлена, но и функционировала так, как задумано, после развертывания. Даже незначительные ошибки конфигурации могут привести к дорогостоящему времени простоя, уязвимостям в безопасности или проблемам с производительностью.

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

Решение

Terratest предоставляет автоматизированную тестовую платформу, написанную на Go, специально предназначенную для тестирования кода инфраструктуры в реальных облачных средах, таких как AWS. Программно развертывая, проверяя и уничтожая ресурсы, Terratest заполняет пробел между написанием IaC (например, Terraform) и уверенной отправкой изменений. Вот как это работает:

Ниже представлен подробный гид о том, как достичь тестирования инфраструктуры AWS с использованием Terratest и Terraform, а также образцы кода на Go. Этот рабочий процесс поможет вам предоставить ресурсы AWS, провести тесты на их соответствие требованиям и затем автоматически удалить все.

Предварительные требования

Установите Terraform

Скачайте и установите Terraform с официального сайта.

Установите Go

Terratest написан на Go, поэтому вам нужно установить Go. Скачайте Go с официального сайта.

Настройте учетные данные AWS

Убедитесь, что ваши учетные данные AWS настроены (например, через ~/.aws/credentials или переменные окружения, такие как AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY).

Инициализируйте модуль Go

В каталоге вашего проекта выполните:

Shell

 

Добавьте Terratest в ваш go.mod

В каталоге вашего проекта/репозитория выполните:

Shell

 

Пример конфигурации Terraform

Создайте простую конфигурацию Terraform, которая запускает экземпляр AWS EC2. Положите следующие файлы в каталог с именем aws_ec2_example (или любое другое имя, которое вам нравится).

Сохраните его как main.tf для справки.

Shell

 

Далее, variables.tf:

Shell

 

Фрагмент кода Terratest

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

Shell

 

Что делает этот тест

  • Инициализирует и применяет конфигурацию Terraform в ../aws_ec2_example.
  • Разворачивает экземпляр EC2 с указанным AMI в us-east-1.
  • Получает вывод Terraform instance_id.
  • Проверяет, что идентификатор экземпляра не пустой, используя библиотеку утверждений Testify.
  • Уничтожает ресурсы в конце теста, чтобы избежать постоянных затрат.

Запуск тестов

  • Перейдите в каталог, содержащий ваш Go тестовый файл (например, каталог тестов).
  • Выполните следующую команду:
Shell

 

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

Заключение

Следуя этим шагам, вы можете интегрировать Terratest в ваш рабочий процесс IaC AWS, чтобы:

  • Предоставлять ресурсы AWS с помощью Terraform.
  • Тестировать их программно с помощью тестов на Go.
  • Подтверждать, что ваша инфраструктура правильно настроена и функционирует как ожидается.
  • Автоматически отключайте, чтобы не нести ненужные расходы на AWS и поддерживать чистую среду для повторных тестов.

Source:
https://dzone.com/articles/terratest-for-aws