Share via


Quickstart: Een ARM-sjabloon gebruiken om een Linux-web-app te implementeren in Azure

Azure DevOps Services

Ga aan de slag met Azure Resource Manager-sjablonen (ARM-sjablonen) door een Linux-web-app te implementeren met MySQL. MET ARM-sjablonen kunt u uw configuratie in code opslaan. Het gebruik van een ARM-sjabloon is een voorbeeld van infrastructuur als code en een goede DevOps-procedure.

Een Resource Manager-sjabloon is een JavaScript Object Notation-bestand (JSON) dat de infrastructuur en configuratie van uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. In declaratieve syntaxis beschrijft u de beoogde implementatie zonder dat u de reeks programmeeropdrachten voor het maken van de implementatie hoeft te schrijven.

U kunt de JSON- of Bicep-syntaxis gebruiken om Azure-resources te implementeren. Meer informatie over het verschil tussen JSON en Bicep voor sjablonen.

Vereisten

Voordat u begint, hebt u het volgende nodig:

Code ophalen

Fork deze opslagplaats op GitHub:

https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql

De sjabloon controleren

De sjabloon die in deze quickstart wordt gebruikt, komt uit Azure-quickstart-sjablonen.

De sjabloon definieert verschillende resources:

Uw pijplijn maken en uw sjabloon implementeren

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project. Maak een project als u er nog geen hebt.

  2. Ga naar Pijplijnen en selecteer Vervolgens Pijplijn maken.

  3. Selecteer GitHub als de locatie van uw broncode.

    Notitie

    U wordt mogelijk omgeleid naar GitHub om u aan te melden. Voer in dat geval uw GitHub-referenties in.

  4. Wanneer de lijst met opslagplaatsen wordt weergegeven, selecteert u yourname/azure-quickstart-templates/.

    Notitie

    U wordt mogelijk omgeleid naar GitHub om de Azure Pipelines-app te installeren. Als dat het zo is, selecteert u Goedkeuren en installeren.

  5. Wanneer het tabblad Configureren wordt weergegeven, selecteert u Starter pipeline.

  6. Vervang de inhoud van uw pijplijn door deze code:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Maak drie variabelen: siteName, administratorLoginen adminPass. adminPass moet een geheime variabele zijn.

    • Selecteer Variabelen.
    • Gebruik het + teken om drie variabelen toe te voegen. Wanneer u maakt adminPass, selecteert u Deze waarde geheim houden.
    • Klik op Opslaan wanneer u klaar bent.
    Variabele Waarde Geheim?
    siteName mytestsite Nee
    adminUser fabrikam Nee
    adminPass Fqdn:5362! Ja
  8. Wijs de geheime variabele $(adminPass) toe zodat deze beschikbaar is in de implementatietaak van uw Azure-resourcegroep. Wijs boven aan het YAML-bestand toe $(adminPass) aan $(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Voeg de taak Bestanden kopiëren toe aan het YAML-bestand. U gebruikt het 101-webapp-linux-managed-mysql project. Zie Een web-app bouwen in Linux met Azure Database for MySQL-opslagplaats voor meer informatie.

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
  10. De azure-resourcegroepimplementatietaak toevoegen en configureren.

    De taak verwijst naar het artefact dat u hebt gemaakt met de taak Bestanden kopiëren en uw pijplijnvariabelen. Stel deze waarden in bij het configureren van uw taak.

    • Implementatiebereik (deploymentScope):stel het implementatiebereik in op Resource Group. U kunt uw implementatie richten op een beheergroep, een Azure-abonnement of een resourcegroep.
    • Azure Resource Manager-verbinding (azureResourceManagerConnection): selecteer uw Azure Resource Manager-serviceverbinding. Als u een nieuwe serviceverbinding wilt configureren, selecteert u het Azure-abonnement in de lijst en klikt u op Autoriseren. Zie Verbinding maken met Microsoft Azure voor meer informatie
    • Abonnement (subscriptionId): selecteer het abonnement waar de implementatie naartoe moet gaan.
    • Actie (actie): stel in op Create or update resource group om een nieuwe resourcegroep te maken of om een bestaande resourcegroep bij te werken.
    • Resourcegroep: stel in op omARMPipelinesLAMP-rg de nieuwe resourcegroep een naam te geven. Als dit een bestaande resourcegroep is, wordt deze bijgewerkt.
    • Locatie(locatie): locatie voor het implementeren van de resourcegroep. Stel in op de dichtstbijzijnde locatie (bijvoorbeeld VS - west). Als de resourcegroep al in uw abonnement bestaat, wordt deze waarde genegeerd.
    • Sjabloonlocatie (templateLocation): stel in op Linked artifact. Dit is de locatie van uw sjabloon en de parametersbestanden.
    • Sjabloon (csmFile): stel in op $(Build.ArtifactStagingDirectory)/azuredeploy.json. Dit is het pad naar de ARM-sjabloon.
    • Sjabloonparameters (csmParametersFile): stel in op $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json. Dit is het pad naar het parameterbestand voor uw ARM-sjabloon.
    • Sjabloonparameters overschrijven (overrideParameters): stel in op -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) om de variabelen te gebruiken die u eerder hebt gemaakt. Deze waarden vervangen de parameters die zijn ingesteld in het bestand met sjabloonparameters.
    • Implementatiemodus (deploymentMode): de manier waarop resources moeten worden geïmplementeerd. Ingesteld op Incremental. Incrementeel behoudt resources die zich niet in de ARM-sjabloon bevinden en die sneller zijn dan Complete. Validate met de modus kunt u problemen met de sjabloon vinden voordat u de sjabloon implementeert.
    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    - task: CopyFiles@2
      inputs:
        SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
        Contents: '**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: AzureResourceManagerTemplateDeployment@3
      inputs:
        deploymentScope: 'Resource Group'
        azureResourceManagerConnection: '<your-resource-manager-connection>'
        subscriptionId: '<your-subscription-id>'
        action: 'Create Or Update Resource Group'
        resourceGroupName: 'ARMPipelinesLAMP-rg'
        location: '<your-closest-location>'
        templateLocation: 'Linked artifact'
        csmFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.json'
        csmParametersFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json'
        overrideParameters: '-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)'
        deploymentMode: 'Incremental'
    
  11. Klik op Opslaan en uitvoeren om de sjabloon te implementeren. De pijplijntaak wordt gestart en na enkele minuten, afhankelijk van uw agent, moet de taakstatus aangeven Success.

Geïmplementeerde resources bekijken

  1. Controleer of de resources zijn geïmplementeerd. Ga naar de ARMPipelinesLAMP-rg resourcegroep in de Azure Portal en controleer of u App Service, App Service Plan en Azure Database for MySQL serverresources ziet.

    ARM-sjabloonresources in de Azure Portal

    U kunt de resources ook verifiëren met behulp van Azure CLI.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Ga naar uw nieuwe site. Als u instelt siteName op armpipelinetestsite, bevindt de site zich op https://armpipelinetestsite.azurewebsites.net/.

Resources opschonen

U kunt ook een ARM-sjabloon gebruiken om resources te verwijderen. Wijzig de action waarde in de implementatietaak van uw Azure-resourcegroep in DeleteRG. U kunt ook de invoer voor templateLocation, csmFile, csmParametersFile, overrideParametersen deploymentModeverwijderen.

variables:
  ARM_PASS: $(adminPass)

trigger:
- none

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: CopyFiles@2
  inputs:
    SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
    Contents: '**'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: AzureResourceManagerTemplateDeployment@3
  inputs:
    deploymentScope: 'Resource Group'
    azureResourceManagerConnection: '<your-resource-manager-connection>'
    subscriptionId: '<your-subscription-id>'
    action: 'DeleteRG'
    resourceGroupName: 'ARMPipelinesLAMP-rg'
    location: ''<your-closest-location>'

Volgende stappen