Oefening: een Bicep-implementatietaak toevoegen aan de pijplijn

Voltooid

U hebt een basispijplijn gemaakt en u hebt uw Azure- en Azure Pipelines-omgevingen geconfigureerd om verbinding te maken. U bent nu klaar om het Bicep-bestand van uw website vanuit uw pijplijn in Azure te implementeren.

In deze oefening gaat u het volgende doen:

  • Voeg een Bicep-bestand toe aan uw opslagplaats.
  • Voeg een pijplijnstap toe om uw Bicep-bestand te implementeren.
  • Voer uw pijplijn opnieuw uit en controleer of uw website is geïmplementeerd.

Het Bicep-bestand van uw website toevoegen aan de Git-opslagplaats

U hebt het Bicep-bestand van uw website al voorbereid. U kunt het Bicep-bestand gebruiken om verschillende configuraties van de websitebronnen te implementeren, afhankelijk van de omgeving en configuratie. Hier voegt u uw Bicep-bestand toe aan uw opslagplaats.

  1. Open the Visual Studio Code Explorer.

  2. Maak in de implementatiemap een nieuw bestand met de naam main.bicep. Zorg ervoor dat u het bestand in de implementatiemap maakt en niet in de hoofdmap van de opslagplaats:

    Schermopname van Visual Studio Code Explorer, met het belangrijkste dot bicep-bestand gemarkeerd en zich in de implementatiemap bevindt.

  3. Kopieer de volgende code naar het bestand main.bicep :

    @description('The Azure region into which the resources should be deployed.')
    param location string = resourceGroup().location
    
    @description('The type of environment. This must be nonprod or prod.')
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
    @description('Indicates whether to deploy the storage account for toy manuals.')
    param deployToyManualsStorageAccount bool
    
    @description('A unique suffix to add to resource names that need to be globally unique.')
    @maxLength(13)
    param resourceNameSuffix string = uniqueString(resourceGroup().id)
    
    var appServiceAppName = 'toy-website-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website-plan'
    var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}'
    
    // Define the SKUs for each component based on the environment type.
    var environmentConfigurationMap = {
      nonprod: {
        appServicePlan: {
          sku: {
            name: 'F1'
            capacity: 1
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_LRS'
          }
        }
      }
      prod: {
        appServicePlan: {
          sku: {
            name: 'S1'
            capacity: 2
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_ZRS'
          }
        }
      }
    }
    
    var toyManualsStorageAccountConnectionString = deployToyManualsStorageAccount ? 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}' : ''
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
    resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (deployToyManualsStorageAccount) {
      name: toyManualsStorageAccountName
      location: location
      kind: 'StorageV2'
      sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku
    }
    
  4. Sla de wijzigingen in het bestand op.

  5. Voer in de Visual Studio Code-terminal deze code uit om de wijzigingen te faseren, de wijzigingen door te voeren en de wijzigingen naar uw opslagplaats te pushen:

    git add deploy/main.bicep
    git commit -m 'Add Bicep file'
    git push
    

De pijplijnstappen vervangen

Werk vervolgens uw pijplijndefinitie bij om uw Bicep-bestand in Azure te implementeren met behulp van de serviceverbinding.

  1. Open in Visual Studio Code het bestand deploy/azure-pipelines.yml .

  2. Voeg vóór jobs: de regel toe om een variabele met de variables: naam deploymentDefaultLocationte definiëren:

    trigger: none
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
    - name: deploymentDefaultLocation
      value: westus3
    
    jobs:
    
  3. Als u de script stap uit de pijplijndefinitie wilt verwijderen, verwijdert u de onderste twee regels van het bestand.

    Tip

    Wanneer u in Visual Studio Code werkt en de Azure Pipelines-extensie hebt geïnstalleerd, gebruikt u de toetsencombinatie Ctrl+Spatiebalk . Er wordt een contextmenu met voorgestelde elementen weergegeven die u op de huidige cursorpositie kunt toevoegen.

  4. Voeg onder aan het bestand een taak toe die gebruikmaakt van de AzureResourceManagerTemplateDeployment taak om uw Bicep-bestand te implementeren:

    jobs:
    - job:
      steps:
    
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          connectedServiceName: $(ServiceConnectionName)
          deploymentName: $(Build.BuildNumber)
          location: $(deploymentDefaultLocation)
          resourceGroupName: $(ResourceGroupName)
          csmFile: deploy/main.bicep
          overrideParameters: >
            -environmentType $(EnvironmentType)
            -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
    

    Notitie

    Het is een goed idee om deze code zelf te typen in plaats van deze code uit deze module te kopiëren en plakken. Let op de inspringing van het bestand. Als uw inspringing niet juist is, is uw YAML-bestand niet geldig. Visual Studio Code geeft fouten aan door golvende lijnen weer te geven.

    In deze stap wordt een systeemvariabele gebruikt $(Build.BuildNumber)om de implementatie een naam te geven. Met de variabele kunt u eenvoudig zien met welke pijplijn een implementatie wordt uitgevoerd.

    De location taakeigenschap is vereist voor de AzureResourceManagerTemplateDeployment taak. Hiermee geeft u de Azure-regio op waarin een resourcegroep moet worden gemaakt. In deze oefening hebt u al een resourcegroep gemaakt, zodat de locatie die u hier opgeeft, niet van belang is. Maar u moet de waarde toch opgeven. Hier stelt u deze in op de waarde van de deploymentDefaultLocation variabele die u in een vorige stap hebt ingesteld.

  5. Sla de wijzigingen in het bestand op. Uw bestand moet eruitzien zoals dit voorbeeld:

    trigger: none
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
    - name: deploymentDefaultLocation
      value: westus3
    
    jobs:
    - job:
      steps:
    
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          connectedServiceName: $(ServiceConnectionName)
          deploymentName: $(Build.BuildNumber)
          location: $(deploymentDefaultLocation)
          resourceGroupName: $(ResourceGroupName)
          csmFile: deploy/main.bicep
          overrideParameters: >
            -environmentType $(EnvironmentType)
            -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
    
  6. Plaats uw wijzigingen in de Visual Studio Code-terminal, voer ze door naar uw opslagplaats en push ze naar Azure-opslagplaatsen:

    git add deploy/azure-pipelines.yml
    git commit -m 'Add deployment task to pipeline'
    git push
    

Pijplijnvariabelen toevoegen

  1. Selecteer Pijplijnen in uw browser.

    Schermopname van Azure DevOps waarin het menu wordt weergegeven, met Pijplijnen gemarkeerd.

  2. Selecteer uw pijplijn.

    Schermopname van Azure DevOps waarin de lijst met pijplijnen wordt weergegeven, met de pijplijn van de speelgoedwebsite gemarkeerd.

  3. Selecteer Bewerken.

    Schermopname van Azure DevOps met de pijplijn, met Bewerken gemarkeerd.

  4. Selecteer Variabelen.

    Schermopname van Azure DevOps met de pijplijneditor, met de knop Variabelen gemarkeerd.

  5. Selecteer Nieuwe variabele.

    Schermopname van Azure DevOps met de editor voor pijplijnvariabelen, met de knop Nieuwe variabele gemarkeerd.

  6. Voer in Naam ServiceConnectionName in. Voer In Waarde ToyWebsite in.

    Laat de selectievakjes uitgeschakeld en selecteer OK.

    Schermopname van Azure DevOps met de editor voor pijplijnvariabelen, met de knop OK gemarkeerd.

  7. Als u meer variabelen wilt maken, selecteert u +.

    Schermopname van Azure DevOps met de lijst met pijplijnvariabelen, met de plusknop gemarkeerd.

    Maak de volgende variabelen op dezelfde manier als u de variabele ServiceConnectionName hebt gemaakt:

    Naam van de variabele Weergegeven als
    ResourceGroupName Speelgoedwebsite
    EnvironmentType niet-prod
  8. Voer de stappen opnieuw uit om een variabele met de naam DeployToyManualsStorageAccount te maken met de waarde True. Selecteer voor deze variabele het selectievakje Laat gebruikers deze waarde overschrijven bij het uitvoeren van deze pijplijn .

    Schermopname van Azure DevOps met de editor voor pijplijnvariabelen.

  9. Wanneer u alle vier de variabelen hebt gemaakt, selecteert u Opslaan.

    Schermopname van Azure DevOps met de editor voor pijplijnvariabelen, met de knop Opslaan gemarkeerd.

Uw pijplijn uitvoeren

Nu bent u klaar om uw pijplijn uit te voeren.

Uw sjabloon bevat een opslagaccount dat uw websiteteam gebruikt voor het opslaan van instructiehandleidingen voor speelgoed. Omdat u uw omgeving nog steeds test, hoeft u het opslagaccount niet telkens te implementeren wanneer u de website implementeert. U hebt dus een Bicep-parameter gemaakt om te bepalen of het opslagaccount is geïmplementeerd. Hier voert u de pijplijn uit en overschrijft u de implementatie, zodat het opslagaccount deze keer niet wordt geïmplementeerd.

  1. Selecteer Uitvoeren.

    Schermopname van Azure DevOps met de pijplijn, met de knop Uitvoeren gemarkeerd.

    Het deelvenster Pijplijn uitvoeren wordt weergegeven. In dit deelvenster kunt u instellingen configureren voor deze specifieke uitvoering van de pijplijn.

  2. Selecteer Variabelen.

    Schermopname van Azure DevOps met de pagina 'Pijplijn uitvoeren' met het menu-item Variabelen gemarkeerd.

  3. Selecteer de variabele DeployToyManualsStorageAccount en wijzig de waarde ervan in false. Selecteer Vervolgens Bijwerken.

    Schermopname van Azure DevOps met de variabele editor 'Pijplijn uitvoeren' met de knop Bijwerken gemarkeerd.

  4. Selecteer de pijl-terug.

    Schermopname van Azure DevOps met de pagina 'Pijplijn uitvoeren' met de pijl-terug gemarkeerd.

  5. Als u een nieuwe pijplijnuitvoering wilt starten, selecteert u Uitvoeren. Het kan enkele minuten duren voordat de pijplijn is gestart. Nadat de pijplijn is gestart, kan het enkele minuten duren voordat de implementatie is voltooid.

  6. Als u de taak wilt openen, selecteert u Taak in de sectie Taken. U kunt de taak controleren terwijl deze wordt uitgevoerd, of u kunt wachten totdat de taak is voltooid om de geschiedenis ervan te controleren.

    Wacht tot de taak is voltooid.

  7. Selecteer Functie.

    Schermopname van Azure DevOps met de taakpagina, met het menu-item Taak gemarkeerd.

  8. Selecteer 1 gebruikte tijdsvariabele in de wachtrij.

    Schermopname van Azure DevOps met het pijplijnlogboek, met het item '1 gebruikte wachtrijtijdvariabele' gemarkeerd.

    De genegeerde waarde voor deze pijplijnuitvoering wordt weergegeven. De waarde van de DeployToyManualsStorageAccount variabele is onwaar omdat u de oorspronkelijke waarde hebt overschreven.

  9. Controleer de rest van de pijplijnuitvoer.

    De pijplijn toont een geslaagde implementatie.

De implementatie controleren

  1. Ga naar de Azure Portal.

  2. Selecteer Resourcegroepen in het linkermenu.

  3. Selecteer ToyWebsite.

  4. Bekijk in Overzicht de implementatiestatus. U kunt zien dat één implementatie is geslaagd.

    Schermopname van Azure Portal met de resourcegroep met één geslaagde implementatie.

  5. Selecteer 1 geslaagd om de details van de implementatie te bekijken.

    Schermopname van Azure Portal met de implementatiegeschiedenis van de resourcegroep, met de implementatie gemarkeerd.

    De implementatienaam is hetzelfde als de naam van de pijplijnuitvoering.

  6. Als u wilt zien welke resources zijn geïmplementeerd, selecteert u de implementatie. Als u de implementatie wilt uitbreiden om meer details te zien, selecteert u Implementatiedetails. In dit geval is er een Azure-app Service-plan en een app.

    Schermopname van Azure Portal met de details van de implementatie van de resourcegroep, met de App Service-resources gemarkeerd.