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 :

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 :

Créer votre pipeline et déployer votre modèle

  1. Connectez-vous à votre organisation Azure DevOps et accédez à votre projet. Créez un projet si vous n’en avez pas encore.

  2. Accédez à Pipelines, puis sélectionnez Créer un pipeline.

  3. 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.

  4. 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.

  5. Lorsque l’onglet Configurer s’affiche, sélectionnez Starter pipeline.

  6. Remplacez le contenu de votre pipeline par ce code :

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Créez trois variables : siteName, administratorLogin et adminPass. adminPass doit être une variable secrète.

    • Sélectionnez Variables.
    • Utilisez le signe + pour ajouter trois variables. Lorsque vous créez adminPass, sélectionnez Conserver cette valeur secrète.
    • Cliquez ensuite sur Enregistrer .
    Variable Valeur Secret ?
    siteName mytestsite Non
    adminUser fabrikam No
    adminPass Fqdn:5362! Yes
  8. 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'
    
  9. 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)'
    
  10. 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 que Complete. Le mode Validate 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'
    
  11. 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

  1. 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.

    Ressources de modèle ARM dans le portail Azure

    Vous pouvez également vérifier les ressources à l’aide d’Azure CLI.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Accédez à votre nouveau site. Si vous définissez siteName sur armpipelinetestsite, le site se trouve à l’emplacement https://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>'

Étapes suivantes