Créez vos premières machines virtuelles

Cet article est dans la continuité de l’article dédié à Azure Migrate publié la semaine dernière. Dans celui-ci, je vous propose un second exercice, à pratiquer par vous-même, sur 2 services de calcul Azure : machines virtuelles indépendantes et groupes de machines virtuelles identiques.

Cet atelier va vous aider à comprendre la création de ces deux composants. Dans cet article, l’explicatif n’est pas très détaillé car plusieurs articles sur ce blog en parlent déjà :

Cet exercice est disponible sur la page GitHub de Microsoft juste ici. Voici la liste des tâches que nous allons réaliser :

  • Machine virtuelle :
    • Tâche 1 : Déployer des machines virtuelles (Portail / Template)
    • Tâche 2 : Configurez un rôle IIS (Portail / Script)
    • Tâche 3 : Modifiez la taille et le stockage d’une machine virtuelle
  • Groupe de machines virtuelles identiques :
    • Tâche 4 : Déployez un groupe de machines virtuelles identiques
    • Tâche 5 : Configurez un rôle IIS
    • Tâche 6 : Modifiez la taille de VMs du groupe
    • Tâche 7 : Mise en place d’un plan d’autoscalling

Le schéma ci-dessous correspond aux ressources Azure que nous allons déployer.

Bien souvent, une ressource déployée entraîne un début de tarification par Microsoft. Il est donc important de correctement dimensionner les ressources, et de les supprimer si ces dernières ne sont plus utilisées.

Rappel des prérequis :

Pour réaliser cet exercice Azure, il vous faudra disposer de :

  • Un tenant Microsoft
  • Une souscription Azure active
  • Compte de stockage pour les scripts

Des scripts en PowerShell seront exécutés durant cet atelier. Commencez par télécharger et extraire les fichiers scripts disponibles sur le GitHub de Microsoft juste ici.

Retournez sur votre portail Azure, puis recherchez le service Compte de stockage Azure :

Commencez la création en remplissant tous les champs nécessaires comme ceci.

Notez que le nom du compte de stockage est unique à travers tout Azure, choisissez un nom au hasard et encore disponible.

Cliquez sur Créer pour commencer le processus de création des ressources :

Attendez que la création du compte de stockage se termine, puis cliquez ici pour le consulter :

Cliquez ici pour ajouter un premier container blob dans votre compte de stockage, puis nommez le Script :

Cliquez sur Téléverser pour ajouter votre premier blob, qui sera un script PowerShell :

Choisissez le fichier script nommé az104-08-install_IIS.ps1, issue de l’archive téléchargée depuis GitHub :

Cliquez sur Téléverser pour lancer l’opération de transfert vers Azure :

La tâche de préparation est maintenant terminée, nous allons pouvoir commencer la création de notre première machine virtuelle Azure.

Tâche I – Déployer des machines virtuelles (Portail / Template) :

Les machines Virtuelles Azure constituent l’un des types de ressources informatiques scalables et à la demande proposées par Azure. En règle générale, une machine virtuelle convient bien si vous avez besoin de davantage de contrôle de votre environnement informatique

Microsoft Learn

Toujours sur votre portail Azure, recherchez le composant Machine Virtuelle :

Remplissez les champs suivants, puis passez sur l’onglet Disques :

Sur cet onglet, laissez les valeurs par défaut et passez directement à l’onglet Réseau :

Modifiez la configuration réseau proposée en cliquant ici :

Remplacez les valeurs par défaut avec les masques de réseau et sous-réseau suivants, puis cliquez sur OK :

Ouvrez le port 80 utilisé pour le protocole HTTP, puis cliquez sur Suivant :

Retirer la case cochée pour éteindre automatiquement la machine virtuelle, changez les mises à jour Windows sur Manuel, puis cliquez sur Suivant :

Choisissez le compte de stockage créé précédemment pour sauvegarder le diagnostic de démarrage de votre machine virtuelle :

Une fois la validation passée, cliquez sur Créer :

Environ 2 minutes plus tard, la première machine virtuelle est créée.

Cliquez sur Template pour comprendre un peu mieux la configuration établie par vous-même :

Cliquez sur Déployer pour réutiliser ce template sur une seconde machine virtuelle :

Changez certaines variables du template afin que la nouvelle machine virtuelle soit créée indépendamment de la première :

  • Nom de l’interface réseau
  • Nom de l’adresse IP publique
  • Nom de la machine virtuelle,
  • Nom de la machine virtuelle1
  • Nom de l’ordinateur de la machine virtuelle
  • Mot de passe administrateur
  • Zone de disponibilité

Attendez que la validation se termine, puis lancez la création de la seconde machine virtuelle en cliquant sur Créer :

Environ deux minutes plus tard, le déploiement est terminé lorsque le message suivant apparaît :

Vos deux machines virtuelles sont maintenant déployées, les tâches suivantes de modification de la configuration seront effectuées directement sur celles-ci.

Tâche II – Configurez un rôle IIS (Portail / Script) :

Toujours sur votre portail Azure, recherchez le composant Machine Virtuelle :

Sélectionner la première machine virtuelle appelée az104-08-vm0 :

Cliquez comme ceci pour ajouter une extension :

Choisissez le type d’extension Script personnalisé, puis cliquez sur Suivant :

Cliquez-ici pour parcourir les fichiers disponibles sur votre compte de stockage :

Choisissez le compte de stockage créé dans l’étape 0, puis reprenez le fichier de script PowerShell téléversé précédemment :

Cliquez-ici pour importer le script en tant qu’extension sur la machine virtuelle :

Validez la configuration de l’extension :

Cliquez ici pour mettre en place l’extension sur la machine virtuelle az104-08-vm0 :

Retournez sur la page principale de la machine virtuelle, puis copiez l’adresse IP publique de celle-ci :

Ouvrez un onglet de votre navigateur, collez l’adresse IP dans la barre d’adresse, puis constatez le court message généré par IIS :

Toujours sur votre portail Azure, retournez sur la liste des machines virtuelles, puis sélectionnez la seconde VM appelée az104-08-vm1.

Dans le menu Exporter le template, cliquez sur la fonction Déployer :

Cliquez ici pour modifier le template précédemment généré :

Recherchez la ligne de 20 du template, puis positionnez votre curseur avant la parenthèse ouvrante :

Collez les lignes de codes ci-dessous

     {
         "type": "Microsoft.Compute/virtualMachines/extensions",
         "name": "az104-08-vm1/customScriptExtension",
         "apiVersion": "2018-06-01",
         "location": "[resourceGroup().location]",
         "dependsOn": [
             "az104-08-vm1"
         ],
         "properties": {
             "publisher": "Microsoft.Compute",
             "type": "CustomScriptExtension",
             "typeHandlerVersion": "1.7",
             "autoUpgradeMinorVersion": true,
             "settings": {
                 "commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)"
           }
         }
     },

Une fois les lignes ajoutées, constatez la mise en forme comme l’image ci-dessous, puis cliquez sur Sauvegarder :

Cliquez-ici pour lancer la validation de votre template modifié :

Une fois la validation passée, cliquez sur Créer pour lancer la création des ressources modifiées :

Assez rapidement, le déploiement se termine :

Note : un template peut contenir des ressources Azure déjà existantes. La mise à jour de celles-ci n’intervient que sur les parties modifiées.

Retournez sur la page principale de la machine virtuelle, puis copiez l’adresse IP publique de celle-ci :

Ouvrez un onglet de votre navigateur, collez l’adresse IP dans la barre d’adresse, puis constatez le court message généré par IIS :

Vos deux machines virtuelles sont maintenant en place.

Dans la tâche 3, nous allons voir que d’autres modification de la configuration sont possibles sur les objets rattachés à celles-ci, comme ses disques, ou encore la puissance de la VM.

Tâche III – Modifiez la taille et le stockage d’une machine virtuelle :

Commençons par modifier la taille de la machine virtuelle. Pour cela, retournez sur la machine virtuelle, puis modifiez le SKU comme ceci :

Le redimensionnement occasionne un redémarrage de la machine virtuelle, comptez une minute environ pour retrouver le service opérationnel.

Continuez les modifications en ajoutant deux disques de données de 1024 GiB avec les noms suivants :

  • az104-08-vm0-datadisk-0
  • az104-08-vm0-datadisk-1

L’ajout ou la suppression de disque de données n’occasionne pas de redémarrage de la machine virtuelle.

Terminez les modifications en exécutant un script PowerShell directement sur la machine virtuelle via le portail Azure comme ceci :


New-StoragePool -FriendlyName storagepool1 -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)

New-VirtualDisk -StoragePoolFriendlyName storagepool1 -FriendlyName virtualdisk1 -Size 2046GB -ResiliencySettingName Simple -ProvisioningType Fixed

Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName virtualdisk1)

New-Partition -DiskNumber 4 -UseMaximumSize -DriveLetter Z

Cette commande créée un lecteur Z : composé des deux disques nouvellement attachés :

Le résultat du script correctement exécuté doit ressembler à cela :

Toujours sur votre portail Azure, retournez sur la liste des machines virtuelles, puis sélectionnez la seconde appelée az104-08-vm1.

Dans le menu Exporter le template, cliquez sur la fonction Déployer :

Cliquez ici pour modifier le template précédemment généré :

Recherchez la ligne de 30 du template, puis modifier la valeur correspondante à la taille de la machine virtuelle par celle-ci :

"vmSize": "Standard_DS1_v2"

Recherchez la ligne de 51 du template, puis sélectionnez celle-ci pour la remplacer :

                 "dataDisks": [
                   {
                     "lun": 0,
                     "name": "az104-08-vm1-datadisk0",
                     "diskSizeGB": "1024",
                     "caching": "ReadOnly",
                     "createOption": "Empty"
                   },
                   {
                     "lun": 1,
                     "name": "az104-08-vm1-datadisk1",
                     "diskSizeGB": "1024",
                     "caching": "ReadOnly",
                     "createOption": "Empty"
                   }
                 ]

Une fois les lignes ajoutées, constatez la mise en forme comme l’image ci-dessous, puis cliquez sur Sauvegarder :

Cliquez-ici pour lancer la validation de votre template modifié :

Une fois la validation passée, cliquez sur Créer pour lancer la création des ressources modifiées :

Assez rapidement, le déploiement se termine :

Terminez les modifications en exécutant un script PowerShell directement sur la machine virtuelle via le portail Azure comme ceci :

New-StoragePool -FriendlyName storagepool1 -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)

New-VirtualDisk -StoragePoolFriendlyName storagepool1 -FriendlyName virtualdisk1 -Size 2046GB -ResiliencySettingName Simple -ProvisioningType Fixed

Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName virtualdisk1)

New-Partition -DiskNumber 4 -UseMaximumSize -DriveLetter Z

Cette commande créée un lecteur Z : composé des deux disques nouvellement attachés :

Le résultat du script correctement exécuté doit ressembler à cela :

La première partie de cet atelier nous a permis de tester le déploiement de machines virtuelles via l’interface graphique du portail Azure, mais aussi par l’utilisation de scripts et de templates.

Cette seconde approche est intéressante pour l’automatisation des déploiements et évite des erreurs humaines dans la configuration manuelle de chaque composant.

Tâche IV – Déployez un groupe de machines virtuelles identiques :

Les groupes de machines virtuelles identiques Azure (ou Virtual Machine Scale Sets) vous permettent de créer et de gérer un groupe de machines virtuelles à charge équilibrée. Le nombre d’instances de machine virtuelle peut augmenter ou diminuer automatiquement en fonction d’une demande ou d’un calendrier défini.

Microsoft Doc

Sur votre portail Azure, recherchez le composant Groupe de machines virtuelles identiques :

Cliquez sur Créer :

Utilisez le même groupe de ressources que pour les tâches précédentes, puis nommez le groupe de machines virtuelles identique az10408vmss0 :

Remplissez les champs suivants, puis passez sur l’onglet Disques :

Sur l’onglet Disques, laissez les valeurs par défaut et passez directement à l’onglet Réseau.

Modifiez la configuration réseau proposée par défaut en cliquant ici :

Remplacez les valeurs par défaut avec les masques de réseau et sous-réseau suivants, puis cliquez sur OK :

Cliquez ici pour créer et personnaliser le Groupe de sécurité réseau (NSG) :

Ajoutez une seconde règle de traffic entrant :

Choisissez le service HTTP et nommez là custom-allow-http, puis cliquez sur Ajouter :

Cliquez sur OK pour valider la configuration de votre futur NSG :

Activez la création d’une adresse IP publique :

Cochez la case pour mettre en place un équilibreur de charge, puis passer à l’onglet Mise à l’échelle :

Indiquez à 2 le nombre initial d’instances puis passer à l’onglet suivant :

Choisissez le compte de stockage créé précédemment pour sauvegarder le diagnostic de votre groupe de machines virtuelles identiques, puis passez à l’onglet suivant :

Sur cet onglet, laissez les valeurs par défaut, puis passez directement à l’onglet Avancé:

Modifiez l’algorithme de diffusion utilisé, puis lancez la validation :

Une fois la validation passée, cliquez sur Créer :

Environ 2 minutes plus tard, le groupe de machines virtuelles identiques est créé :

Tâche V – Configurez un rôle IIS :

Comme pour les machines virtuelles indépendantes, cliquez comme ceci pour ajouter une extension :

Choisissez le type d’extension Script personnalisé, puis cliquez sur Suivant :

Choisissez le compte de stockage créé, puis reprenez le fichier de script PowerShell téléversé précédemment :

Retournez sur la page principale du groupe de machines virtuelles identiques, puis copiez l’adresse IP publique de celui-ci :

Ouvrez un onglet de votre navigateur, collez l’adresse IP dans la barre d’adresse puis constater le message d’erreur :

Pour remédier à cela, il est nécessaire de mettre à jour les machines virtuelles en place :

Attendez quelques minutes, puis rafraichissez la page de votre navigateur internet :

Tâche VI : Modifiez la taille de VMs du groupe :

Toujours sur votre groupe de machines virtuelles identiques, modifiez le SKU comme ceci :

Là encore, il est nécessaire de mettre à jour les machines virtuelles déjà en place :

Un clic sur une machine affiche bien la nouvelle taille :

Tâche VII – Mise en place d’un plan d’autoscalling :

Dans cette tâche, vous allez configurer un plan de mise à l’échelle du groupe de machines virtuelles identiques.

Pour cela, rendez-vous dans le menu suivant pour le mettre en place selon vos propres règles, puis ajoutez une première règle de mise à l’échelle :

Dans celle-ci, définissez la métrique utilisée pour votre mise à l’échelle, indiquez la valeur limite, puis cliquez sur OK :

Ajoutez une seconde règle de mise à l’échelle avec la même métrique utilisée, indiquez la même valeur limite, puis cliquez sur OK :

Indiquez les limites basses et hautes du nombre d’instances, puis sauvegardez votre plan de mise à l’échelle :

Constatez la suppression de la seconde instance créée précédemment :

Sur votre poste local, copiez le script ci-dessous en adaptant l’adresse IP publique nom du groupe de machines virtuelles :

$url = "http://20.203.242.169"
while ($true) {
try {
[net.httpWebRequest]
$req = [net.webRequest]::create($url)
$req.method = "GET"
$req.ContentType = "application/x-www-form-urlencoded"
$req.TimeOut = 60000

$start = get-date
[net.httpWebResponse] $res = $req.getResponse()
$timetaken = ((get-date) - $start).TotalMilliseconds

Write-Output $res.Content
Write-Output ("{0} {1} {2}" -f (get-date), $res.StatusCode.value__, $timetaken)
$req = $null
$res.Close()
$res = $null
} catch [Exception] {
Write-Output ("{0} {1}" -f (get-date), $_.ToString())
}
$req = $null

# uncomment the line below and change the wait time to add a pause between requests
#Start-Sleep -Seconds 1
}

Lancez le script PowerShell (une bonne dizaine de fois) sur votre poste et laissez-les tourner :

Constatez la création d’une seconde instance, voire d’une troisième :

Conclusion :

Dans cet atelier, vous avez :

  • Déployé des machines virtuelles en zone en utilisant le portail Azure et un template ARM
  • Configuré des machines virtuelles Azure en utilisant des extensions de machine virtuelle
  • Modifié la taille et le stockage pour les machines virtuelles Azure
  • Déployé un groupe de machines virtuelles Azure
  • Configuré le groupe de machines virtuelles en utilisant des extensions
  • Testé le plan de mise à l’échelle

J’espère que toutes opérations vous auront montré la facilité de déploiement à travers Azure. Enfin, pensez à supprimer les ressources une fois cet atelier terminé afin d’éviter les surcoûts :

Suppression des ressources Azure :

Un commentaire sur “Créez vos premières machines virtuelles

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *