Tillämpa ett automatiserat arbetsflöde
I den här lektionen får du lära dig mer om automatiserade arbetsflödesverktyg och hur de integreras med Terraform och Azure.
Om GitHub-åtgärder
Som infrastrukturhanterare behöver du dina bygg- och distributionsarbetsflöden för att använda samma versionskontroll som projektet.
Genom att använda GitHub Actions kan du köra en ci/CD-process (kontinuerlig integrering och kontinuerlig leverans) som är länkad till dina GitHub-lagringsplatser.
Med GitHub Actions kan du skapa, testa och distribuera din kod direkt från GitHub. Du kan också tilldela kodgranskningar, hantera grenar och sortera problem.
GitHub Actions-komponenter
Nu ska vi beskriva de olika GitHub Actions-komponenterna enligt följande diagram:
- Arbetsflöde: Utlöses av vissa händelser eller aktiviteter, ett arbetsflöde är en samling jobb och steg som automatiserar livscykeluppgifter för programutveckling.
- Jobb: En uppsättning steg som körs på en löpare.
- Steg: En uppgift som kan köra ett eller flera kommandon eller åtgärder. Varje steg består av enskilda åtgärder som körs efter att en viss händelse inträffar, till exempel en pull-begäran.
- Åtgärd: Fristående kommandon som kan kombineras i steg. Du kan skapa jobb genom att kombinera flera steg. Enskilda åtgärder är paketerade skript som automatiserar programutvecklingsuppgifter. Om du vill skapa ett arbetsflöde lägger du till åtgärder i en YAML-fil i katalogen .github/workflows på din GitHub-lagringsplats.
En Terraform GitHub-åtgärd
Åtgärden hashicorp/setup-terraform
konfigurerar Terraform CLI i ditt GitHub Actions-arbetsflöde genom att:
- Ladda ned en specifik version av Terraform CLI och lägga till den i
PATH
. - Konfigurera Terraform CLI-konfigurationsfilen med ett Terraform Cloud- eller Enterprise-värdnamn och API-token.
- Installera ett omslutningsskript för att omsluta senare anrop av binärfilen
terraform
och exponera dess STDOUT, STDERR och slutkod som utdata med namnetstdout
,stderr
respektiveexitcode
.
Autentisera GitHub Actions med Azure
Terraform har stöd för flera alternativ för autentisering med Azure:
- När du använder Terraform interaktivt rekommenderar vi att du autentiserar via ett Microsoft-konto.
- När du använder Terraform från kod eller automatisering rekommenderar vi att du autentiserar via azure-tjänstens huvudnamn.
Tjänstens huvudnamn är en identitet som ska användas med program, värdbaserade tjänster och automatiserade verktyg för åtkomst till Azure-resurser.
Nästa steg
I nästa lektion ska vi konfigurera ett exempelprojekt och använda GitHub Actions med Terraform för att distribuera det till Azure.
Viktiga begrepp för nya Azure Pipelines
Nu ska vi lära oss mer om de komponenter som utgör en Azure Pipeline.
- En utlösare uppmanar en pipeline att köras.
- En pipeline består av en eller flera steg. En pipeline kan distribueras till en eller flera miljöer.
- En fas är ett sätt att organisera jobb i en pipeline och varje steg kan ha ett eller flera jobb.
- Varje jobb körs på en agent. Ett jobb kan också vara agentlöst.
- Varje agent kör ett jobb som innehåller ett eller flera steg.
- Ett steg kan vara en uppgift eller ett skript och är det minsta byggblocket i en pipeline.
- En uppgift är ett fördefinierat skript som utför en åtgärd, till exempel att anropa ett REST-API eller publicera en byggartefakt.
- En artefakt är en samling filer eller paket som publicerats av en körning.
Dricks
Mer detaljerad information om de olika pipelinekomponenterna och hur du använder dem finns i länkarna i avsnittet Sammanfattning .
Terraform-uppgifter för Azure Pipelines
När du kör kommandon som interagerar med Azure, till exempel plan
, apply
och destroy
, använder uppgiften en Azure Service-Anslut för att auktorisera åtgärder mot målprenumerationen.
Det rekommenderade sättet att ansluta till Azure är att binda tjänstens Anslut ion till ett Huvudnamn för Azure-tjänsten. Ett Huvudnamn för Azure-tjänsten är en identitet som du skapar för använder automatiserade verktyg för att komma åt Azure-resurser.
Följande YAML-kodfragment använder Azure Pipeline Terraform-providern azurerm
. En tjänst Anslut ion anges via indataenvironmentServiceNameAzureRM
:
- task: TerraformTaskV1@0
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: $(Build.Repository.LocalPath)/terraform
backendAzureRmContainerName: 'tfstate'
backendAzureRmKey: 'tf/terraform.tfstate'
environmentServiceNameAzureRM: $(serviceConnection)
Dricks
Om du använder azurerm
som Azure Pipeline Terraform-provider måste du också ange en tjänst Anslut ion och lagringscontainer som ska användas med Terraform-serverdelstillståndet.
Skicka parametrar
Det finns flera metoder för att skicka parametrar till terraform-kommandon. Variabler ger dig ett bekvämt sätt att hämta viktiga databitar till olika delar av pipelinen.
Du kan ange en variabel för en bygg-pipeline genom att följa dessa steg:
- Gå till sidan Pipelines , välj lämplig pipeline och välj Redigera.
- Leta upp variablerna för den här pipelinen.
- Lägg till eller uppdatera variabeln.
- Om du vill markera variabeln som hemlighet väljer du Behåll det här värdet hemligt.
- Spara pipelinen.
Terraform-utdata till pipelinevariabler
TerraformCLI-uppgiften stöder körning av Terraform-kommandot output
. När CLI körs skapas pipelinevariabler från varje utdatavariabel som genereras från terraform output
kommandot.
Nästa steg
I nästa lektion ska vi konfigurera ett exempelprojekt och använda Azure Pipelines med Terraform för att distribuera det till Azure.