Anvend en automatiseret arbejdsproces
I dette undermodul får du mere at vide om automatiserede arbejdsprocesværktøjer, og hvordan de integreres med Terraform og Azure.
Om GitHub-handlinger
Som infrastrukturadministrator skal du bruge dine build- og udrulningsarbejdsprocesser for at bruge det samme versionskontrolelement som dit projekt.
Ved hjælp af GitHub-handlinger kan du køre en kontinuerlig integrations- og kontinuerlig leveringsproces (CI/CD), der er knyttet til dine GitHub-lagre.
Med GitHub-handlinger kan du bygge, teste og udrulle din kode direkte fra GitHub. Du kan også tildele kodegennemgange, administrere forgreninger og triageproblemer.
GitHub Actions-komponenter
Lad os beskrive de forskellige GitHub Actions-komponenter som vist i følgende diagram:
- arbejdsproces: Udløst af visse hændelser eller aktiviteter er en arbejdsproces en samling job og trin, der automatiserer livscyklusopgaver for softwareudvikling.
- Job: Et sæt trin, der udføres på en løber.
- trin: En opgave, der kan køre en eller flere kommandoer eller handlinger. Hvert trin består af individuelle handlinger, der kører efter en bestemt hændelse, f.eks. en pullanmodning.
- Action: Separate kommandoer, der kan kombineres i trin. Flere trin kan kombineres for at oprette et job. Individuelle handlinger er pakkede scripts, der automatiserer softwareudviklingsopgaver. Hvis du vil oprette en arbejdsproces, skal du føje handlinger til en YAML-fil i .github/arbejdsprocesser mappe i dit GitHub-lager.
En Terraform GitHub-handling
Handlingen hashicorp/setup-terraform konfigurerer kommandolinjegrænsefladen Terraform i arbejdsprocessen for GitHub-handlinger ved at:
- Downloader en bestemt version af terraform-kommandolinjegrænsefladen og føjer den til
PATH. - Konfiguration af terraform-CLI-konfigurationsfilen med et Terraform Cloud- eller Enterprise-værtsnavn og API-token.
- Installation af et ombrydningsscript for at ombryde senere kald af den binære
terraformog vise dens STDOUT-, STDERR- og afslutningskode som output med navnet henholdsvisstdout,stderrogexitcode.
Godkend GitHub-handlinger med Azure
Terraform understøtter flere muligheder for godkendelse med Azure:
- Når du bruger Terraform interaktivt, anbefaler vi, at du godkender via en Microsoft-konto.
- Når du bruger Terraform fra kode eller automatisering, anbefaler vi, at du godkender via en Azure -tjenesteprincipal.
En tjenesteprincipal er en identitet til brug sammen med programmer, hostede tjenester og automatiserede værktøjer til at få adgang til Azure-ressourcer.
Næste trin
I det næste undermodul konfigurerer vi et eksempelprojekt og bruger GitHub-handlinger med Terraform til at udrulle det på Azure.
Nøglebegreber for nye Azure Pipelines
Lad os få mere at vide om de komponenter, der udgør en Azure Pipeline.
- En udløser beder en pipeline om at køre.
- En pipeline består af et eller flere faser. En pipeline kan installeres i et eller flere miljøer.
- En fase er en metode til at organisere job i en pipeline, og hver fase kan have et eller flere job.
- Hvert job kører på én agent. Et job kan også være agentuafhængig.
- Hver agent kører et job, der indeholder et eller flere trin.
- Et trin kan være en opgave eller scriptog er den mindste dokumentkomponent i en pipeline.
- En opgave er et færdigpakket script, der udfører en handling, f.eks. aktivering af en REST API eller publicering af et buildartefakt.
- En artefakt er en samling filer eller pakker, der udgives af en kørsel.
Drikkepenge
Du kan finde mere detaljerede oplysninger om de forskellige pipelinekomponenter, og hvordan du bruger dem, i afsnittet Links, der er angivet i afsnittet Oversigt.
Terraform-opgaver til Azure Pipelines
Når du udfører kommandoer, der interagerer med Azure, f.eks. plan, applyog destroy, bruger opgaven en Azure Service Connection til at godkende handlinger i forhold til målabonnementet.
Den anbefalede måde at oprette forbindelse til Azure på er at binde tjenesteforbindelsen til en Azure -tjenesteprincipal. En Azure-tjenesteprincipal er en identitet, som du opretter for bruger automatiserede værktøjer til at få adgang til Azure-ressourcer.
Følgende YAML-kodestykke bruger Azure Pipeline Terraform-udbyderen azurerm. Der angives en tjenesteforbindelse via environmentServiceNameAzureRM input:
- task: TerraformTaskV1@0
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: $(Build.Repository.LocalPath)/terraform
backendAzureRmContainerName: 'tfstate'
backendAzureRmKey: 'tf/terraform.tfstate'
environmentServiceNameAzureRM: $(serviceConnection)
Drikkepenge
Hvis du bruger azurerm som Azure Pipeline Terraform-udbyder, skal du også angive en tjenesteforbindelses- og lagerobjektbeholder, der skal bruges sammen med Terraform-backend-tilstand.
Sender parametre
Der er flere metoder til at overføre parametre til terraform-kommandoer. Variabler giver dig en nem måde at få vigtige databit på i forskellige dele af pipelinen.
Du kan angive en variabel for en buildpipeline ved at følge disse trin:
- Gå til siden Pipelines, vælg den relevante pipeline, og vælg Rediger.
- Find de variabler, der for denne pipeline.
- Tilføj eller opdater variablen.
- Hvis du vil markere variablen som hemmelig, skal du vælge Bevar denne værdihemmelighed.
- Gem pipelinen.
Terraform output til rørledningsvariabler
TerraformCLI-opgaven understøtter kørsel af kommandoen Terraform output. Når kommandolinjegrænsefladen kører, oprettes der pipelinevariabler ud fra hver outputvariabel, der udsendes fra kommandoen terraform output.
Næste trin
I det næste undermodul konfigurerer vi et eksempelprojekt og bruger Azure Pipelines med Terraform til at udrulle det på Azure.