Bruke en automatisert arbeidsflyt

Fullført

I denne enheten lærer du om automatiserte arbeidsflytverktøy og hvordan de integreres med Terraform og Azure.

Om GitHub-handlinger

Som infrastruktursjef trenger du bygg- og distribusjonsarbeidsflytene for å bruke samme versjonskontroll som prosjektet.

Ved hjelp av GitHub Actions kan du kjøre en kontinuerlig integrerings- og kontinuerlig leveringsprosess (CI/CD) som er koblet til GitHub-repositoriene dine.

Med GitHub-handlinger kan du bygge, teste og distribuere koden direkte fra GitHub. Du kan også tilordne kodegjennomganger, behandle grener og problemer med triage.

GitHub Actions-komponenter

La oss beskrive de ulike GitHub-handlingskomponentene, som vist i følgende diagram:

diagram som viser relasjonen mellom Arbeidsflyter for GitHub-handlinger til komponentjobber, trinn og handlinger.

  • arbeidsflyt: Utløst av bestemte hendelser eller aktiviteter, er en arbeidsflyt en samling jobber og trinn som automatiserer livssyklusoppgaver for programvareutvikling.
  • Job: Et sett med trinn som utføres på en løper.
  • trinn: En oppgave som kan kjøre én eller flere kommandoer eller handlinger. Hvert trinn består av individuelle handlinger som kjøres etter at en bestemt hendelse inntreffer, for eksempel en pull-forespørsel.
  • Handling: Frittstående kommandoer som kan kombineres i trinn. Flere trinn kan kombineres for å opprette en jobb. Individuelle handlinger er pakkede skript som automatiserer programvareutviklingsoppgaver. Hvis du vil opprette en arbeidsflyt, legger du til handlinger i en YAML-fil i .github/workflows-katalogen i GitHub-repositoriet.

En Terraform GitHub-handling

Handlingen hashicorp/setup-terraform konfigurerer Terraform CLI i GitHub Actions-arbeidsflyten ved å:

  • Laster ned en bestemt versjon av Terraform CLI og legger den til i PATH.
  • Konfigurere konfigurasjonsfilen for Terraform CLI med et Terraform Cloud- eller Enterprise-vertsnavn og API-token.
  • Installere et wrapper-skript for å bryte senere kall til terraform binære og vise stdout-, STDERR- og avslutningskoden som utdata kalt henholdsvis stdout, stderrog exitcode.

Godkjenne GitHub-handlinger med Azure

Terraform støtter flere alternativer for godkjenning med Azure:

  • Når du bruker Terraform interaktivt, anbefaler vi at du godkjenner via en Microsoft-konto.
  • Når du bruker Terraform fra kode eller automatisering, anbefaler vi at du godkjenner via en Azure Service Principal.

En tjenestekontohaver er en identitet for bruk med programmer, driftede tjenester og automatiserte verktøy for å få tilgang til Azure-ressurser.

Neste trinn

I neste enhet skal vi konfigurere et eksempelprosjekt og bruke GitHub-handlinger med Terraform til å distribuere det til Azure.

Viktige konsepter for nye Azure Pipelines

La oss lære om komponentene som utgjør en Azure Pipeline.

diagram over nøkkelkonseptene og komponentene i Azure Pipeline.

  • En utløser ber et datasamlebånd om å kjøre.
  • Et datasamlebånd består av én eller flere faser. Et datasamlebånd kan distribueres til ett eller flere miljøer.
  • En fase er en måte å organisere jobben på i et datasamlebånd, og hvert trinn kan ha én eller flere jobber.
  • Hver jobb kjører på én agent. En jobb kan også være agentløs.
  • Hver agent kjører en jobb som inneholder ett eller flere trinn.
  • Et trinn kan være en oppgave eller skript, og er den minste byggeblokken i et datasamlebånd.
  • En oppgave er et forhåndspakket skript som utfører en handling, for eksempel å starte en REST-API eller publisere en byggartefakt.
  • En artefakt er en samling filer eller pakker publisert av en kjøring.

Tips

Hvis du vil ha mer detaljert informasjon om de ulike pipelinekomponentene og hvordan du bruker dem, kan du se koblingene i delen Sammendrag.

Terraform-oppgaver for Azure Pipelines

Når du kjører kommandoer som samhandler med Azure, for eksempel plan, applyog destroy, bruker oppgaven en Azure Service Connection til å godkjenne operasjoner mot målabonnementet. Den anbefalte måten å koble til Azure på, er å binde tjenestetilkoblingen til en Azure Service Principal. En Azure Service Principal er en identitet som du oppretter for bruk av automatiserte verktøy for å få tilgang til Azure-ressurser.

Følgende YAML-kodesnutt bruker Azure Pipeline Terraform-leverandøren azurerm. En tjenestetilkobling angis via environmentServiceNameAzureRM inndata:

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Tips

Hvis du bruker azurerm som Azure Pipeline Terraform-leverandør, må du også angi en tjenestetilkoblings- og lagringsbeholder for bruk med Terraform-serverdel tilstand.

Passerer parametere

Det finnes flere metoder for å sende parametere til terraformkommandoer. Variabler gir deg en praktisk metode for å få nøkkelbiter med data inn i ulike deler av datasamlebåndet.

Du kan angi en variabel for et byggforløp ved å følge disse trinnene:

  1. Gå til siden Pipelines, velg riktig datasamlebånd, og velg Rediger.
  2. Finn variabler for dette datasamlebåndet.
  3. Legg til eller oppdater variabelen.
  4. Hvis du vil merke variabelen som hemmelig, velger du Hold denne verdien hemmelig.
  5. Lagre datasamlebåndet.

Terraform-utdata til pipelinevariabler

TerraformCLI-oppgaven støtter kjøring av Kommandoen Terraform output. Når CLI kjører, opprettes datasamlebåndvariabler fra hver utdatavariabel som sendes ut fra kommandoen terraform output.

Neste trinn

I den neste enheten skal vi sette opp et eksempelprosjekt og bruke Azure Pipelines med Terraform til å distribuere det til Azure.