Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Testy integracji sprawdzają, czy nowo wprowadzona zmiana kodu nie przerywa istniejącego kodu. W 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, 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 będzie działać zgodnie z oczekiwaniami.
Z tego artykułu dowiesz się, jak wykonywać następujące działania:
- Poznaj podstawy testowania integracji dla projektów programu Terraform.
- Użyj usługi Azure DevOps do skonfigurowania potoku ciągłej integracji.
- Uruchom analizę kodu statycznego w kodzie programu Terraform.
- Uruchom
terraform validate, aby zweryfikować pliki konfiguracji programu Terraform na komputerze lokalnym. - Uruchom
terraform plan, aby zweryfikować pliki konfiguracji programu Terraform pod kątem usług zdalnych. - Użyj usługi Azure Pipeline, aby zautomatyzować ciągłą integrację.
1. Konfigurowanie środowiska
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto .
Skonfiguruj narzędzie Terraform: jeśli jeszcze tego nie zrobiono, skonfiguruj program Terraform przy użyciu jednej z następujących opcji:
Organizacja i projekt usługi Azure DevOps: jeśli jej nie masz, utwórz organizację usługi Azure DevOps.
Rozszerzenie Terraform Build & Release Tasks :Zainstaluj rozszerzenie Terraform Build & Release Tasks do zadań kompilacji i wydania w swojej organizacji Azure DevOps.Udzielanie usłudze Azure DevOps dostępu do subskrypcji platformy Azure: utwórz połączenie usługi platformy Azure o nazwie
terraform-basic-testing-azure-connection, aby umożliwić usłudze Azure Pipelines łączenie się z subskrypcjami platformy AzurePrzykładowy kod i zasoby: Pobierz z usługi GitHub projekt testowania integracji. Katalog, w którym pobierasz przykład, jest określany jako przykładowy katalog .
2. Zweryfikuj lokalną konfigurację programu Terraform
Polecenie terraform validate jest uruchamiane z wiersza polecenia w katalogu zawierającym pliki terraform. To polecenie służy do sprawdzania poprawności składni.
W przykładowym katalogu przejdź do katalogu
src.Uruchom terraform init, aby zainicjować katalog roboczy.
terraform initUruchom narzędzie terraform validate , aby zweryfikować składnię plików konfiguracji.
terraform validateKluczowe punkty:
- Zostanie wyświetlony komunikat wskazujący, że konfiguracja narzędzia Terraform jest prawidłowa.
Edytuj plik
main.tf.W wierszu 5 wstaw literówkę, która unieważnia składnię. Na przykład zastąp
var.locationvar.loactionZapisz plik.
Uruchom walidację ponownie.
terraform validateKluczowe punkty:
- Zostanie wyświetlony komunikat o błędzie wskazujący wiersz kodu w błędzie i opis błędu.
Jak widać, narzędzie Terraform wykryło problem ze składnią kodu konfiguracji. Ten problem uniemożliwia wdrożenie konfiguracji.
Dobą praktyką jest zawsze uruchamianie terraform validate dla plików Terraform przed wypchnięciem ich do systemu kontroli wersji. Ponadto ten poziom weryfikacji powinien być częścią potoku ciągłej integracji oprogramowania. W dalszej części artykułu omówimy, jak skonfigurować potok platformy Azure w celu automatycznej walidacji.
3. Weryfikowanie konfiguracji narzędzia Terraform
W poprzedniej sekcji pokazano, jak zweryfikować konfigurację programu Terraform. Ten poziom testowania był specyficzny dla składni. Ten test nie uwzględniał tego, co można już wdrożyć na platformie Azure.
Terraform to język deklaratywny oznaczający, że deklarujesz, co chcesz uzyskać jako wynik końcowy. Załóżmy na przykład, że masz 10 maszyn wirtualnych w grupie zasobów. Następnie utworzysz plik Terraform definiujący trzy maszyny wirtualne. Zastosowanie tego planu nie zwiększa całkowitej liczby do 13. Zamiast tego narzędzie Terraform usuwa siedem z maszyn wirtualnych, tak aby pozostały trzy. Uruchomienie terraform plan pozwala potwierdzić potencjalne wyniki zastosowania planu wykonania, aby uniknąć niespodzianek.
Aby wygenerować plan wykonywania programu Terraform, uruchom plan terraform. To polecenie łączy się z docelową subskrypcją platformy Azure, aby sprawdzić, która część konfiguracji została już wdrożona. Narzędzie Terraform określa następnie niezbędne zmiany, aby spełnić wymagania określone w pliku Terraform. Na tym etapie Terraform nie wdraża niczego. Mówi ci, co się stanie, jeśli zastosujesz plan.
Jeśli korzystasz z artykułu i wykonano kroki opisane w poprzedniej sekcji, uruchom polecenie terraform plan:
terraform plan
Po uruchomieniu terraform planprogram Terraform wyświetla potencjalny wynik zastosowania planu wykonania. Dane wyjściowe wskazują zasoby platformy Azure, które zostaną dodane, zmienione i zniszczone.
Domyślnie program Terraform przechowuje stan w tym samym katalogu lokalnym co plik Terraform. Ten wzorzec działa dobrze w scenariuszach pojedynczego użytkownika. Jeśli jednak wiele osób pracuje nad tymi samymi zasobami platformy Azure, lokalne pliki stanu mogą wyjść z synchronizacji. Aby rozwiązać ten problem, program Terraform obsługuje zapisywanie plików stanu w zdalnym magazynie danych (takim jak usługa Azure Storage). W tym scenariuszu może być problematyczne uruchomienie terraform plan na komputerze lokalnym i użycie go do obsługi maszyny zdalnej. W związku z tym warto zautomatyzować ten krok weryfikacji w ramach potoku ciągłej integracji.
4. Uruchamianie statycznej analizy kodu
Analizę kodu statycznego można wykonać bezpośrednio w kodzie konfiguracji programu Terraform bez jego wykonywania. Ta analiza może być przydatna do wykrywania problemów, takich jak problemy z zabezpieczeniami i niespójność zgodności.
Następujące narzędzia zapewniają analizę statyczną plików programu Terraform:
Analiza statyczna jest często wykonywana w ramach ciągłego procesu integracji. Te testy nie wymagają utworzenia planu wykonania ani wdrożenia. W rezultacie działają one szybciej niż inne testy i są zazwyczaj uruchamiane jako pierwsze w procesie ciągłej integracji.
5. Automatyzowanie testów integracji przy użyciu usługi Azure Pipeline
Ciągła integracja obejmuje testowanie całego systemu po wprowadzeniu zmiany. W tej sekcji zostanie wyświetlona konfiguracja usługi Azure Pipeline używana do implementowania ciągłej integracji.
Korzystając z wybranego edytora, przejdź do lokalnego klonu przykładowego projektu Terraform w witrynie GitHub.
Otwórz plik
samples/integration-testing/src/azure-pipeline.yaml.Przewiń w dół do sekcji kroków , gdzie zobaczysz standardowy zestaw kroków używanych do uruchamiania różnych procedur instalacji i walidacji.
Przejrzyj wiersz, który brzmi, Krok 1: uruchom analizę statycznego kodu Checkov. W tym kroku projekt
Checkov, o którym wspomniano wcześniej, uruchamia statyczną analizę kodu w przykładowej konfiguracji narzędzia Terraform.- bash: $(terraformWorkingDirectory)/checkov.sh $(terraformWorkingDirectory) displayName: Checkov Static Code AnalysisKluczowe punkty:
- Ten skrypt jest odpowiedzialny za uruchomienie narzędzia Checkov w obszarze roboczym narzędzia Terraform zainstalowanym w kontenerze platformy Docker. Agenci zarządzani przez Microsoft obsługują Docker. Uruchamianie narzędzi wewnątrz kontenera platformy Docker jest łatwiejsze i eliminuje konieczność zainstalowania narzędzia Checkov na agencie usługi Azure Pipeline.
- Zmienna
$(terraformWorkingDirectory)jest definiowana w plikuazure-pipeline.yaml.
Zapoznaj się z wierszem, który brzmi : Krok 2: instalowanie programu Terraform w agencie usługi Azure Pipelines. Zainstalowane wcześniej rozszerzenie Terraform Build & Release Task zawiera polecenie do zainstalowania narzędzia Terraform na agencie, który uruchamia potok Azure. To zadanie jest wykonywane w tym kroku.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-installer.TerraformInstaller@0 displayName: 'Install Terraform' inputs: terraformVersion: $(terraformVersion)Kluczowe punkty:
- Wersja programu Terraform do zainstalowania jest określana za pośrednictwem zmiennej usługi Azure Pipeline o nazwie
terraformVersioni zdefiniowanej w plikuazure-pipeline.yaml.
- Wersja programu Terraform do zainstalowania jest określana za pośrednictwem zmiennej usługi Azure Pipeline o nazwie
Przejrzyj wiersz, który brzmi, Krok 3: Uruchom narzędzie Terraform init, aby zainicjować obszar roboczy. Teraz, gdy program Terraform jest zainstalowany na agencie, można zainicjować katalog programu Terraform.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform init' inputs: command: init workingDirectory: $(terraformWorkingDirectory)Kluczowe punkty:
- Dane wejściowe
commandokreślają, które polecenie narzędzia Terraform ma zostać uruchomione. - Dane wejściowe
workingDirectorywskazują ścieżkę katalogu programu Terraform. - Zmienna
$(terraformWorkingDirectory)jest definiowana w plikuazure-pipeline.yaml.
- Dane wejściowe
Przejrzyj wiersz, który czyta, Krok 4: uruchom Terraform validate, aby zweryfikować składnię HCL. Po zainicjowaniu katalogu projektu zostanie uruchomiony
terraform validatew celu zweryfikowania konfiguracji na serwerze.- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform validate' inputs: command: validate workingDirectory: $(terraformWorkingDirectory)Przejrzyj wiersz, który brzmi, Krok 5: uruchom plan Terraform, aby zweryfikować składnię HCL. Jak wyjaśniono wcześniej, generowanie planu wykonania jest wykonywane w celu sprawdzenia, czy konfiguracja programu Terraform jest prawidłowa przed wdrożeniem.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform plan' inputs: command: plan workingDirectory: $(terraformWorkingDirectory) environmentServiceName: $(serviceConnection) commandOptions: -var location=$(azureLocation)Kluczowe punkty:
- Dane
environmentServiceNamewejściowe odnoszą się do nazwy połączenia usługi platformy Azure utworzonego w temacie Konfigurowanie środowiska. Połączenie umożliwia programowi Terraform dostęp do subskrypcji platformy Azure. - Wejście
commandOptionsjest używane do przekazywania argumentów do polecenia Terraform. W tym przypadku jest określana lokalizacja. Zmienna$(azureLocation)jest zdefiniowana wcześniej w pliku YAML.
- Dane
Importowanie pipeline do usługi Azure DevOps
Otwórz projekt usługi Azure DevOps i przejdź do sekcji Azure Pipelines.
Wybierz przycisk Utwórz potok .
W polu Gdzie znajduje się twój kod? wybierz pozycję GitHub (YAML).
W tym momencie może być konieczne autoryzowanie usługi Azure DevOps w celu uzyskania dostępu do organizacji. Aby uzyskać więcej informacji na temat tego tematu, zobacz artykuł Tworzenie repozytoriów GitHub.
Na liście repozytoriów wybierz fork repozytorium utworzonego w organizacji GitHub.
W kroku Konfigurowanie potoku wybierz opcję rozpoczęcia od istniejącego potoku YAML.
Po wyświetleniu strony Wybierz istniejący potok YAML określ gałąź
masteri wprowadź ścieżkę do potoku YAML:samples/integration-testing/src/azure-pipeline.yaml.
Wybierz Kontynuuj, aby załadować potok YAML Azure z usługi GitHub.
Gdy zostanie wyświetlona strona Przegląd potoku YAML, wybierz pozycję Uruchom, aby utworzyć i ręcznie uruchomić potok po raz pierwszy.
Weryfikowanie wyników
Możesz uruchomić potok danych ręcznie z poziomu interfejsu użytkownika usługi Azure DevOps. Jednak punktem artykułu jest pokazanie automatycznej ciągłej integracji. Przetestuj proces, wprowadzając zmianę w folderze samples/integration-testing/src rozgałęzionego repozytorium. Zmiana automatycznie uruchomi nowy potok w gałęzi, na którą wypychasz kod.
Po wykonaniu tego kroku uzyskaj dostęp do szczegółów w usłudze Azure DevOps, aby upewnić się, że wszystko działa prawidłowo.
Rozwiązywanie problemów z programem Terraform na platformie Azure
Rozwiązywanie typowych problemów podczas korzystania z narzędzia Terraform na platformie Azure