WordPress sur Azure

Une fois n’est pas coutume, je vais vous parler d’Azure ????????

J’ai commencé ce blog il y a maintenant plusieurs mois, et je prends toujours du plaisir à écrire des articles sur Azure. Depuis quelques semaines, je rencontre des problèmes de performances rendant l’accès au site très variable, surtout en matinée. OVH n’a pu résoudre mon souci malgré mon changement de formule. ????

J’ai donc décidé de franchir le pas en rapatriant mon blog sur Azure. Si vous souhaitez aussi créer des ressources Azure sans forcément dépenser un centime, sachez que plusieurs méthodes sont possibles.

Dans mon cas, le statut MCT m’apporte un grand nombre d’avantages de la part de Microsoft, dont justement des crédits Azure, directement disponibles sur la page Visual Studio :

Etape I : Création des ressources Azure

Une fois l’activation des crédits Azure sur un tenant nouveau ou existant, commencez la création de votre site WordPress directement depuis le portail Azure :

Une recherche de WordPress vous affiche un grand nombre de résultats. Il est en effet possible de mettre en place un site web via différents types de service Azure (IaaS, PaaS, …) :

Dans cet article, nous allons nous intéresser au service Azure App Service. Celui-ci crée, déploie et met à l’échelle rapidement des applications Web, mobiles et API de niveau entreprise s’exécutant sur n’importe quelle plate-forme.

Voici une démo assez complète du service :

Merci Adam ????.

Choisissez donc l’article édité par WordPress :

La création des ressources Azure via ce template WordPress est assez simple et rapide et peu de champs sont à remplir :

  • Souscription Azure : « ligne de crédit » utilisée pour positionner la ressource
  • Groupe de ressources : conteneur logique pour l’organiser les ressources
  • Région : Localisation physique de vos données
  • Nom de l’instance : nom de l’application web, mais aussi URL de base du site créé WordPress créé par Azure

Une fois les champs validés, la synthèse avant création est affichée sur le dernier onglet :

Lancez la création des ressources Azure en cliquant sur Créer.

Moins de 10 minutes plus tard, Azure a fini. Cliquez ici pour afficher votre application web :

Vous retrouvez à droite l’URL de votre site web. Cliquez dessus pour ouvrir un nouvel onglet :

Les habitués reconnaitront tout de suite la page d’installation de WordPress. Finalement, quelques clics seulement suffisent pour installer WordPress sur Azure :

On a déjà terminé la lecture de cet article ? Pas encore ????

En faisant un tour sur le groupe de ressources, voici ce que le template a créé pour vous :

Les deux premiers sont des éléments de base pour faire fonctionner une application web sur Azure. Le template WordPress a donc aussi créé une base MySQL Database, pour y stocker le contenu de votre site.

C’est assez logique, MySQL est un des choix possibles pour faire fonctionner WordPress. Voici d’ailleurs un exemple des tables contenues dans WordPress :

En ouvrant la ressource MySQL Database, on peut y voir que la configuration attribuée par défaut via ce template n’est pas des moins chères !

Un tour dans les modèles de prix nous permet d’avoir une meilleure idée de son coût mensuel :

Evidemment, la baisse du nombre de cœurs pour MySQL n’ira pas en dessous de 2. De plus il est impossible de repasser sur une édition Basique ????:

Un petite tour nous permet alors de nous faire une idée du coût de l’ensemble :

  • App Service Plan : P1V2 (Windows) : 35.09 € / mois
  • MySQL : 4 vCore / 100GB (General Purpose) : 263.63 € / mois

Dans mon cas, le besoin n’est pas encore présent pour justifier une telle architecture. Mais comment faire pour partir sur des SKUs MySQL plus petits ?

Pour cela, nans allons réutiliser le template déployé juste avant, le modifier et le relancer pour un nouveau déploiement Azure.

Etape II : Suppression des ressources Azure

Retournez sur le groupe de ressources et cliquez ici :

Cet écran vous affiche l’historique des précédents déploiements passés, réussis ou échoués :

Avant d’en relancer un nouveau, supprimez les ressources existantes créées par ce template WordPress. Validez la suppression des ressources Azure comme ceci :

Note : relancer un template sur des ressources existantes ne posent pas de souci en soi. Les ressources existantes sont alors « modifiées » selon le nouveau template.

Etape III : Relancez le déploiement du template

Une fois les ressources Azure supprimées, retournez sur l’écran précédent et cliquez sur le déploiement :

Cliquez sur Redéployer :

Vous retrouvez alors ici toutes les informations SKUs des ressources créées :

Dans mon cas, je n’ai modifié que les informations de la base de données MySQL. Pour cela, j’ai donc rectifié les valeurs suivantes :

  • vmName : B_Gen5_1
  • serverEdition : Basic
  • vCores : 1

Voici donc le bas de page de ma configuration :

Cliquez pour valider le template et lancer le déploiement :

Quelques minutes plus tard, vous retrouvez toutes les ressources Azure dont toujours une base de données MySQL, mais avec un SKU bien moins cher ???? :

Etape IV : Configuration WordPress

Retournez alors sur votre application web afin de terminer l’installation de WordPress. Choisissez la langue qui vous convient puis cliquez sur Continuer :

Terminez en renseignant les derniers champs pour finaliser l’installation :

Une fois authentifié avec votre nouveau compte administrateur, vous voici sur votre console d’administration WordPress :

Etape V : Ajout d’un nom de domaine personnalisé

Toujours en rapport avec Azure, il me parait important d’ajouter un nom de domaine personnalisé et de sécuriser les connexions. Pour cela, retournez sur votre application web Azure, puis cliquez ici :

Vous ne pouvez acheter des domaines directement depuis Azure. Des sites comme GoDaddy ou encore Domain.com proposent ce type de service. Pour ma part, j’utilise régulièrement le site Freenom pour acheter des domaines gratuits dans le but de tests.

Une fois le domaine acheté, pensez à ajouter le domaine sur votre application web Azure pour ensuite ajoutez les enregistrements DNS nécessaires :

Les informations ci-dessus sont nécessaires pour configurer les enregistrements DNS sur mon nouveau domaine. Quelques minutes d’attente et une validation plus tard, le nouveau domaine passe au vert. Finalisez l’ajout de ce dernier :

Etape VI : Ajout d’un certificat TLS

Ce nouveau domaine ne dispose pas encore de certificat TLS comme l’indique la copie d’écran ci-dessous. Cliquez sur les paramétrages TLS/SSL pour corriger cela :

Cliquez alors sur la seconde section, puis sur Créer un certificat managé et choisissez le domaine ajouté puis cliquez sur Créer :

Ce processus prend plusieurs minutes. Une fois terminé, retournez dans vos Domaines personnalisés, puis cliquez ici :

Sélectionnez les éléments dans la liste pour les associer entre eux. Le choix du type pourra se faire selon cet article Microsoft. Cliquez ici pour valider le lien :

Votre nouveau domaine gère bien maintenant la sécurité TLS. Profitez-en alors pour activer cette option :

Autant rester sur le sujet TLS/SSL en activant aussi cette exigence sur votre base de données MySQL :

En retournant sur l’application web, on remarque que l’URL présente sur la page principale reprend maintenant le domaine personnalisé avec le protocole HTTPS. Une fois sur votre site, consultez les détails du certificat généré par GeoTrust :

Etape VI : Activation d’Azure Backup

Toujours dans la configuration, profitez-en pour activer la sauvegarde via Azure Backup :

La sauvegarde de vos données va alors se faire sur une compte de stockage Blob :

Vous pouvez le créer directement ici si nécessaire en cliquant ici. Le nom de celui-ci doit être unique sur Azure :

Sélectionnez ce nouveau compte de stockage pour créer après coup un nouveau conteneur, puis validez :

Définissez votre police de sauvegarde, puis validez là :

Vous pouvez cliquer dès à présent ici pour effectuer votre première sauvegarde manuelle. Les autres suivront automatiquement, en fonction de votre police de sauvegarde :

Allez dans le compte de stockage pour constater l’apparition des fichiers de sauvegarde :

L’architecture est maintenant en place, il ne vous reste plus qu’à utiliser votre console WordPress ????

Conclusion

Cette mise en œuvre d’un site WordPress sur Azure n’est pas des plus compliquée. Microsoft vous simplifie grandement le travail. D’autres articles vont suivre sur le sujet car je souhaite aussi aborder la migration des données ou encore l’optimisation de l’architecture et la mise en place d’autres métriques.

Changer la taille du disque OS sur une machine virtuelle via [smalldisk] / Resize

Azure VM | Microsoft Power Automate

Des machines virtuelles sont créées en permanence sur Azure, et très régulièrement sur Windows Serveur. Sans se poser de question, le choix de l’image présélectionne sans votre avis la taille du disque OS, sans aucun pouvoir de modification.

Mais comment faire si l’on souhaite autre chose que la taille par défaut de 128GB pour notre lecteur C ?

Nous allons voir ensemble dans cet article les différentes possibilités, avant et après la création d’une machine virtuelle, pour changer très facilement la taille du disque OS.

Cas classique : Image Windows Server

Commençons par le cas standard, la création d’une machine virtuelle avec Windows Serveur entraîne la création d’un disque OS.

Sélectionnons ici par exemple une image source Windows Server 2019.

Dans le second onglet de création de la machine virtuelle, je n’ai pas de choix concernant la taille de mon disque OS :

Cet onglet me propose de choisir les performances du disque OS, mais pas sa taille. La taille est par contre bien un choix disponible sur les disques de données ajoutés.

Rappel : les performances du disque vont influer sur la SLA de la machine virtuelle, que vous pouvez retrouver en pourcentages ici.

Une fois la machine virtuelle créée, je ne peux que constater la taille de mon disque OS, assez facilement depuis la section des disques :

Un clique sur le disque OS vous amène sur sa page dédiée.

Redimensionnement du disque OS sur une machine virtuelle existante

Une alerte est mentionnée en haut de page : la taille d’un disque ne peut se faire que si ce dernier est détaché de la machine virtuelle ou que si cette dernière est éteinte :

Cas A : Redimensionnement à la baisse

Une fois la machine virtuelle arrêtée, un redimensionnement à la baisse va obligatoirement échouer, dans le but de prévenir la perte de données :

Erreur remontée par Azure au moment du redimensionnement à la baisse.

Cas B : Redimensionnement à la hausse

Cela ne sera pas le cas dans le cas d’un redimensionnement à la hausse, comme vous pouvez le voir en dessous :

La taille du disque OS a bien été augmentée. Notez que le nombre max d’IOPS a aussi fait un bon.

Dernière chose à faire, agrandir la partition du lecteur C directement depuis la machine virtuelle :

Comment faire donc pour effectuer pour disposer d’un lecteur C plus petite taille ? Sachant que l’OS est loin de remplir le lecteur C, plusieurs options s’offrent à nous :

  • Création d’une machine virtuelle avec une image portant la mention [smalldisk]
  • Redimensionnement du disque OS, après déploiement de la machine virtuelle

Remarque importante : Prenez garde avec la taille des disques, un disque trop réduit vous apportera peu d’IOPS et donc des performances disques insuffisantes :

Néanmoins, cette démarche peut être utile dans certains cas et donc générer une économie de coûts.

1er cas : Image Windows Server 2019 [smalldisk]

Si, avant la création de la machine virtuelle, vous savez déjà que votre disque C peut être plus réduit, vous pouvez alors partir sur des images spécifiques. Voici par exemple la liste des [smalldisk] disponibles pour Windows Serveur :

Si vous avez des difficultés de visualisation du nom complet des images, un passage du curseur sur un choix vous donnera son nom complet.

Une fois la machine provisionnée sur votre souscription Azure, vous constaterez que la taille du disque OS est de 30GB. Cette taille est donc plus réduite que la précédente. Vous pourrez toujours changer celle-ci à la hausse simplement en éteignant votre machine virtuelle.

Notez qu’une taille custom du disque entraine toujours une facturation égale à la taille supérieure : ici 32GB.

2ème cas : Redimensionnement du lecteur C puis du disque OS

Il arrive dans certains cas que la machine virtuelle existe déjà. Il va donc falloir commencer le processus par redimensionner le lecteur C. Je suis donc tombé sur cet excellent article (en anglais) et écrit par Jack Rudlin. Les étapes nécessaires pour y parvenir sont :

  • Réduction de la partition de l’OS dans Windows
  • Redimensionnement du disque OS dans Azure
  • Lancement du script sous PowerShell
  • Extension de la partition du système d’exploitation

Je recréé donc une nouvelle machine virtuelle, afin de faire avec vous cette opération de réduction « à chaud » :

Comme indiqué ici, la taille custom de mon disque OS est de 127GB.

Important : comme indiqué dans l’article de Jack et dans la source Microsoft, il est fortement recommandé de faire un snapshot du disque avant toute opération pour sauvegarder les données.

Dans un premier temps, nous nous connectons en RDP sur la machine virtuelle. Cet accès nous permet de changer la taille du lecteur C via un une première requête PowerShell, disposants des droits d’administration :

Get-Partition -DiskNumber 0

Cette requête nous donne le numéro de partition, utilisé après pour le redimensionnement.
La requête ci-dessus prend en compte le numéro du disque pour nous présenter les partitions associées.

Get-Partition -DiskNumber 0 -PartitionNumber 2 | Resize-Partition -Size 31GB

Cette simple commande redimensionne la partition du lecteur C.
L’effet de la requête est immédiatement visible 🙂
Existing Volumes
Comme indiqué sur le blog de Jack, vous pouvez rencontrer une erreur si la taille visée est trop petite.

La suite va se faire en dehors de la machine virtuelle. Il faut commencer par éteindre la machine virtuelle pour effectuer la copie des données :

Machine virtuelle arrêtée et dont les ressources ne sont plus allouées. Rappel : une désallocation des ressources entraînent un forte disque de perte des données disque D : temporaire.

Il donc falloir ici utiliser le module AZ sur votre poste via PowerShell pour continuer la suite des opérations. Voici une vidéo qui explique bien comment y arriver facilement :

Merci à David Lamb 🙂

La suite se fait avec le lancement du script donné par Jack, disponible depuis son GitHub via ce lien.

Aussi je vous conseille de passer par PowerShell ISE pour modifier facilement le script, car plusieurs variables vont devoir être modifiées :

  • Ressource ID du disque OS à modifier, que vous pouvez retrouver dans les propriétés du disque OS
  • Nom de la VM, que vous pouvez retrouver sur la page de la machine virtuelle
  • Nom de la souscription Azure, que vous pouvez retrouver sur la page de la machine virtuelle
Ressource ID du disque OS que vous pouvez retrouver dans les propriétés du disque OS.
Nom de la VM que vous pouvez retrouver sur la page de la machine virtuelle.
Nom de la souscription Azure que vous pouvez retrouver sur la page de la machine virtuelle.

Avant de lancer le script :

  • Celui-ci demande de posséder un certains nombres de droits pour effectuer toutes les tâches
  • Dans mon exemple (généralement non recommandé), j’ai utilisé un utilisateur avec le profil d’administrateur global du tenant Azure
  • A minima, vous devez disposer au moins des rôles de contributeur VM et de contributeur de compte de stockage dans Azure

Dans le détail, le script de Jack effectue les actions suivantes :

  • Création d’un compte de stockage temporaire
  • Création d’un container temporaire dans le nouveau compte de stockage
  • Copie du disque OS dans le compte de stockage temporaire sous forme de page blob
  • Modification la taille du page blob pour que le disque d’OS soit réduit
  • Reconversion du disque non managé en disque managé
  • Remplacement du disque OS actuel de la VM par le nouveau disque OS plus petit
  • Redémarrage de la machine virtuelle
  • Nettoyage du compte de stockage temporaire et de l’ancien disque managé

Le processus peut également être suivi depuis le portail Azure en constatant l’évolution du compte de stockage créé par le script de Jack :

Compte de stockage temporaire créé par le script.
Copie du disque OS en disque non managé (page blob).
Copie du disque non managé sur un second avec une taille réduite.
Suppression du page blob ayant la taille originale.
Un nouveau disque managé est créé à partir du dernier page blob et porte la mention « -new ».
Suppression du dernier page blob une fois la transformation faite en disque managé.
Comme on le constate sur la machine virtuelle utilisée dans mon exemple, le script détache l’ancien disque OS et rattache aussi le disque OS à taille réduite.
La machine virtuelle est redémarrée automatiquement par le script.
Suppression du compte de stockage temporaire en fin de script.

Il faut compter une bonne quinzaine de minutes pour que le script arrive à sa fin. Une connexion en RDP à cette dernière permet de réaliser la dernière étape du processus.

Compte tenu des volumes renseignés dans notre exemple, un reliquat d’espace est disponible sur le disque OS (522MB) :

Ce surplus peut être réintégré sur le lecteur C, comme indiqué sur cette image.
Fin de l’opération 🙂

Il faut donc compter au total une bonne vingtaine de minutes pour effectuer ce processus.

Conclusion

Il est donc bien possible de redimensionner un disque OS à plusieurs moments. Pensez toujours à faire des sauvegardes avant ce type d’opération ! Pensez à partager dans les commentaires vos autres sources d’apprentissage ????