Démarrage rapide : Utiliser un modèle ARM pour déployer une application web Linux sur Azure
Azure DevOps Services
Prise en main des modèles Azure Resource Manager (modèles ARM) en déployant une application web Linux avec MySQL. Les modèles ARM vous permettent d’enregistrer votre configuration dans le code. L’utilisation d’un modèle ARM est un exemple d’infrastructure en tant que code et une bonne pratique DevOps.
Un modèle ARM est un fichier JSON (JavaScript Object Notation) qui définit l’infrastructure et la configuration de votre projet. Le modèle utilise la syntaxe déclarative. Dans la syntaxe déclarative, vous décrivez le déploiement souhaité sans écrire la séquence de commandes de programmation pour créer le déploiement.
Vous pouvez utiliser la syntaxe Bicep ou JSON pour déployer des ressources Azure. En savoir plus sur la différence entre JSON et Bicep pour les modèles.
Prérequis
Avant de commencer, vous avez besoin des éléments suivants :
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Organisation Azure DevOps active. Inscrivez-vous à Azure Pipelines.
- (Pour les déploiements Bicep) Un groupe de ressources existant. Créer un groupe de ressources avec le Portail Azure, l’interface de ligne de commande Azure ou Azure PowerShell.
Obtenir le code
Dupliquer ce référentiel sur GitHub :
https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql
Vérifier le modèle
Le modèle utilisé dans ce démarrage rapide est tiré des modèles de démarrage rapide Azure.
Le modèle définit plusieurs ressources :
- Microsoft.Web/serverfarms
- Microsoft.Web/sites
- Microsoft.DBforMySQL/servers
- Microsoft.DBforMySQL/servers/firewallrules
- Microsoft.DBforMySQL/servers/databases
Créer votre pipeline et déployer votre modèle
Connectez-vous à votre organisation Azure DevOps et accédez à votre projet. Créez un projet si vous n’en avez pas encore.
Accédez à Pipelines, puis sélectionnez Créer un pipeline.
Sélectionnez GitHub comme emplacement de votre code source.
Notes
Vous pouvez être redirigé vers GitHub pour vous connecter. Si c’est le cas, entrez vos informations d’identification GitHub.
Quand la liste des référentiels s’affiche, sélectionnez
yourname/azure-quickstart-templates/
.Notes
Vous pouvez être redirigé vers GitHub pour installer l’application Azure Pipelines. Si c’est le cas, sélectionnez Approve and install.
Lorsque l’onglet Configurer s’affiche, sélectionnez
Starter pipeline
.Remplacez le contenu de votre pipeline par ce code :
trigger: - none pool: vmImage: 'ubuntu-latest'
Créez trois variables :
siteName
,administratorLogin
etadminPass
.adminPass
doit être une variable secrète.- Sélectionnez Variables.
- Utilisez le signe
+
pour ajouter trois variables. Lorsque vous créezadminPass
, sélectionnez Conserver cette valeur secrète. - Cliquez ensuite sur Enregistrer .
Variable Valeur Secret ? siteName mytestsite
Non adminUser fabrikam
No adminPass Fqdn:5362!
Yes Mappez la variable secrète
$(adminPass)
afin qu’elle soit disponible dans votre tâche de déploiement de groupe de ressources Azure. En haut de votre fichier YAML, mappez$(adminPass)
à$(ARM_PASS)
.variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest'
Ajoutez la tâche Copier des fichiers au fichier YAML. Vous allez utiliser le projet
101-webapp-linux-managed-mysql
. Pour plus d’informations, consultez le référentiel Générer une application web sur Linux avec une base de données Azure pour MySQL pour plus d’informations.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)'
Ajouter et configurer la tâche Déploiement de groupe de ressources Azure.
La tâche fait référence à la fois à l’artefact que vous avez créé avec la tâche Copier les fichiers et à vos variables de pipeline. Définissez ces valeurs lors de la configuration de votre tâche.
-
Étendue de déploiement (deploymentScope) : définissez l’étendue de déploiement sur
Resource Group
. Vous pouvez cibler votre déploiement au niveau d’un groupe d’administration, d’un abonnement Azure ou d’un groupe de ressources. - Connexion Azure Resource Manager (azureResourceManagerConnection) : sélectionnez votre connexion de service Azure Resource Manager. Pour configurer une nouvelle connexion de service, sélectionnez l’abonnement Azure dans la liste, puis cliquez sur Autoriser. Pour plus d’informations, consultez Se connecter à Microsoft Azure
- Abonnement (subscriptionId) : sélectionnez l’abonnement dans lequel le déploiement doit aller.
-
Action (action) : La valeur
Create or update resource group
permet de créer un groupe de ressources ou de mettre à jour un groupe de ressources existant. -
Groupe de ressources : Sélectionnez
ARMPipelinesLAMP-rg
pour nommer votre nouveau groupe de ressources. S’il s’agit d’un groupe de ressources existant, il sera mis à jour. - Emplacement(location) : emplacement pour le déploiement du groupe de ressources. Définissez votre emplacement le plus proche (par exemple, USA Ouest). Si le groupe de ressources existe déjà dans votre abonnement, cette valeur est ignorée.
-
Emplacement du modèle (templateLocation) : défini sur
Linked artifact
. Il s’agit de l’emplacement de votre modèle et des fichiers de paramètres. -
Modèle (csmFile) : défini sur
$(Build.ArtifactStagingDirectory)/azuredeploy.json
. Il s’agit du chemin d’accès au modèle ARM. -
Paramètres de modèle (csmParametersFile) : défini sur
$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json
. Il s’agit du chemin d’accès au fichier de paramètres de votre modèle ARM. -
Remplacer les paramètres de modèle (overrideParameters) : défini sur
-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)
pour utiliser les variables que vous avez créées précédemment. Ces valeurs remplaceront les paramètres définis dans votre fichier de paramètres de modèle. -
Mode de déploiement (deploymentMode) : la façon dont les ressources doivent être déployées. Défini sur
Incremental
. L’incrémentiel conserve les ressources qui ne se trouvent pas dans le modèle ARM et est plus rapide queComplete
. Le modeValidate
vous permet de trouver des problèmes avec le modèle avant le déploiement.
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'
-
Étendue de déploiement (deploymentScope) : définissez l’étendue de déploiement sur
Cliquez sur Enregistrer et exécuter pour déployer votre modèle. La tâche de pipeline est lancée et après quelques minutes, selon votre agent, l’état du travail devrait indiquer
Success
.
Vérifier les ressources déployées
Vérifiez que les ressources ont été déployées. Accédez au groupe de ressources
ARMPipelinesLAMP-rg
dans le portail Azure et vérifiez que vous voyez les ressources du serveur App Service, plan App Service et Azure Database pour MySQL.Vous pouvez également vérifier les ressources à l’aide d’Azure CLI.
az resource list --resource-group ARMPipelinesLAMP-rg --output table
Accédez à votre nouveau site. Si vous définissez
siteName
surarmpipelinetestsite
, le site se trouve à l’emplacementhttps://armpipelinetestsite.azurewebsites.net/
.
Nettoyer les ressources
Vous pouvez également utiliser un modèle ARM pour supprimer des ressources. Modifiez la valeur action
dans votre tâche de déploiement de groupe de ressources Azure en DeleteRG
. Vous pouvez également supprimer les entrées pour templateLocation
, csmFile
, csmParametersFile
, overrideParameters
, et deploymentMode
.
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>'