Testowanie kodu narzędzia Terraform

Narzędzie Terraform umożliwia definiowanie, wyświetlanie wersji zapoznawczej i wdrażanie infrastruktury chmury. Za pomocą narzędzia Terraform tworzysz pliki konfiguracji przy użyciu składni HCL. Składnia listy HCL umożliwia określenie dostawcy chmury — takiego jak platforma Azure — oraz elementów tworzących infrastrukturę chmury. Po utworzeniu plików konfiguracji utworzysz plan wykonywania , który umożliwia wyświetlenie podglądu zmian infrastruktury przed ich wdrożeniem. Po zweryfikowaniu zmian należy zastosować plan wykonywania w celu wdrożenia infrastruktury.

Terraform to narzędzie Infrastruktura jako kod (IaC). Ta kategoria narzędzia odnosi się do faktu, że traktujesz pliki terraform tak, jak kod źródłowy projektu. Część tego procesu obejmuje przechowywanie wersji i kontrolę kodu źródłowego. Ponadto testowanie powinno być częścią procesu. Ten artykuł zawiera omówienie różnych typów testów, które można uruchamiać w projekcie programu Terraform.

Implementowanie testowania integracji

Testy integracji sprawdzają, czy nowo wprowadzona zmiana kodu nie przerywa istniejącego kodu. W DevOps ciągła integracja (CI) oznacza proces, który buduje cały system za każdym razem, gdy baza kodu się zmienia — na przykład gdy ktoś chce scalić pull request do repozytorium Git. Poniższa lista zawiera typowe przykłady testów integracji:

  • Narzędzia do analizy kodu statycznego, takie jak lint i format.
  • Uruchom narzędzie terraform validate , aby zweryfikować składnię pliku konfiguracji.
  • Uruchom plan terraform , aby upewnić się, że konfiguracja działa zgodnie z oczekiwaniami.

Implementowanie testów jednostkowych

Testy jednostkowe zapewniają, że określona część lub funkcja programu działa prawidłowo. Deweloper funkcji pisze testy jednostkowe. Czasami nazywane programowaniem opartym na testach lub TDD, ten typ testowania obejmuje ciągłe krótkie cykle programowania. W kontekście projektów programu Terraform testowanie jednostkowe może mieć formę użycia terraform plan , aby upewnić się, że rzeczywiste wartości dostępne w wygenerowanym planie są równe oczekiwanym wartościom.

Testowanie jednostkowe może być szczególnie korzystne, gdy moduły Terraform stają się bardziej złożone.

  • Generowanie bloków dynamicznych
  • Używanie pętli
  • Obliczanie zmiennych lokalnych

Podobnie jak w przypadku testów integracji, wiele razy testy jednostkowe są uwzględniane w procesie ciągłej integracji.

Implementowanie testowania zgodności

Użyj testowania zgodności, aby upewnić się, że konfiguracja jest zgodna z zasadami zdefiniowanymi dla projektu. Można na przykład zdefiniować konwencje nazewnictwa geopolitycznego dla zasobów platformy Azure. Możesz też chcieć utworzyć maszyny wirtualne na podstawie zdefiniowanego podzestawu obrazów. Użyj testowania zgodności, aby wymusić te reguły.

Zazwyczaj zdefiniuj testowanie zgodności w ramach procesu ciągłej integracji.

Implementacja całościowego testowania E2E

Testy E2E weryfikują działanie programu przed wdrożeniem w środowisku produkcyjnym. Przykładowy scenariusz może być modułem Terraform wdrażającym dwie maszyny wirtualne w sieci wirtualnej. Możesz uniemożliwić tym dwóm maszynom pingowanie się nawzajem. W tym przykładzie można zdefiniować test w celu zweryfikowania zamierzonego wyniku przed wdrożeniem.

Testowanie E2E jest zwykle procesem trzyetapowym. Najpierw zastosuj konfigurację do środowiska testowego. Następnie uruchom kod, aby zweryfikować wyniki. Na koniec ponownie zainicjalizuj lub wyłącz środowisko testowe (na przykład cofając przydział maszyny wirtualnej).