Integrera ARM-mallar med Azure Pipelines
Du kan integrera Azure Resource Manager (ARM-mallar) med Azure Pipelines för kontinuerlig integrering och kontinuerlig distribution (CI/CD). I den här artikeln får du lära dig två mer avancerade sätt att distribuera mallar med Azure Pipelines.
Välj ditt alternativ
Innan du fortsätter med den här artikeln ska vi titta på de olika alternativen för att distribuera en ARM-mall från en pipeline.
Använd arm-malldistributionsuppgiften. Det här alternativet är det enklaste alternativet. Den här metoden fungerar när du vill distribuera en mall direkt från en lagringsplats. Det här alternativet beskrivs inte i den här artikeln utan beskrivs i självstudien Kontinuerlig integrering av ARM-mallar med Azure Pipelines. Den visar hur du använder arm-malldistributionsaktiviteten för att distribuera en mall från GitHub lagringsplatsen.
Lägg till uppgift som kör Azure PowerShell skript. Det här alternativet har fördelen att tillhandahålla konsekvens under utvecklingens livscykel eftersom du kan använda samma skript som du använde när du körde lokala tester. Skriptet distribuerar mallen men kan även utföra andra åtgärder, till exempel hämta värden som ska användas som parametrar. Det här alternativet visas i den här artikeln. Se Azure PowerShell aktivitet.
Visual Studio tillhandahåller Azure-resursgruppsprojektet som innehåller ett PowerShell-skript. Skriptet stegar artefakter från projektet till ett lagringskonto som Resource Manager kan komma åt. Artefakter är objekt i projektet, till exempel länkade mallar, skript och binärfiler för program. Om du vill fortsätta använda skriptet från projektet använder du PowerShell-skriptuppgiften som visas i den här artikeln.
Lägg till uppgifter för att kopiera och distribuera uppgifter. Det här alternativet är ett praktiskt alternativ till projektskriptet. Du konfigurerar två uppgifter i pipelinen. En aktivitet mellanstadierar artefakterna till en tillgänglig plats. Den andra uppgiften distribuerar mallen från den platsen. Det här alternativet visas i den här artikeln. Se Kopiera och distribuera uppgifter.
Förbereda projektet
Den här artikeln förutsätter att din ARM-mall och Azure DevOps-organisationen är redo att skapa pipelinen. Följande steg visar hur du kontrollerar att du är klar:
Du har en Azure DevOps-organisation. Om du inte har ett konto kan du skapa ett utan kostnad. Om ditt team redan har en Azure DevOps-organisation kontrollerar du att du är administratör för det Azure DevOps-projekt som du vill använda.
Du har konfigurerat en tjänstanslutning till din Azure-prenumeration. Aktiviteterna i pipelinen körs under identiteten för tjänstens huvudnamn. Anvisningar för hur du skapar anslutningen finns i Skapa ett DevOps-projekt.
Du har en ARM-mall som definierar infrastrukturen för ditt projekt.
Skapa pipeline
Om du inte har lagt till en pipeline tidigare måste du skapa en ny pipeline. Från Din Azure DevOps-organisation väljer du Pipelines och Ny pipeline.

Ange var koden ska lagras. Följande bild visar hur du väljer Azure Repos Git.

Välj den lagringsplats som innehåller koden för projektet från den källan.

Välj den typ av pipeline som ska skapas. Du kan välja Startpipeline.

Du är redo att antingen lägga till en Azure PowerShell eller kopiera filen och distribuera uppgifter.
Azure PowerShell-uppgift
Det här avsnittet visar hur du konfigurerar kontinuerlig distribution med hjälp av en enda uppgift som kör PowerShell-skriptet i projektet. Om du behöver ett PowerShell-skript som distribuerar en mall kan du Deploy-AzTemplate.ps1 eller Deploy-AzureResourceGroup.ps1.
Följande YAML-fil skapar en Azure PowerShell uppgift:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzurePowerShell@5
inputs:
azureSubscription: 'script-connection'
ScriptType: 'FilePath'
ScriptPath: './Deploy-AzTemplate.ps1'
ScriptArguments: -Location 'centralus' -ResourceGroupName 'demogroup' -TemplateFile templates\mainTemplate.json
azurePowerShellVersion: 'LatestVersion'
När du anger uppgiften till AzurePowerShell@5 använder pipelinen Az-modulen. Om du använder AzureRM-modulen i skriptet anger du uppgiften till AzurePowerShell@3 .
steps:
- task: AzurePowerShell@3
För azureSubscription anger du namnet på tjänstanslutningen som du skapade.
inputs:
azureSubscription: '<your-connection-name>'
För scriptPath anger du den relativa sökvägen från pipelinefilen till skriptet. Du kan titta på lagringsplatsen för att se sökvägen.
ScriptPath: '<your-relative-path>/<script-file-name>.ps1'
I ScriptArguments anger du de parametrar som krävs av skriptet. I följande exempel visas några parametrar för ett skript, men du måste anpassa parametrarna för skriptet.
ScriptArguments: -Location 'centralus' -ResourceGroupName 'demogroup' -TemplateFile templates\mainTemplate.json
När du väljer Spara körs bygg-pipelinen automatiskt. Gå tillbaka till sammanfattningen för bygg-pipelinen och titta på statusen.

Du kan välja den pipeline som körs för att se information om aktiviteterna. När det är klart visas resultatet för varje steg.
Kopiera och distribuera uppgifter
Det här avsnittet visar hur du konfigurerar kontinuerlig distribution med hjälp av två uppgifter. Den första uppgiften mellanlagringsartefakter till ett lagringskonto och den andra aktiviteten distribuerar mallen.
Om du vill kopiera filer till ett lagringskonto måste tjänstens huvudnamn för tjänstanslutningen tilldelas rollen Storage Blob Data-deltagare eller Storage rollen Blob Data-ägare. Mer information finns i Kom igång med AzCopy.
Följande YAML visar Azure-filkopieringsuppgiften.
trigger:
- master
pool:
vmImage: 'windows-latest'
steps:
- task: AzureFileCopy@4
inputs:
SourcePath: 'templates'
azureSubscription: 'copy-connection'
Destination: 'AzureBlob'
storage: 'demostorage'
ContainerName: 'projecttemplates'
name: AzureFileCopy
Det finns flera delar av den här uppgiften att ändra för din miljö. SourcePathanger platsen för artefakterna i förhållande till pipelinefilen.
SourcePath: '<path-to-artifacts>'
För azureSubscription anger du namnet på tjänstanslutningen som du skapade.
azureSubscription: '<your-connection-name>'
För lagrings- och containernamn anger du namnen på det lagringskonto och den container som du vill använda för att lagra artefakterna. Lagringskontot måste finnas.
storage: '<your-storage-account-name>'
ContainerName: '<container-name>'
När du har skapat kopieringsfilens uppgift är du redo att lägga till uppgiften för att distribuera den mellandelade mallen.
Följande YAML visar distributionsuppgiften Azure Resource Manager mall:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'copy-connection'
subscriptionId: '00000000-0000-0000-0000-000000000000'
action: 'Create Or Update Resource Group'
resourceGroupName: 'demogroup'
location: 'West US'
templateLocation: 'URL of the file'
csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
csmParametersFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.parameters.json$(AzureFileCopy.StorageContainerSasToken)'
deploymentMode: 'Incremental'
deploymentName: 'deploy1'
Det finns flera delar av den här uppgiften att granska i detalj.
deploymentScope: Välj distributionens omfattning bland alternativen:Management Group,SubscriptionochResource Group. Mer information om omfången finns i Distributionsomfång.azureResourceManagerConnection: Ange namnet på tjänstanslutningen som du skapade.subscriptionId: Ange målprenumerationens ID. Den här egenskapen gäller endast distributionsomfånget resursgrupp och prenumerationsdistributionsomfång.resourceGroupNameochlocation: ange namn och plats för den resursgrupp som du vill distribuera till. Uppgiften skapar resursgruppen om den inte finns.resourceGroupName: '<resource-group-name>' location: '<location>'csmFileLink: Ange länken för den mellanfasade mallen. När du anger värdet använder du variabler som returneras från filkopieringsaktiviteten. Följande exempel länkar till en mall med namnet mainTemplate.jspå. Mappen med namnet templates ingår eftersom det är där filkopieringsaktiviteten kopierade filen. I din pipeline anger du sökvägen till mallen och namnet på mallen.csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
Din pipeline ser ut så här:
trigger:
- master
pool:
vmImage: 'windows-latest'
steps:
- task: AzureFileCopy@4
inputs:
SourcePath: 'templates'
azureSubscription: 'copy-connection'
Destination: 'AzureBlob'
storage: 'demostorage'
ContainerName: 'projecttemplates'
name: AzureFileCopy
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'copy-connection'
subscriptionId: '00000000-0000-0000-0000-000000000000'
action: 'Create Or Update Resource Group'
resourceGroupName: 'demogroup'
location: 'West US'
templateLocation: 'URL of the file'
csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
csmParametersFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.parameters.json$(AzureFileCopy.StorageContainerSasToken)'
deploymentMode: 'Incremental'
deploymentName: 'deploy1'
När du väljer Spara körs bygg-pipelinen automatiskt. Gå tillbaka till sammanfattningen för bygg-pipelinen och titta på statusen.
Nästa steg
- Information om hur du använder vad om-åtgärden i en pipeline finns i Testa ARM-mallar med What-If i en pipeline.
- Mer information om hur du använder ARM-mallar med GitHub Actions finns i Distribuera Azure Resource Manager-mallarmed hjälp av GitHub Actions .