Få vist og godkend udrulningen
Du har nu lært om pipelinefaser, og hvordan du kan tilføje en pipelinefase for at validere din Bicep-kode. Det næste trin til at skabe tillid til din installation er at tilføje endnu en fase for at kontrollere, præcis hvad udrulningen vil ændre.
I dette undermodul får du mere at vide om, hvordan du bruger what if-kommandoen i en pipeline. Du får også mere at vide om tilføjelse af godkendelser, så du har mulighed for manuelt at bekræfte kommandoens output, før installationen kører.
What If-handlingen
En Bicep-fil beskriver den tilstand, som dit Azure-miljø skal være i i slutningen af en installation. Når du indsender en udrulning, ændrer Azure Resource Manager dit Azure-miljø, så det svarer til den tilstand, der er beskrevet i din Bicep-fil.
En udrulning kan resultere i, at nye ressourcer udrulles i dit miljø, eller at eksisterende ressourcer opdateres. Når du kører en installation i fuld tilstand, kan det endda resultere i sletning af eksisterende ressourcer.
Når ressourcer oprettes, opdateres eller slettes, er der risiko for, at tingene kan ændre sig på en måde, du ikke forventede. Det er en god idé at tilføje et ekstra trin for at kontrollere, hvilke ressourcer der oprettes, opdateres og slettes. Denne bekræftelse føjer værdi til automatiseringsprocessen. Når du udruller til et produktionsmiljø, er det vigtigt at bekræfte eventuelle ændringer i dit miljø.
Resource Manager leverer what if-handlingen, som du kan køre på din Bicep-fil i pipelinefasen:
Du kan bruge kommandoen az deployment group what-if
Azure CLI fra din pipelinedefinition til at køre what if-trinnet:
stages:
- stage: Preview
jobs:
- job: Preview
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'MyServiceConnection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az deployment group what-if \
--resource-group $(ResourceGroupName) \
--template-file deploy/main.bicep
Drikkepenge
I dette modul bruger vi Kommandolinjegrænsefladen i Azure til at køre what if-handlingen. Hvis du bygger din egen PowerShell-baserede pipeline, kan du bruge New-AzResourceGroupDeployment
-cmdlet'en med -Whatif
-switchen, eller du kan bruge Get-AzResourceGroupDeploymentWhatIfResult
-cmdlet'en.
What If-handlingen ændrer ikke dit miljø. I stedet beskrives de ressourcer, der oprettes eller slettes, de ressourceegenskaber, der opdateres, og de ressourcer, der slettes.
What if viser nogle gange, at en ressource ændres, når der faktisk ikke sker nogen ændring. Denne feedback kaldes støj. Vi arbejder på at reducere disse problemer, men vi har brug for din hjælp til at rapportere disse problemer.
Når du har set outputtet af what if-handlingen, kan du afgøre, om du vil fortsætte til installationen. Dette trin omfatter typisk en person, der gennemgår outputtet fra what if-kommandoen og derefter træffer en beslutning om, hvorvidt de identificerede ændringer er rimelige. Hvis en menneskelig korrekturlæser beslutter, at ændringerne er rimelige, kan de manuelt godkende pipelinekørslen.
Du kan få mere at vide om what if-kommandoen i Microsoft Learn-modulet Få vist ændringer i Azure-installationen ved hjælp af What If-.
Miljøer
I Azure Pipelines repræsenterer et miljø det sted, hvor din løsning udrulles. Miljøer indeholder funktioner, der hjælper, når du arbejder med komplekse udrulninger. I et fremtidigt modul får du mere at vide om miljøer og deres funktioner. I øjeblikket fokuserer vi på deres mulighed for at føje manuelle godkendelser til din pipeline.
Som du allerede ved, bruger du job til at definere en sekvens af trin i en pipelinefase. Når du medtager miljøer i pipelinen, skal du bruge en særlig type job, der kaldes et udrulningsjob. Et udrulningsjob ligner et normalt job, men det giver nogle ekstra funktioner. Denne funktionalitet omfatter definition af det miljø, som installationsjobbet bruger:
variables:
- name: deploymentDefaultLocation
value: westus3
stages:
- stage: Preview
jobs:
- job: Preview
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'MyServiceConnection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az deployment group what-if \
--resource-group $(ResourceGroupName) \
--template-file deploy/main.bicep
- stage: Deploy
jobs:
- deployment: Deploy
environment: MyAzureEnvironment
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: AzureResourceManagerTemplateDeployment@3
name: Deploy
displayName: Deploy to Azure
inputs:
connectedServiceName: 'MyServiceConnection'
location: $(deploymentDefaultLocation)
resourceGroupName: $(ResourceGroupName)
csmFile: deploy/main.bicep
Bemærk, at der i YAML-definitionen for et udrulningsjob er nogle vigtige forskelle fra et normalt job:
- I stedet for at begynde med ordet
job
defineres et installationsjob somdeployment
. - Nøgleordet
environment
angiver navnet på det miljø, der skal målrettes mod. I det foregående eksempel spores installationen i forhold til et miljø med navnetMyAzureEnvironment
. - Nøgleordet
strategy
angiver, hvordan Azure Pipelines kører udrulningstrinnene. Udrulningsstrategier understøtter komplekse udrulningsprocesser, især hvor du har flere produktionsmiljøer. I dette modul bruger vi udrulningsstrategien forrunOnce
. Denne strategi fungerer på samme måde som de andre job, du allerede er vant til.
Fasekontroller og godkendelser
Når du har oprettet et miljø, kan du definere kontroller. Kontroller bruges til at bekræfte betingelser, der skal være opfyldt, før en pipeline kan bruge miljøet. En godkendelse er en type kontrol, der kræver, at en person giver en manuel godkendelse.
Kontroller er defineret i miljøet, ikke pipelinen. Forfattere af YAML-pipelinefilen kan ikke fjerne eller tilføje disse kontroller og godkendelser. Det er kun administratorer af et miljø, der kan administrere kontroller og godkendelser af det.
I mange organisationer er ejeren af et miljø i Azure Pipelines den person, der er ansvarlig for det miljø, det udruller til. Kontroller og godkendelser hjælper med at sikre, at de rette personer er involveret i udrulningsprocessen.
Hvordan fungerer kontrol og godkendelser?
Kontroller og godkendelser evalueres lige før en pipelinefase starter. Når Azure Pipelines er ved at køre en pipelinefase, ser den på alle de pipelineressourcer, som fase bruger, herunder miljøer. Miljøer kan have kontroller, der skal opfyldes.
En godkendelse er én type kontrol. Når du konfigurerer en godkendelseskontrol, tildeler du en eller flere brugere, der skal godkende fortsættelsen af din pipeline.
Azure Pipelines leverer også andre typer kontroller. Du kan f.eks. kalde en API for at køre en brugerdefineret logik, styre åbningstiderne, hvor en fase kan køre, og endda sende en forespørgsel til Azure Monitor for at sikre, at en udrulning er fuldført. Vi diskuterer kun godkendelsestjek i dette modul, men vi indeholder links til flere oplysninger om kontroller i oversigten.
Seddel
Agentgrupper og tjenesteforbindelser kan også have kontrol konfigureret på dem. Du kan også bruge et særligt trin, der kaldes en manuel godkendelsesopgave. Men i dette modul fokuserer vi på miljøer og de kontroller, der er knyttet til dem.
Når pipelinen starter og når en fase, der kræver en godkendelseskontrol, afbrydes pipelinens kørsel midlertidigt. Alle de brugere, der er blevet udpeget som godkendere, sendes en meddelelse i Azure DevOps og via mail.
Godkendere kan undersøge pipelinelogfilerne, f.eks. de ændringer, som what if-handlingen registrerer. På baggrund af disse oplysninger godkender eller afviser de derefter ændringen. Hvis de godkender ændringen, genoptages pipelinen. Hvis de afviser, eller hvis de ikke svarer inden for en konfigurerbar timeoutperiode, mislykkes fasen.
Betydningen af god praksis
Miljøfunktionen i Azure Pipelines giver dig mulighed for at knytte dine udrulninger til et miljø, og derefter nedarver udrulningen de kontroller og godkendelser, der er defineret af ejeren af miljøet. Der er dog ikke noget at kræve, at nye pipelines bruger miljøer.
Det er vigtigt, at du og din organisation etablerer god praksis for at gennemse dine pipelinedefinitioner. Et eksempel er konfiguration af dit lager, så det kræver gennemsyn af pullanmodninger om ændringer af din primære forgrening ved hjælp af beskyttelsespolitikker for forgreninger. Du får mere at vide om dette koncept i et fremtidigt modul.
Du kan også føje kontroller og godkendelser til tjenesteforbindelser, der sikrer, at godkendelse opnås, før en udrulning kan bruge legitimationsoplysningerne for en tjenesteprincipal. Godkendelserne vil dog også påvirke pipelinens mulighed for at køre forhåndskontrollen og what if-handlingen, fordi de også kræver en tjenesteforbindelse.
Du kan bruge en anden separat tjenesteforbindelse til what if-fasen med sin egen tjenesteprincipal. Den tjenesteprincipal, der bruges til start- og valideringsfaserne, skal have en brugerdefineret Azure-rolle defineret for at sikre, at den har de minimumtilladelser, den skal bruge for at udføre sit arbejde.