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:
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een actieve Azure DevOps-organisatie. Meld u aan voor Azure Pipelines.
- (Voor Bicep-implementaties) Een bestaande resourcegroep. Maak een resourcegroep met Azure Portal, Azure CLI of Azure PowerShell.
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:
- Microsoft.Web/serverfarms
- Microsoft.Web/sites
- Microsoft.DBforMySQL/servers
- Microsoft.DBforMySQL/servers/firewallrules
- Microsoft.DBforMySQL/servers/databases
Uw pijplijn maken en uw sjabloon implementeren
Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project. Maak een project als u er nog geen hebt.
Ga naar Pijplijnen en selecteer Vervolgens Pijplijn maken.
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.
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.
Wanneer het tabblad Configureren wordt weergegeven, selecteert u
Starter pipeline
.Vervang de inhoud van uw pijplijn door deze code:
trigger: - none pool: vmImage: 'ubuntu-latest'
Maak drie variabelen:
siteName
,administratorLogin
enadminPass
.adminPass
moet een geheime variabele zijn.- Selecteer Variabelen.
- Gebruik het
+
teken om drie variabelen toe te voegen. Wanneer u maaktadminPass
, 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 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'
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)'
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 om
ARMPipelinesLAMP-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 danComplete
.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'
-
Implementatiebereik (deploymentScope):stel het implementatiebereik in op
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
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.U kunt de resources ook verifiëren met behulp van Azure CLI.
az resource list --resource-group ARMPipelinesLAMP-rg --output table
Ga naar uw nieuwe site. Als u instelt
siteName
oparmpipelinetestsite
, bevindt de site zich ophttps://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
, overrideParameters
en deploymentMode
verwijderen.
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>'