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ć również 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 metodyce DevOps ciągła integracja (CI) odnosi się do procesu, który kompiluje cały system za każdym razem, gdy baza kodu zostanie zmieniona — na przykład osoba, która chce scalić żądanie ściągnięcia z 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 będzie działać zgodnie z oczekiwaniami.
Implementowanie testów jednostkowych
Testy jednostkowe zapewniają prawidłową zachowanie określonej części lub funkcji programu. Testy jednostkowe są pisane przez dewelopera funkcji. 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 zaczynają stać 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
Testowanie zgodności służy do zapewnienia, ż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. Testy zgodności będą używane do wymuszania tych reguł.
Testowanie zgodności jest również zwykle definiowane jako część procesu ciągłej integracji.
Implementowanie kompleksowego 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 wykonanie polecenia ping nawzajem. W tym przykładzie można zdefiniować test w celu zweryfikowania zamierzonego wyniku przed wdrożeniem.
Testowanie E2E jest zwykle procesem trzyetapowym. Najpierw konfiguracja jest stosowana do środowiska testowego. Następnie zostanie uruchomiony kod w celu zweryfikowania wyników. Na koniec środowisko testowe zostanie ponownie zainicjowane lub zdjęte (na przykład cofnięcie przydziału maszyny wirtualnej).