Stosowanie zautomatyzowanego przepływu pracy
W tej lekcji dowiesz się więcej o zautomatyzowanych narzędziach przepływu pracy i sposobie ich integracji z programem Terraform i platformą Azure.
Informacje o GitHub Actions
Jako menedżer infrastruktury potrzebujesz przepływów pracy kompilacji i wdrażania, aby używać tej samej kontroli wersji co projekt.
Za pomocą funkcji GitHub Actions można uruchomić proces ciągłej integracji i ciągłego dostarczania (CI/CD), który jest połączony z repozytoriami Usługi GitHub.
Za pomocą funkcji GitHub Actions można kompilować, testować i wdrażać kod bezpośrednio z usługi GitHub. Możesz również przypisywać przeglądy kodu, zarządzać gałęziami i klasyfikacją problemów.
Składniki funkcji GitHub Actions
Opiszmy różne składniki funkcji GitHub Actions, jak pokazano na poniższym diagramie:
- Przepływ pracy: wyzwalany przez określone zdarzenia lub działania przepływ pracy to zbiór zadań i kroków automatyzujących zadania cyklu życia tworzenia oprogramowania.
- Zadanie: zestaw kroków wykonywanych w module uruchamiającym.
- Krok: zadanie, które może uruchamiać co najmniej jedno polecenie lub akcje. Każdy krok składa się z poszczególnych akcji uruchamianych po wystąpieniu określonego zdarzenia, takiego jak żądanie ściągnięcia.
- Akcja: autonomiczne polecenia, które można połączyć w kroki. Można połączyć wiele kroków, aby utworzyć zadanie. Poszczególne akcje to spakowane skrypty, które automatyzują zadania programistyczne. Aby utworzyć przepływ pracy, należy dodać akcje do pliku YAML w katalogu .github/workflows w repozytorium GitHub.
Akcja narzędzia Terraform w usłudze GitHub
Akcja hashicorp/setup-terraform
konfiguruje interfejs wiersza polecenia narzędzia Terraform w przepływie pracy funkcji GitHub Actions przez:
- Pobranie określonej wersji interfejsu wiersza polecenia programu Terraform i dodanie jej do programu
PATH
. - Konfigurowanie pliku konfiguracji interfejsu wiersza polecenia programu Terraform przy użyciu nazwy hosta terraform lub przedsiębiorstwa i tokenu interfejsu API.
- Zainstalowanie skryptu otoki w celu opakowania później wywołań
terraform
pliku binarnego i uwidocznienie jego stDOUT, STDERR i kodu zakończenia jako danych wyjściowych o nazwachstdout
,stderr
iexitcode
, odpowiednio.
Uwierzytelnianie funkcji GitHub Actions za pomocą platformy Azure
Narzędzie Terraform obsługuje kilka opcji uwierzytelniania za pomocą platformy Azure:
- Jeśli używasz programu Terraform interaktywnie, zalecamy uwierzytelnianie za pośrednictwem konta Microsoft.
- W przypadku używania narzędzia Terraform z poziomu kodu lub automatyzacji zalecamy uwierzytelnianie za pośrednictwem jednostki usługi platformy Azure.
Jednostka usługi to tożsamość do użycia z aplikacjami, hostowanymi usługami i zautomatyzowanymi narzędziami w celu uzyskania dostępu do zasobów platformy Azure.
Następne kroki
W następnej lekcji skonfigurujemy przykładowy projekt i użyjemy funkcji GitHub Actions z programem Terraform, aby wdrożyć go na platformie Azure.
Kluczowe pojęcia dotyczące nowych usług Azure Pipelines
Dowiedzmy się więcej o składnikach tworzących usługę Azure Pipeline.
- Wyzwalacz nakazuje uruchomienie potoku.
- Potok składa się z co najmniej jednego etapu. Potok może zostać wdrożony w co najmniej jednym środowisku.
- Etap to sposób organizowania zadania w potoku, a każdy etap może mieć co najmniej jedno zadanie.
- Każde zadanie jest uruchamiane na jednym agencie. Zadanie może być również bez agenta.
- Każdy agent uruchamia zadanie, które zawiera co najmniej jeden krok.
- Krok może być zadaniem lub skryptem i jest najmniejszym blokiem konstrukcyjnym potoku.
- Zadanie to wstępnie spakowany skrypt, który wykonuje akcję, taką jak wywoływanie interfejsu API REST lub publikowanie artefaktu kompilacji.
- Artefakt to kolekcja plików lub pakietów publikowanych przez przebieg.
Napiwek
Aby uzyskać bardziej szczegółowe informacje na temat różnych składników potoku i sposobu ich używania, zobacz Linki podane w sekcji Podsumowanie .
Zadania programu Terraform dla usługi Azure Pipelines
Podczas wykonywania poleceń, które wchodzą w interakcję z platformą Azure, taką jak plan
, apply
i destroy
, zadanie użyje połączenia usługi platformy Azure do autoryzowania operacji względem subskrypcji docelowej.
Zalecanym sposobem nawiązywania połączenia z platformą Azure jest powiązanie połączenia usługi z jednostką usługi platformy Azure. Jednostka usługi platformy Azure to tożsamość, która jest tworzona w celu uzyskiwania dostępu do zasobów platformy Azure przy użyciu zautomatyzowanych narzędzi.
Poniższy fragment kodu YAML używa dostawcy azurerm
narzędzia Terraform usługi Azure Pipeline. Połączenie z usługą jest określane za pośrednictwem danych wejściowych environmentServiceNameAzureRM
:
- task: TerraformTaskV1@0
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: $(Build.Repository.LocalPath)/terraform
backendAzureRmContainerName: 'tfstate'
backendAzureRmKey: 'tf/terraform.tfstate'
environmentServiceNameAzureRM: $(serviceConnection)
Napiwek
Jeśli używasz azurerm
jako dostawcy narzędzia Terraform usługi Azure Pipeline, musisz również podać połączenie z usługą i kontenerem magazynu do użycia ze stanem zaplecza programu Terraform.
Przekazywanie parametrów
Istnieje wiele metod przekazywania parametrów do poleceń terraform. Zmienne umożliwiają wygodne uzyskiwanie kluczowych danych w różnych częściach potoku.
Zmienną dla potoku kompilacji można ustawić, wykonując następujące kroki:
- Przejdź do strony Potoki , wybierz odpowiedni potok, a następnie wybierz pozycję Edytuj.
- Znajdź zmienne dla tego potoku.
- Dodaj lub zaktualizuj zmienną.
- Aby oznaczyć zmienną jako wpis tajny, wybierz pozycję Zachowaj ten wpis tajny wartości.
- Zapisz potok.
Dane wyjściowe narzędzia Terraform do zmiennych potoku
Zadanie TerraformCLI obsługuje uruchamianie polecenia narzędzia Terraform output
. Po uruchomieniu interfejsu wiersza polecenia zmienne potoku zostaną utworzone na podstawie każdej zmiennej wyjściowej emitowane z terraform output
polecenia .
Następne kroki
W następnej lekcji skonfigurujemy przykładowy projekt i użyjemy usługi Azure Pipelines z programem Terraform, aby wdrożyć go na platformie Azure.