Tutoriel : déployer une application Java sur un groupe de machines virtuelles identiques
Azure DevOps Services
Un groupe de machines virtuelles identiques vous permet de déployer et de gérer des machines virtuelles identiques à mise à l’échelle automatique.
Les machines virtuelles sont créées en fonction des besoins dans un groupe identique. En définissant des règles, vous pouvez contrôler quand et comment les VM sont ajoutées au groupe identique ou supprimées de celui-ci. Ces règles peuvent être déclenchées en fonction de métriques telles que la charge du processeur, l’utilisation de la mémoire ou le trafic réseau.
Dans ce tutoriel, vous générez une application Java et la déployez sur un groupe de machines virtuelles identiques. Vous allez apprendre à effectuer les actions suivantes :
- Créer un groupe de machines virtuelles identiques
- Générer une image de machine
- Déployer une image personnalisée sur un groupe de machines virtuelles identiques
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.
- Tâche DevOps Azure VM Image Builder installée pour votre organisation DevOps.
- Référentiel GitHub dupliqué avec l’exemple de projet. Dupliquez pipelines-vmss repository.
Configurer votre pipeline Java
Connectez-vous à votre organisation Azure DevOps et accédez à votre projet.
Accédez à Pipelines, puis sélectionnez Nouveau pipeline ou Création d’un pipeline si vous créez votre premier pipeline.
Effectuez les étapes de l’Assistant en sélectionnant d’abord GitHub comme emplacement du code source.
Vous serez peut-être redirigé vers GitHub pour vous connecter. Si c’est le cas, entrez vos informations d’identification GitHub.
Quand la liste des dépôts s’affiche, sélectionnez le vôtre.
Vous serez peut-être redirigé vers GitHub pour pouvoir installer l’application Azure Pipelines. Si c’est le cas, sélectionnez Approuver et installer.
Lorsque l’onglet Configurer s’affiche, sélectionnez Maven.
Personnaliser le pipeline
Quand votre nouveau pipeline s’affiche, examinez le code YAML pour voir ce qu’il fait. Lorsque vous êtes prêt, sélectionnez Enregistrer et exécuter.
Vous êtes invité à valider un nouveau fichier azure-pipelines.yml dans votre référentiel. Une fois que vous êtes satisfait du message, sélectionnez Enregistrer et exécuter.
Si vous souhaitez voir votre pipeline en action, sélectionnez le travail de build.
Vous venez de créer et d’exécuter un pipeline créé automatiquement pour vous, car votre code semblait correspondre au modèle Maven.
Votre référentiel comprend maintenant un pipeline YAML (
azure-pipelines.yml
) opérationnel et prêt à être personnalisé !Lorsque vous êtes prêt à apporter des modifications à votre pipeline, sélectionnez-le sur la page Pipelines, puis modifiez le fichier
azure-pipelines.yml
.
Ajouter les tâches Copier des fichiers et publier des artefacts de build
Mettez à jour votre pipeline pour inclure la tâche
CopyFiles@2
. Cela crée un artefact que vous pouvez déployer dans votre groupe de machines virtuelles identiques.trigger: none pool: vmImage: 'ubuntu-latest' steps: - task: Maven@4 inputs: mavenPomFile: 'pom.xml' mavenOptions: '-Xmx3072m' javaHomeOption: 'JDKVersion' jdkVersionOption: '1.8' jdkArchitectureOption: 'x64' publishJUnitResults: true testResultsFiles: '**/surefire-reports/TEST-*.xml' goals: 'package' - task: CopyFiles@2 displayName: 'Copy File to: $(TargetFolder)' inputs: SourceFolder: '$(Build.SourcesDirectory)' Contents: | **/*.sh **/*.war **/*jar-with-dependencies.jar TargetFolder: '$(System.DefaultWorkingDirectory)/pipeline-artifacts/' flattenFolders: true
Créer une image personnalisée et la charger dans Azure
Vous avez besoin d’un groupe de ressources, d’un compte de stockage et d’une galerie d’images partagées pour votre image personnalisée.
Créez un groupe de ressources avec la commande az group create. Cet exemple crée un groupe de ressources nommé myVMSSResourceGroupdans l’emplacement eastus2 :
az group create --name myVMSSResourceGroup --location eastus2
Créez un compte de stockage. Cet exemple crée un compte de stockage :
vmssstorageaccount
.az storage account create \ --name vmssstorageaccount \ --resource-group myVMSSResourceGroup \ --location eastus2 \ --sku Standard_LRS
Créer une galerie d’images partagées.
az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Créez une nouvelle galerie d’images dans la ressource
myVMSSGallery
. Consultez Créer une Azure Shared Image Gallery à l’aide du portail pour en savoir plus sur l’utilisation des galeries d’images.az sig create --resource-group myVMSSResourceGroup --gallery-name myVMSSGallery
Créez une définition d’image. Copiez la valeur
id
de la nouvelle image qui ressemble à/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImage
.az sig image-definition create -g myVMSSResourceGroup --gallery-name myVMSSGallery --gallery-image-definition MyImage --publisher GreatPublisher --offer GreatOffer --sku GreatSku --os-type linux
Créer une identité managée
Créez une identité managée dans votre groupe de ressources.
az identity create -g myVMSSResourceGroup -n myVMSSIdentity
À partir de la sortie, copiez la valeur
id
. La valeurid
ressemble à/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>
.Ouvrez votre galerie d’images dans la galerie et attribuez la valeur
myVMSSIdentity
au rôle Contributeur. Suivez ces étapes pour ajouter une attribution de rôle.
Créer l’image personnalisée
Pour créer une image personnalisée, vous pouvez utiliser la tâche DevOps Azure VM Image Builder.
Ajoutez la tâche
AzureImageBuilderTask@1
à votre fichier YAML. Remplacez les valeurs<SUBSCRIPTION ID>
,<RESOURCE GROUP>
,<USER ASSIGNED IDENTITY NAME>
par vos propres valeurs. Veillez à vérifier que les valeursgalleryImageId
,managedIdentity
andstorageAccountName
sont exactes.- task: AzureImageBuilderTask@1 displayName: 'Azure VM Image Builder Task' inputs: managedIdentity: '/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER ASSIGNED IDENTITY NAME>' imageSource: 'marketplace' packagePath: '$(System.DefaultWorkingDirectory)/pipeline-artifacts' inlineScript: | sudo mkdir /lib/buildArtifacts sudo cp "/tmp/pipeline-artifacts.tar.gz" /lib/buildArtifacts/. cd /lib/buildArtifacts/. sudo tar -zxvf pipeline-artifacts.tar.gz sudo sh install.sh storageAccountName: 'vmssstorageaccount2' distributeType: 'sig' galleryImageId: '/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImage/versions/0.0.$(Build.BuildId)' replicationRegions: 'eastus2' ibSubscription: '<SUBSCRIPTION ID>' ibAzureResourceGroup: 'myVMSSResourceGroup' ibLocation: 'eastus2'
Exécutez le pipeline pour générer votre première image. Vous devez peut-être autoriser les ressources pendant l’exécution du pipeline.
Accédez à la nouvelle image dans le portail Azure et ouvrez Aperçu. Sélectionnez Créer un VMSS pour créer un nouveau groupe de machines virtuelles identiques à partir de la nouvelle image. Définissez Nom du groupe de machines virtuelles identiques sur
vmssScaleSet
. Consultez Créer un groupe de machines virtuelles identiques dans le portail Azure pour en savoir plus sur la création de groupes de machines virtuelles identiques dans le portail Azure.
Déployer des mises à jour dans le groupe de machines virtuelles identiques
Ajoutez une tâche Azure CLI à votre pipeline pour déployer des mises à jour dans le groupe identique. Ajoutez la tâche à la fin du pipeline. Remplacez <SUBSCRIPTION ID>
par votre ID d’abonnement.
- task: AzureCLI@2
inputs:
azureSubscription: '`YOUR_SUBSCRIPTION_ID`' #Authorize and in the task editor
ScriptType: 'pscore'
scriptLocation: 'inlineScript'
Inline: 'az vmss update --resource-group myVMSSResourceGroup --name vmssScaleSet --set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/<SUBSCRIPTION ID>/resourceGroups/myVMSSResourceGroup/providers/Microsoft.Compute/galleries/myVMSSGallery/images/MyImage/versions/0.0.$(Build.BuildId)'
Nettoyer les ressources
Accédez au portail Azure et supprimez votre groupe de ressources, myVMSSResourceGroup
.
Étapes suivantes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour