Resource Manager-sjablonen integreren met Azure-pijp lijnenIntegrate Resource Manager templates with Azure Pipelines

Visual Studio biedt het project van de Azure-resource groep voor het maken van sjablonen en het implementeren ervan in uw Azure-abonnement.Visual Studio provides the Azure Resource Group project for creating templates and deploying them to your Azure subscription. U kunt dit project integreren met Azure-pijp lijnen voor continue integratie en continue implementatie (CI/CD).You can integrate this project with Azure Pipelines for continuous integration and continuous deployment (CI/CD).

Er zijn twee manieren om sjablonen met Azure-pijp lijnen te implementeren:There are two ways to deploy templates with Azure Pipelines:

  • Voeg een taak toe die een Azure PowerShell script uitvoert.Add task that runs an Azure PowerShell script. Deze optie biedt het voor deel dat u binnen de levens cyclus van de ontwikkeling consistentie kunt bieden, omdat u hetzelfde script gebruikt dat is opgenomen in het Visual Studio-project (Deploy-AzureResourceGroup. ps1).This option has the advantage of providing consistency throughout the development life cycle because you use the same script that is included in the Visual Studio project (Deploy-AzureResourceGroup.ps1). Het script faseert artefacten van uw project naar een opslag account dat door Resource Manager kan worden geopend.The script stages artifacts from your project to a storage account that Resource Manager can access. Artefacten zijn items in uw project, zoals gekoppelde sjablonen, scripts en binaire bestanden voor toepassingen.Artifacts are items in your project such as linked templates, scripts, and application binaries. Vervolgens implementeert het script de sjabloon.Then, the script deploys the template.

  • Voeg taken toe om taken te kopiëren en te implementeren.Add tasks to copy and deploy tasks. Deze optie biedt een handig alternatief voor het project script.This option offers a convenient alternative to the project script. U configureert twee taken in de pijp lijn.You configure two tasks in the pipeline. Met een taak worden de artefacten en de andere taak in de sjabloon geïmplementeerd.One task stages the artifacts and the other task deploys the template.

In dit artikel worden beide benaderingen beschreven.This article shows both approaches.

Uw project voorbereidenPrepare your project

In dit artikel wordt ervan uitgegaan dat uw Visual Studio-project en Azure DevOps-organisatie klaar zijn voor het maken van de pijp lijn.This article assumes your Visual Studio project and Azure DevOps organization are ready for creating the pipeline. De volgende stappen laten zien hoe u ervoor kunt zorgen dat u klaar bent:The following steps show how to make sure you're ready:

Pijplijn makenCreate pipeline

  1. Als u nog geen pijp lijn hebt toegevoegd, moet u een nieuwe pijp lijn maken.If you haven't added a pipeline previously, you need to create a new pipeline. Selecteer in uw Azure DevOps-organisatie pijp lijnen en nieuwe pijp lijn.From your Azure DevOps organization, select Pipelines and New pipeline.

    Nieuwe pijp lijn toevoegen

  2. Geef op waar de code wordt opgeslagen.Specify where your code is stored. In de volgende afbeelding ziet u hoe u Azure opslag plaatsen Gitselecteert.The following image shows selecting Azure Repos Git.

    Code bron selecteren

  3. Selecteer de opslag plaats met de code voor het project uit de bron.From that source, select the repository that has the code for your project.

    Opslag plaats selecteren

  4. Selecteer het type pijp lijn dat u wilt maken.Select the type of pipeline to create. U kunt een starter pijp lijnselecteren.You can select Starter pipeline.

    Pijp lijn selecteren

U kunt een Azure PowerShell-taak of het kopieer bestand toevoegen en taken implementeren.You're ready to either add an Azure PowerShell task or the copy file and deploy tasks.

Azure PowerShell taakAzure PowerShell task

In deze sectie wordt uitgelegd hoe u doorlopende implementatie kunt configureren met één taak die het Power shell-script in uw project uitvoert.This section shows how to configure continuous deployment by using a single task that runs the PowerShell script in your project. Met het volgende YAML-bestand wordt een Azure PowerShell taakgemaakt:The following YAML file creates an Azure PowerShell task:

pool:
  name: Hosted Windows 2019 with VS2019
  demands: azureps

steps:
- task: AzurePowerShell@3
  inputs:
    azureSubscription: 'demo-deploy-sp'
    ScriptPath: 'AzureResourceGroupDemo/Deploy-AzureResourceGroup.ps1'
    ScriptArguments: -ResourceGroupName 'demogroup' -ResourceGroupLocation 'centralus'
    azurePowerShellVersion: LatestVersion

Wanneer u de taak instelt op AzurePowerShell@3, gebruikt de pijp lijn opdrachten uit de AzureRM-module om de verbinding te verifiëren.When you set the task to AzurePowerShell@3, the pipeline uses commands from the AzureRM module to authenticate the connection. Het Power shell-script in het Visual Studio-project maakt standaard gebruik van de AzureRM-module.By default, the PowerShell script in the Visual Studio project uses the AzureRM module. Als u uw script hebt bijgewerkt voor het gebruik van de AZ-module, stelt u de taak in op AzurePowerShell@4.If you've updated your script to use the Az module, set the task to AzurePowerShell@4.

steps:
- task: AzurePowerShell@4

Geef bij azureSubscriptionde naam op van de service verbinding die u hebt gemaakt.For azureSubscription, provide the name of the service connection you created.

inputs:
    azureSubscription: '<your-connection-name>'

Voor scriptPathgeeft u het relatieve pad van het pijplijn bestand naar het script op.For scriptPath, provide the relative path from the pipeline file to your script. U kunt het pad bekijken in uw opslag plaats.You can look in your repository to see the path.

ScriptPath: '<your-relative-path>/<script-file-name>.ps1'

Als u artefacten niet nodig hebt, geeft u gewoon de naam en locatie van een resource groep door om te gebruiken voor de implementatie.If you don't need to stage artifacts, just pass the name and location of a resource group to use for deployment. Met het Visual Studio-script wordt de resource groep gemaakt als deze nog niet bestaat.The Visual Studio script creates the resource group if it doesn't already exist.

ScriptArguments: -ResourceGroupName '<resource-group-name>' -ResourceGroupLocation '<location>'

Als u artefacten naar een bestaand opslag account moet faseren, gebruikt u:If you need to stage artifacts to an existing storage account, use:

ScriptArguments: -ResourceGroupName '<resource-group-name>' -ResourceGroupLocation '<location>' -UploadArtifacts -ArtifactStagingDirectory '$(Build.StagingDirectory)' -StorageAccountName '<your-storage-account>'

Nu u begrijpt hoe u de taak maakt, gaan we de stappen door lopen om de pijp lijn te bewerken.Now, that you understand how to create the task, let's go through the steps to edit the pipeline.

  1. Open de pijp lijn en vervang de inhoud door uw YAML:Open your pipeline, and replace the contents with your YAML:

    pool:
      name: Hosted Windows 2019 with VS2019
      demands: azureps
    
    steps:
    - task: AzurePowerShell@3
      inputs:
        azureSubscription: 'demo-deploy-sp'
        ScriptPath: 'AzureResourceGroupDemo/Deploy-AzureResourceGroup.ps1'
        ScriptArguments: -ResourceGroupName 'demogroup' -ResourceGroupLocation 'centralus' -UploadArtifacts -ArtifactStagingDirectory '$(Build.StagingDirectory)' -StorageAccountName 'stage3a4176e058d34bb88cc'
        azurePowerShellVersion: LatestVersion
    
  2. Selecteer Opslaan.Select Save.

    Pijplijn opslaan

  3. Geef een bericht op dat moet worden doorgevoerd en rechtstreeks door te voeren naar de hoofd server.Provide a message for the commit, and commit directly to master.

  4. Wanneer u Opslaanselecteert, wordt de build-pijp lijn automatisch uitgevoerd.When you select Save, the build pipeline is automatically run. Ga terug naar de samen vatting van uw build-pijp lijn en Bekijk de status.Go back to the summary for your build pipeline, and watch the status.

    Resultaten weergeven

U kunt de pijp lijn die momenteel wordt uitgevoerd selecteren om details over de taken weer te geven.You can select the currently running pipeline to see details about the tasks. Wanneer deze is voltooid, ziet u de resultaten voor elke stap.When it finishes, you see the results for each step.

Taken kopiëren en implementerenCopy and deploy tasks

In deze sectie wordt beschreven hoe u doorlopende implementatie kunt configureren met behulp van een twee taken voor het faseren van de artefacten en het implementeren van de sjabloon.This section shows how to configure continuous deployment by using a two tasks to stage the artifacts and deploy the template.

In de volgende YAML wordt de Azure File Copy-taakweer gegeven:The following YAML shows the Azure file copy task:

- task: AzureFileCopy@3
  displayName: 'Stage files'
  inputs:
    SourcePath: 'AzureResourceGroup1'
    azureSubscription: 'demo-deploy-sp'
    Destination: 'AzureBlob'
    storage: 'stage3a4176e058d34bb88cc'
    ContainerName: 'democontainer'
    outputStorageUri: 'artifactsLocation'
    outputStorageContainerSasToken: 'artifactsLocationSasToken'
    sasTokenTimeOutInMinutes: '240'

Er zijn verschillende onderdelen van deze taak voor het herzien van uw omgeving.There are several parts of this task to revise for your environment. De SourcePath geeft de locatie van de artefacten ten opzichte van het pijplijn bestand aan.The SourcePath indicates the location of the artifacts relative to the pipeline file. In dit voor beeld bestaan de bestanden in een map met de naam AzureResourceGroup1 die de naam is van het project.In this example, the files exist in a folder named AzureResourceGroup1 which was the name of the project.

SourcePath: '<path-to-artifacts>'

Geef bij azureSubscriptionde naam op van de service verbinding die u hebt gemaakt.For azureSubscription, provide the name of the service connection you created.

azureSubscription: '<your-connection-name>'

Geef voor opslag en container naam de namen op van het opslag account en de container die u wilt gebruiken voor het opslaan van de artefacten.For storage and container name, provide the names of the storage account and container you want to use for storing the artifacts. Het opslag account moet bestaan.The storage account must exist.

storage: '<your-storage-account-name>'
ContainerName: '<container-name>'

De volgende YAML toont de implementatie taak voor de Azure Resource Manager sjabloon:The following YAML shows the Azure Resource Manager template deployment task:

- task: AzureResourceGroupDeployment@2
  displayName: 'Deploy template'
  inputs:
    deploymentScope: 'Resource Group'
    ConnectedServiceName: 'demo-deploy-sp'
    subscriptionName: '01234567-89AB-CDEF-0123-4567890ABCDEF'
    action: 'Create Or Update Resource Group'
    resourceGroupName: 'demogroup'
    location: 'Central US'
    templateLocation: 'URL of the file'
    csmFileLink: '$(artifactsLocation)WebSite.json$(artifactsLocationSasToken)'
    csmParametersFileLink: '$(artifactsLocation)WebSite.parameters.json$(artifactsLocationSasToken)'
    overrideParameters: '-_artifactsLocation $(artifactsLocation) -_artifactsLocationSasToken "$(artifactsLocationSasToken)"'
    deploymentMode: 'Incremental'

Er zijn verschillende onderdelen van deze taak voor het herzien van uw omgeving.There are several parts of this task to revise for your environment.

  • deploymentScope: Selecteer het implementatie bereik uit de opties: Management Group, Subscription en Resource Group.deploymentScope: Select the scope of deployment from the options: Management Group, Subscription and Resource Group. Gebruik de resource groep in deze stapsgewijze instructies.Use Resource Group in this walk through. Zie implementatie bereikenvoor meer informatie over de scopes.To learn more about the scopes, see Deployment scopes.

  • ConnectedServiceName: Geef de naam op van de service verbinding die u hebt gemaakt.ConnectedServiceName: Provide the name of the service connection you created.

    ConnectedServiceName: '<your-connection-name>'
    
  • subscriptionName: Geef de ID van het doel abonnement op.subscriptionName: Provide the target subscription ID. Deze eigenschap is alleen van toepassing op het implementatie bereik van de resource groep en de overzicht voor de implementatie van het abonnement.This property only applies to the Resource Group deployment scope and the subscription deployment scoop.

  • resourceGroupName en location: Geef de naam en de locatie van de resource groep op die u wilt implementeren.resourceGroupName and location: provide the name and location of the resource group you want to deploy to. Met de taak wordt de resource groep gemaakt als deze nog niet bestaat.The task creates the resource group if it doesn't exist.

    resourceGroupName: '<resource-group-name>'
    location: '<location>'
    

De implementatie taak is gekoppeld aan een sjabloon met de naam WebSite.json en een bestand met para meters met de naam WebSite. para meters. json.The deployment task links to a template named WebSite.json and a parameters file named WebSite.parameters.json. Gebruik de namen van uw sjabloon en parameter bestanden.Use the names of your template and parameter files.

Nu u begrijpt hoe u de taken maakt, gaan we de stappen door lopen om de pijp lijn te bewerken.Now, that you understand how to create the tasks, let's go through the steps to edit the pipeline.

  1. Open de pijp lijn en vervang de inhoud door uw YAML:Open your pipeline, and replace the contents with your YAML:

    pool:
      name: Hosted Windows 2019 with VS2019
    
    steps:
    - task: AzureFileCopy@3
      displayName: 'Stage files'
      inputs:
        SourcePath: 'AzureResourceGroup1'
        azureSubscription: 'demo-deploy-sp'
        Destination: 'AzureBlob'
        storage: 'stage3a4176e058d34bb88cc'
        ContainerName: 'democontainer'
        outputStorageUri: 'artifactsLocation'
        outputStorageContainerSasToken: 'artifactsLocationSasToken'
        sasTokenTimeOutInMinutes: '240'
     - task: AzureResourceGroupDeployment@2
       displayName: 'Deploy template'
       inputs:
         deploymentScope: 'Resource Group'
         ConnectedServiceName: 'demo-deploy-sp'
         subscriptionName: '01234567-89AB-CDEF-0123-4567890ABCDEF'
         action: 'Create Or Update Resource Group'
         resourceGroupName: 'demogroup'
         location: 'Central US'
         templateLocation: 'URL of the file'
         csmFileLink: '$(artifactsLocation)WebSite.json$(artifactsLocationSasToken)'
         csmParametersFileLink: '$(artifactsLocation)WebSite.parameters.json$(artifactsLocationSasToken)'
         overrideParameters: '-_artifactsLocation $(artifactsLocation) -_artifactsLocationSasToken "$(artifactsLocationSasToken)"'
         deploymentMode: 'Incremental'
    
  2. Selecteer Opslaan.Select Save.

  3. Geef een bericht op dat moet worden doorgevoerd en rechtstreeks door te voeren naar de hoofd server.Provide a message for the commit, and commit directly to master.

  4. Wanneer u Opslaanselecteert, wordt de build-pijp lijn automatisch uitgevoerd.When you select Save, the build pipeline is automatically run. Ga terug naar de samen vatting van uw build-pijp lijn en Bekijk de status.Go back to the summary for your build pipeline, and watch the status.

    Resultaten weergeven

U kunt de pijp lijn die momenteel wordt uitgevoerd selecteren om details over de taken weer te geven.You can select the currently running pipeline to see details about the tasks. Wanneer deze is voltooid, ziet u de resultaten voor elke stap.When it finishes, you see the results for each step.

Volgende stappenNext steps

Zie zelf studie: doorlopende integratie van Azure Resource Manager sjablonen met Azure-pijp lijnenvoor stapsgewijze instructies voor het gebruik van Azure-pijp lijnen met Resource Manager-sjablonen.For step-by-step process on using Azure Pipelines with Resource Manager templates, see Tutorial: Continuous integration of Azure Resource Manager templates with Azure Pipelines.