Vous êtes sur la page 1sur 375

Dînez avec

AZURE
PENDANT UN MOIS ET DEVENEZ EXPERT

IAIN FOULDS
ÉCONOMISEZ 40 % SUR LES LIVRES ET VIDÉOS DES ÉDITIONS MANNING!
Manning publie des livres et des vidéos de grande qualité pour les professionnels de la technologie comme vous. Utilisez ce code de
réduction spécial pour économiser 40 % sur tous les livres électroniques, les livres imprimés, les programmes d’accès anticipé
Manning (MEAP) et les cours vidéo en ligne sur manning.com, y compris sur cette sélection de titres. Il vous suffit d’entrer azuremsft
dans la fenêtre de code promotionnel au moment de valider votre commande.

T
BES ER
L
SEL

Learn Windows PowerShell in a Month of Lunches .NET Core in Action


par Don Jones et Jeffery Hicks, Dustin Metzgar, juillet
décembre 2016, 384 pages 2018, 288 pages

Autres livres de la collection Dînez avec Azure pendant un mois


Learn PowerShell Scripting in a Month of Lunches
Learn System Center Configuration Manager in a Month of Lunches
Learn Active Directory Management in a Month of Lunches
Learn Windows IIS in a Month of Lunches
Learn Linux in a Month of Lunches
Learn Amazon Web Services in a Month of Lunches
Learn Git in a Month of Lunches
Learn Cisco Network Administration in a Month of Lunches

Livres pour les développeurs Microsoft et les professionnels de l’informatique


C# in Depth, quatrième édition ASP.NET Core in Action
Entity Framework Core in Action Reactive Applications with Akka.NET
Functional Programming in C# Microservices in .NET Core
Concurrency in .NET Kubernetes in Action
Docker in Action, deuxième édition Docker in Practice, deuxième édition

Lisez gratuitement les livres des éditions Manning sur liveBook


La plateforme liveBook de Manning offre une expérience de lecture en ligne agréable et flexible. Chaque
jour, vous bénéficiez pendant cinq minutes d’un accès complet GRATUIT à tous les livres des éditions
Manning. Dans liveBook, vous pouvez
• Poser des questions, partager du code et des exemples et interagir avec
d’autres lecteurs dans le forum liveBook.
• Acheter des chapitres, des sections ou des paragraphes en utilisant des jetons Manning.
• Effectuer une recherche en texte intégral dans tous les livres Manning, y compris ceux
que vous ne possédez pas.
• Inscrivez-vous GRATUITEMENT sur liveBook à l’adresse livebook.manning.com.

Vous pouvez utiliser vos cinq minutes d’accès GRATUIT comme vous le souhaitez : démarrez
et arrêtez le minuteur, passez d’un livre à l’autre et essayez les exercices interactifs. Connect-
ez-vous et parcourez le site. C’est sans risques.
Dînez avec Azure
pendant un mois et devenez expert
Dînez avec Azure
pendant un mois et
devenez expert
IAIN FOULDS

MANNING
SHELTER ISLAND
Pour plus d’informations et pour commander ce livre et d’autres ouvrages publiés par
Manning, rendez-vous sur le site www.manning.com. L’éditeur offre des rabais sur les grandes
commandes de ce livre. Pour en savoir plus, veuillez communiquer avec
Special Sales Department
Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
Courriel : orders@manning.com

© 2018 par Manning Publications Co. Tous droits réservés.

Aucune partie de la présente publication ne peut être reproduite, stockée dans un système de
recherche documentaire ou transmise par voie électronique, mécanique ou de photocopie, et
sous quelque forme ou par quelque moyen que ce soit sans autorisation écrite de l’éditeur.

Bon nombre des désignations utilisées par les fabricants et les vendeurs pour distinguer leurs
produits sont déposées en tant que marques de commerce. Lorsque ces désignations figurent
dans le livre, et que Manning Publications étaient au courant d’un dépôt de marque, les
désignations ont été imprimées en majuscules initiales ou tout en majuscules.

Reconnaissant l’importance de préserver ce qui a été écrit, la politique de Manning consiste


à imprimer nos publications sur du papier sans acide, et nous nous efforçons de respecter cet
engagement. Reconnaissant également notre responsabilité de préserver les ressources de
notre planète, les livres de Manning sont imprimés sur du papier qui est au moins recyclé à
15 % et traité sans l’utilisation de chlore élémentaire.

Manning Publications Co. Éditeur de développement : Kevin Harreld


20 Baldwin Road Directeur du développement technique : Mike Shepard
PO Box 761 Correcteur technique: Karsten Strøbaek
Shelter Island, NY 11964 Réviseur : Aleksandar Dragosavljević
Éditeur de projet : Tiffany Taylor
Réviseur linguistique : Tiffany Taylor
Correcteur : Elizabeth Martin
Typographe : Dottie Marsico
Designer de couverture : Leslie Haimes

ISBN 9781617295171
Imprimé aux États-Unis
1 2 3 4 5 6 7 8 9 10 – DP – 23 22 21 20 19 18
Aux personnes les plus importantes dans ma vie :
Abigail, Bethany et Charlotte
sommaire
PARTIE 1 SERVICES AZURE DE BASE 1
1  Avant de commencer 3
2  Création d’une machine virtuelle 15
3  Azure Web Apps 32
4  Présentation d’Azure Storage 46
5  Principes de base de la mise en réseau Azure 57

PARTIE 2 HAUTE DISPONIBILITÉ ET MISE À L’ÉCHELLE 75


6  Azure Resource Manager 77
7  Disponibilité élevée et redondance 91
8  Applications d’équilibrage de charge 108
9  Applications évolutives 127
10  Bases de données mondiales avec Cosmos DB 144
11  Gestion du trafic réseau et du routage 162
12  Surveillance et dépannage 181

PARTIE 3 SÉCURISÉ PAR DÉFAUT 199


13  Sauvegarde, récupération et réplication 201
14  Chiffrement des données 219
15  Sécurisation des informations avec Azure Key Vault 232
16  Centre de sécurité Azure et mises à jour 249

vii
viii SOMMAIRE

PARTIE 4 LES FONCTIONNALITÉS GÉNIALES 267


17  Apprentissage automatique et intelligence artificielle 269
18  Azure Automation 284
19  Conteneurs Azure 299
20  Azure et l’Internet des objets 314
21  Informatique sans serveur 331
Table des matières
préface xvii
remerciements xviii
à propos de ce livre xix
à propos de l’auteur xxiii

PARTIE 1 SERVICES AZURE DE BASE ...................................1

1 Avant de commencer
1.1 Public visé 3
3

1.2 Utilisation de ce livre 4


Principaux chapitres 4 Faites-en l’essai maintenant 5
 
Ateliers
pratiques 5 Code source et matériel supplémentaire 5

1.3 Création d’un environnement d’essai 5


Création d’un compte Azure gratuit 5 Exercice pratique complémentaire :

création d’un compte gratuit GitHub 8


1.4 Aide 9
1.5 Compréhension de la plateforme Azure 9
Virtualisation dans Azure 11 
Outils de gestion 13

2 Création d’une machine virtuelle


2.1
15
Création d’une machine virtuelle à partir de votre navigateur
Web 15
Azure Storage 16 Paramètres de base, suite

17
Tailles des MV 20 Paramètres 22

ix
x SOMMAIRE

2.2 Connexion à la machine virtuelle et installation du serveur


Web 23
Connexion à la machine virtuelle au moyen de SSH 23 
Installation du
serveur Web 25
2.3 Autorisation du trafic Web pour atteindre la machine
virtuelle 26
Création d’une règle autorisant le trafic Web 27 
Affichage du serveur
Web en action 27
2.4 Exercice pratique : création d’une machine virtuelle
Windows 29
2.5 Nettoyage des ressources 29
2.6 Houston, nous avons un problème 30

3 Azure Web Apps


3.1
32
Aperçu et concepts du service Azure Web Apps 33
Langages et environnements pris en charge 33 Élaboration de différentes

versions avec des emplacements de déploiement 34


3.2 Création d’une application Web 35
Création d’une application Web de base 35 
Déploiement d’un exemple de
site HTML 38
3.3 Gestion des applications Web 41
Visualisation des journaux de diagnostic 41
3.4 Exercice pratique : création et utilisation d’un emplacement de
déploiement 44

4 Présentation d’Azure Storage


4.1
46
En quoi le stockage est-il si spécial? 46
Stockage de table 48 Stockage de files d’attente 50
 
Disponibilité et
redondance du stockage 51
4.2 Stockage de la machine virtuelle 52
Stockage standard et premium 52 Disques temporaires

et disques de données 53 Options de mise en cache de disque 54


4.3 Ajout de disques à une machine virtuelle 54


4.4 Exercice pratique : exploration du service Azure Storage 56
Axé sur les développeurs 56 
Axé sur les machines virtuelles 56

5 Principes de base de la mise en réseau Azure


5.1 Composants du réseau virtuel 57
57

Création et utilisation des réseaux et sous-réseaux virtuels 58


Cartes d’interface réseau virtuelles 60 Adresse IP publique

et résolution DNS 62
SOMMAIRE xi

5.2 Sécurisation et contrôle du trafic avec des groupes de sécurité


réseau 65
Création d’un groupe de sécurité réseau 65 Association d’un groupe de

sécurité réseau à un sous-réseau 67 Création des règles de filtrage des


groupes de sécurité réseau 69

5.3 Création d’un exemple d’application Web avec un trafic


sécurisé 70
Création de connexions au réseau par accès à distance 70 Création de

machines virtuelles 71 Utilisation de l’agent SSH pour se connecter à vos


machines virtuelles 72
5.4 Exercice : installation et test du serveur Web LAMP 74

PARTIE 2 DISPONIBILITÉ ÉLEVÉE ET MISE À L’ÉCHELLE .....75

6 Azure Resource Manager


6.1
77
L’approche Azure Resource Manager 77
Conception autour du cycle de vie de l’application 78
Sécurisation et contrôle des ressources 80 Protection des ressources avec

des verrous 81 Gestion et regroupement des ressources avec des


balises 82
6.2 Modèles Azure Resource Manager 83
Création et utilisation de modèles 84 Création de plusieurs types de

ressources 86 Outils pour créer vos propres modèles 87


Stockage et utilisation des modèles 89


6.3 Exercice pratique : déploiement de ressources Azure à partir
d’un modèle 89

7 Disponibilité élevée et redondance


7.1 Le besoin de redondance 91
91

7.2 Redondance de la MV avec des ensembles de disponibilité 93–100


Domaines de défaillance 94 Domaines de mise à jour 94

Distribution de machines virtuelles dans un ensemble de


disponibilité 95 Afficher la distribution de machines virtuelles dans un

ensemble de disponibilité 98
7.3 Redondance des infrastructures avec zones de
disponibilité 100
Création de ressources réseau dans une zone de disponibilité 102
Création de MV dans une zone de disponibilité 103
7.4 Exercice pratique : déploiement de machines virtuelles
hautement disponibles à partir d’un modèle 104
xii SOMMAIRE

8 Applications d’équilibrage de charge


8.1 Composants équilibreurs de charge Azure
108
108
Création de lots IP frontaux 110 Création et configuration de sondes

d’intégrité 112 Définition de la distribution du trafic avec des règles


d’équilibrage de charge 114 Routage du trafic direct avec règles de


traduction d’adresses réseau 116 Affectation de groupes de MV à des lots


dorsaux 118
8.2 Création et configuration de machines virtuelles avec
l’équilibreur de charge 122
Connexion aux machines virtuelles et visualisation de l’équilibreur de charge
en action 123
8.3 Exercice pratique : visualisation de modèles de déploiements
existants 125

9 Applications évolutives
9.1
127
Pourquoi construire des applications évolutives et fiables? 128
Mise à l’échelle verticale des MV 129 Mise à l’échelle verticale des applis

Web 131 Mise à l’échelle horizontale des ressources 132


9.2 Jeux de mise à l’échelle de machine virtuelle 133


Création d’un jeu de mise à l’échelle de machine virtuelle 134
Création de règles de mise à l’échelle automatique 136
9.3 Mise à l’échelle d’une appli Web 139
9.4 Exercice pratique : installation d’applications sur votre
ensemble de disponibilité ou sur une appli Web 142
Jeux de mise à l’échelle de machine virtuelle 142 
Applis Web 143

10 Bases de données mondiales avec Cosmos DB


10.1 Cosmos DB, qu’est-ce que c’est? 145
144

Bases de données (SQL) structurées 145 Bases de données (NoSQL) non


structurées 145 Mise à l’échelle de bases de données 146 Mise en


 

place de l’ensemble avec Cosmos DB 148


10.2 Création d’un compte et d’une base de données
Cosmos DB 148
Création et remplissage d’une base de données Cosmos DB 148
Ajout d’une redondance mondiale à une base de données Cosmos DB 153
10.3 Accès aux données distribuées mondialement 156
10.4 Exercice pratique : déploiement d’une application Web
utilisant Cosmos DB 160

11 Gestion du trafic réseau et du routage


11.1 Qu’est-ce qu’Azure DNS? 162
162

Délégation d’un domaine réel à Azure DNS 164


SOMMAIRE xiii

11.2 Routage mondial et résolution avec Traffic Manager 166


Création de profils Traffic Manager 168 
Distribution globale du trafic à
l’instance la plus proche 171
11.3 Exercice pratique : déploiement d’applications Web pour voir
Traffic Manager en action 180

12 Surveillance et dépannage
12.1
181
Diagnostics de démarrage de la machine virtuelle 181
12.2 Métriques de performances et alertes 184
Affichage des métriques de performance avec l’extension de diagnostic de
machine virtuelle 184 Création d’alertes sur les conditions de

fonctionnement 188
12.3 Azure Network Watcher 189
Vérification des flux IP 190 Affichage des règles NSG effectives

192
Capture de paquets réseau 194
12.4 Exercice pratique : création d’alertes de performance 197

PARTIE 3 SÉCURISÉ PAR DÉFAUT ...................................199

13 Sauvegarde, récupération et réplication


13.1 Service de sauvegarde Azure 202
201

Stratégies et rétention 203 Calendriers de sauvegarde



206
Restauration d’une machine virtuelle 210
13.2 Récupération de sites Azure 213
13.3 Exercice pratique : configuration d’une machine virtuelle pour
la récupération de sites 216

14 Chiffrement des données


14.1
219
Qu’est-ce que le chiffrement des données? 219
14.2 Le chiffrement au repos 222
14.3 Storage Service Encryption 223
14.4 Chiffrement de machines virtuelles 225
Stockage des clés de chiffrement dans Azure Key Vault 226
Contrôle de l’accès aux coffres et aux clés avec Azure Active
Directory 227 Chiffrement d’une machine virtuelle Azure

228
14.5 Exercice pratique : chiffrement d’une machine virtuelle 230
xiv SOMMAIRE

15 Sécurisation des informations avec Azure Key Vault


15.1 Sécurisation des informations dans le nuage 232
232

Coffres de logiciels et modules de sécurité matérielle 234


Création d’une chambre forte et d’un secret 235
15.2 Identités des services gérés 237
Obtenir un secret dans une machine virtuelle avec une identité de service
géré 240
15.3 Création et injection de certificats 245
15.4 Exercice pratique : configuration d’un serveur Web
sécurisé 248

16 Centre de sécurité Azure et mises à jour 249


16.1 Centre de sécurité Azure 249
16.2 Accès juste à temps 253
16.3 Gestion des mises à jour d’Azure 257
Operations Management Suite 258 
Examen et application des
mises à jour 262
16.4 Exercice pratique : activation de l’accès juste à temps pour une
machine virtuelle Windows 265

PARTIE 4 LES FONCTIONNALITÉS GÉNIALES ...................267

17 Apprentissage automatique et intelligence artificielle


17.1 Présentation et relations de l’Intelligence Artificielle et de
269

l’apprentissage automatique 270


Intelligence artificielle 270 Apprentissage automatique 271

Unification de l’Intelligence Artificielle et de l’apprentissage


automatique 273 Outils d’apprentissage automatique Azure

pour les scientifiques des données 274


17.2 Azure Cognitive Services 274
17.3 Création d’un bot intelligent pour aider avec les commandes de
pizzas 276
Création d’un bot d’appli Web Azure 276 Langage et compréhension de

l’intention avec LUIS 277 Création et exécution d’un bot d’appli Web

avec LUIS 280


17.4 Exercice pratique : ajout de canaux pour la communication du
bot 283

18 Azure Automation
18.1
284
Qu’est-ce qu’Azure Automation? 284
Création d’un compte Azure Automation 286
Actifs et procédures opérationnelles Azure Automation 287
SOMMAIRE xv

18.2 Exemple de procédure opérationnelle Azure Automation 290


Exécution et affichage de la sortie à partir d’un exemple de procédure
opérationnelle 292
18.3 Configuration de l’état souhaité PowerShell (DSC) 293
Définition et utilisation de la configuration de l’état souhaité PowerShell et
d’un serveur collecteur Azure Automation 295
18.4 Exercice pratique : utilisation de DSC avec Linux 297

19 Conteneurs Azure
19.1
299
Que sont les conteneurs? 299
L’approche des microservices pour les applications 303
19.2 Instances de conteneur azure 305
Création d’une instance de conteneur unique 305
19.3 Azure Kubernetes Service 308
Création d’une grappe avec Azure Kubernetes Services 309
Exécution d’un site Web de base dans Kubernetes 310
19.4 Exercice pratique : mise à l’échelle de vos déploiements
Kubernetes 312

20 Azure et l’Internet des objets


20.1
314
Qu’est-ce que l’Internet des objets? 315
20.2 Gérer les appareils de manière centralisée avec Azure IoT
Hub 317
Créer un simulateur Raspberry Pi 320
20.3 Diffuser en continu les données Azure IoT Hub dans les
applications Web Azure 323
Examen du composant IdO d’Azure 329
20.4 Exercice pratique : exploration des cas d’utilisation pour
l’IdO 330

21 Informatique sans serveur


21.1
331
Qu’est-ce que l’informatique sans serveur? 331
21.2 Plateformes de messagerie Azure 333
Azure Event Grid 334 Azure Event Hubs et Service Bus 335

Création d’un service bus et intégration à un concentrateur IdO


21.3 Création une application logique Azure 339
21.4 Création d’une application de fonction Azure pour analyser les
données d’appareils IdO 343
21.5 Apprenez sans cesse 346
Matériel d’apprentissage supplémentaire 347 
Ressources
GitHub 347 Une dernière réflexion 347

index 349
préface
Lorsque j’ai commencé à travailler avec Azure, le nombre de services disponibles était
presque écrasant. Je savais que je devais porter une attention particulière à la sécurité,
à la performance, à la redondance, et à l’échelle, mais je ne savais pas comment appli-
quer plus d’une décennie d’administration de serveur à grande échelle dans le
monde de l’infonuagique. Au fil du temps, j’ai commencé à découvrir les différents
services Azure qui fournissent ces composants clés; ces services fonctionnent rare-
ment isolément, mais je ne savais comment les intégrer au mieux ou quel service était
le plus approprié pour chaque tâche. Avec ce livre, c’est comme si j’expliquais à mon
ancien moi, et à bien d’autre lecteurs auxquels j’ai parlé au fil des ans, comment com-
prendre rapidement les services de base d’Azure et les faire collaborer.
Ce livre compte plus de 350 pages, mais il ne représente qu’un survol des possibili-
tés offertes par Azure! Pour vous donner une bonne compréhension des concepts
nécessaires pour une construction efficace de solutions dans Azure, j’ai dû sélection-
ner les sujets à aborder. Le livre ne couvre pas les plus de cent services Azure, et il ne
détaille pas de manière exhaustive les services inclus. Au lieu de cela, je me concentre
sur les domaines principaux de certains services primaires, je présente des exemples
de connexion sécurisée de l’ensemble et des possibilités de construction dans Azure.
L’infonuagique est en constante évolution. Il n’y a pas de cycles de lancement de
trois ou quatre ans et de déploiements de grandes mises à jour. Je pense que c’est le
moment idéal pour construire des solutions et écrire du code; il y a toujours une occa-
sion d’apprendre quelque chose de nouveau et de se perfectionner. J’espère que vous
apprendrez à exécuter d’excellentes applications dans Azure et que vous apprécierez
de découvrir tous les services disponibles.

xvii
remerciements
De nombreuses personnes de chez Manning Publications ont contribué à la naissance de
ce livre. Un gros merci à Mike Stephens pour avoir eu la vision initiale pour commencer
ce projet, et à Kevin Harreld pour m’avoir fait avancer dans la bonne direction. Merci à
l’éditeur Marjan Bace et à tous les membres des équipes éditoriales et de production. Je
remercie également les réviseurs techniques, sous la houlette
d’Aleksandar Dragosavljević—Al Pezewski, Andrea Cosentino, Bhaskar V. Karambelkar,
Dave Corun, Frank Quintana, Jean-Sébastien Gervais, Joe Justesen, Marco Salafia,
Michael Bright, Mike Jensen, Nikander et Margriet Bruggeman, Peter Kreyenhop,
Rob Loranger, Robert Walsh, Roman Levchenko, Sushil Sharma, Sven Stumpf, et
Thilo Käsemann, ainsi que toutes les personnes qui ont contribué au forum. Et enfin, du
côté technique, merci à Mike Shepard, rédacteur technique; et Karsten Strøbaek, correc-
teur technique.
Je ne crois pas à la chance ou au hasard; je pense plutôt qu’il nous faut saisir les
occasions qui se présentent. Merci à David Tolkov et Tim Teebken, qui m’ont permis
de devenir la personne capable d’écrire ce livre. Ce livre était un projet réalisé après
mes heures de travail chez Microsoft, mais merci à Jean-Paul Connock pour son sou-
tien. Allez, les Blues!
Merci à Rick Claus pour son soutien en matière de documentation technique sou-
tenue dans Azure, et à Marsh Macy et Neil Peterson pour leur soutien au niveau per-
sonnel et leurs conseils pour l’écriture de ce livre. Peut-être que maintenant je vais
avoir le temps de travailler sur ce bus scolaire.

xviii
à propos de ce livre
Ce livre est conçu pour vous donner une base solide pour réussir en tant que déve-
loppeur ou ingénieur des TI en Azure. Vous y approfondirez vos connaissances sur les
solutions d’infrastructure en tant que service (IaaS) et de plateforme en tant que ser-
vice (PaaS), et vous verrez à quel moment utiliser chaque approche. Au fil de votre
lecture, vous apprendrez à planifier convenablement la disponibilité et la mise à
l’échelle, à garder la sécurité à l’esprit, tout en prenant en compte les coûts et les per-
formances. À la fin du livre, vous devriez être en mesure d’intégrer les technologies
d’avenir telles que les conteneurs et Kubernetes, l’Intelligence Artificielle et l’appren-
tissage machine (AI + ML), et l’Internet des objets (IdO).
Quant aux méthodes de création et d’exécution de vos applications et services,
Azure vous permet de choisir le système d’exploitation, les outils d’application, et la
plateforme avec lesquels vous êtes le plus à l’aise. Cet ouvrage traite principalement
des technologies autres que celles de Microsoft, telles que Linux, Python et Node.Js.
Les exemples de commande utilisent l’interface de ligne de commande Azure (CLI),
et non Azure PowerShell. J’ai consciemment opté pour Azure CLI, pour vous montrer
que l’utilisation d’Azure ne signifie pas que vous devez obligatoirement utiliser Win-
dows Server, IIS ou ASP.NET.
Travailler dans le nuage, cela signifie souvent travailler sur diverses plateformes et
aborder de nouveaux sujets : c’est aussi pour cela qu’il est important de présenter des
technologies et des plateformes autres que celles de Microsoft. Je tenais à vous présen-
ter certains de ces nouveaux domaines alors que vous avancez dans la lecture de cet
ouvrage, avant que vous ne les retrouviez dans votre travail! Tout au long du livre, j’ai
essayé de vous enseigner les concepts et les étapes nécessaires pour intégrer les ser-
vices Azure, pour que vous puissiez changer de plateforme ou de langages à votre
guise tout en appliquant les mêmes connaissances.

xix
xx À PROPOS DE CE LIVRE

Feuille de route
Le livre s’articule autour de quatre parties et 21 chapitres :
 La partie 1 couvre certains des services de base de l’infrastructure et de la plate-
forme Azure : machines virtuelles, applications Web, stockage et mise en
réseau.
 La partie 2 est consacrée aux moyens de fournir un certain niveau de disponibi-
lité élevée et de redondance : modèles, ensembles et zones de disponibilité,
équilibreurs de charge, mise à l’échelle automatique, bases de données distri-
buées, et routage de trafic. À la fin du chapitre 12, vous devriez avoir une solide
connaissance de la méthode de création des applications distribuées haute per-
formance dans Azure.
 La partie 3 couvre les aspects de sécurité tels que la sauvegarde et la récupéra-
tion, le chiffrement, la gestion des clés numériques et les mises à jour. Au terme
du chapitre 16, vous serez apte à gérer des applications sécurisées et stables
dans Azure.
 À la fin du livre, dans la partie 4, nous nous amuserons à explorer de nouveaux
domaines de l’informatique, tels que l’Intelligence Artificielle et l’apprentis-
sage machine (AI + ML), les conteneurs, Kubernetes, l’Internet des objets
(IdO), et l’informatique sans serveur. Ces chapitres présentent des domaines
d’Azure qui vous laissent entrevoir l’avenir des applications de production.
En dehors de la partie 4 qui porte bien son titre, « Les fonctionnalités géniales », vous
devriez essayer d’étudier les chapitres du livre dans l’ordre. Vous ne travaillez pas sur
le même projet dans des chapitres successifs; chaque chapitre s’appuie sur une théo-
rie antérieure et des exemples pratiques.
Le chapitre 1 vous guide à travers la création d’un compte d’essai gratuit dans
Azure, ce qui est suffisant pour effectuer les exercices pratiques de chaque chapitre.
J’y présente également un peu plus de contexte sur Azure et explique comment trou-
ver de l’aide supplémentaire. Je le mentionne à quelques reprises dans le livre (j’ai
peut-être un parti pris!), mais le site http://docs.microsoft.com/azure est le meilleur
endroit pour dénicher de la documentation supplémentaire et du soutien dans tous
les domaines d’Azure qui vous intéressent.

À propos des exemples et du code source


Ce livre contient de nombreux exemples de code source, à la fois dans les listes numé-
rotées et dans le corps du texte. Dans les deux cas, le code source est formaté dans
une police à largeur fixe comme celle-ci pour distinguer le code du texte ordi-
naire.
Dans de nombreux cas, le code source original a été reformaté; nous avons ajouté
des sauts de ligne et des retraits retravaillés pour tenir compte de l’espace disponible
sur la page du livre. En outre, les commentaires dans le code source ont souvent été
À PROPOS DE CE LIVRE xxi

supprimés des listes lorsque le code est décrit dans le texte. Les annotations de code
accompagnent de nombreuses listes, en soulignant les concepts importants.
Le code source de ce livre, avec les scripts, les modèles et les ressources d’assis-
tance qui l’accompagnent, figure à l’adresse www.manning.com/books/learn-azure-
in-a-month-of-lunches et dans le référentiel GitHub du livre, à l’adresse
https://github.com/fouldsy/azure-mol-samples.
Tous les exercices pratiques peuvent être réalisés dans le portail Azure et avec
Azure Cloud Shell, un environnement interactif accessible par navigateur pour l’inter-
face de ligne de commande Azure et Azure PowerShell. Il n’y a pas d’outils à installer
sur votre machine, et vous pouvez utiliser n’importe quel ordinateur et système
d’exploitation, à condition qu’il prenne en charge un navigateur Web moderne.
Le portail Azure implémente souvent des modifications mineures. J’ai essayé de
minimiser le nombre de captures d’écran du portail, mais ne vous inquiétez pas si ce
que vous voyez est un peu différent de ce qui est montré dans le livre. Les paramètres
requis sont généralement les mêmes : la disposition peut simplement être différente.
S’il y a de nouvelles options dans le portail que je ne mentionne pas spécifiquement
dans un exercice ou un exercice pratique, vous pouvez généralement accepter sans
problème les valeurs par défaut qui sont fournies.
Si vous travaillez en dehors d’Azure Cloud Shell, prenez garde aux exemples de
commandes. Les environnements Windows, comme PowerShell et CMD, traitent les
sauts de ligne et les continuations différemment des environnements * nix, comme
Azure Cloud Shell. Bon nombre d’exemples de commandes sont exécutés sur plu-
sieurs lignes. Les commandes sont affichées avec une barre oblique inverse (\) pour
indiquer que la commande continue sur la ligne suivante, comme dans l’exemple ci-
dessous :
az resource group create \
--name azuremol \
--location eastus

Vous n’avez pas à entrer ces caractères de barre oblique inverse, mais l’ajout de ces
barres obliques permet de rendre les longues commandes plus lisibles à l’écran. Si
vous choisissez de travailler localement sur votre ordinateur avec un shell Windows,
vous pouvez utiliser une apostrophe ouvrante (`) au lieu d’une barre oblique inverse.
Par exemple, dans un shell PowerShell ou CMD avec Python pour Windows installé,
modifiez la commande précédente comme suit :
az resource group create `
--name azuremol `
--location eastus

Vous pourriez être hésitant au début, mais j’applique cette convention dans le livre
parce que la documentation officielle sur le site http://docs.microsoft.com/azure uti-
lise ce format. Les commandes Azure CLI, qui sont les plus utilisées dans ce livre, sup-
posent un shell *nix et donc, utilisent un caractère barre oblique inverse. Les
commandes Azure PowerShell supposent un shell Windows et utilisent donc une
xxii À PROPOS DE CE LIVRE

apostrophe ouvrante. Vous intégrerez cette convention rapidement, et vous verrez


qu’il est facile de passer de l’un à l’autre. Si vous venez de commencer à travailler sur
différentes plateformes, vous allez vous amuser!

Forum du livre
À l’achat de Dînez avec Azure pendant un mois et devenez expert, vous bénéficiez d’un accès
gratuit à un forum Web privé géré par Manning Publications où vous pouvez formuler
des commentaires sur le livre, poser des questions techniques, et de recevoir de l’aide
de l’auteur et d’autres utilisateurs. Pour accéder au forum, rendez-vous sur le site
https://forums.manning.com/forums/learn-azure-in-a-month-of-lunches. Vous pou-
vez également en savoir plus sur les forums de Manning et les règles de conduite à
l’adresse suivante : https://forums.manning.com/forums/about.
Manning s’engage à fournir à ses lecteurs un lieu où un dialogue efficace entre les
lecteurs et entre les lecteurs et l’auteur peut avoir lieu. L’auteur ne s’engage pas à une
participation quantifiée, car sa contribution au forum demeure volontaire et non
rémunérée. Nous vous suggérons d’essayer de poser à l’auteur des questions difficiles,
pour susciter son intérêt! Le forum et les archives des discussions précédentes seront
accessibles à partir du site Web de l’éditeur tant que le livre est imprimé.
à propos de l’auteur
IAIN FOULDS est développeur de contenu principal chez Microsoft. Il rédige actuelle-
ment une documentation technique pour les services de conteneurs Azure, les
machines virtuelles et les jeux de mise à l’échelle. Auparavant, Iain était ingénieur de
terrain principal chez Microsoft, pour les technologies de virtualisation comme Azure,
Hyper-V et System Center Virtual Machine Manager. Fort de plus de 15 ans d’expé-
rience en informatique, principalement dans les opérations et les services, Iain a
adopté la virtualisation dès ses prémisses avec VMware et a contribué à construire et à
enseigner l’infonuagique pendant des années.
Originaire d’Angleterre, Iain vit aux États-Unis depuis plus de dix ans et réside
actuellement en banlieue de Seattle avec sa femme et ses deux jeunes enfants, à qui ce
livre est dédié. Il est un fan de football (malheureusement appelé « soccer » où il vit)
et aime aussi le hockey sur glace et presque toutes les formes de courses automobiles.
En dehors de l’informatique, Iain se passionne pour les voitures classiques et le sport,
la photographie d’aviation, et il prétend savoir jouer de la guitare. Il est aussi un
grand amateur de modélisme (les trains), et il assiste régulièrement et fait du bénévo-
lat à des expositions et à des événements dans la région du nord-ouest des États-Unis.

xxiii
Partie 1

Services Azure de base

P our mettre au point une application, vous devez saisir parfaitement les ressources
fondamentales d’Azure. Les éléments comme le stockage et la mise en réseau ne sont
peut-être pas les plus passionnants à aborder, mais ils jouent un rôle central dans nombre
des fonctions d’Azure. Avant d’entrer dans les détails redondants des machines virtuelles
à plusieurs instances ou des applications Web d’Azure, il est judicieux de connaître les
différentes options et tâches de gestion disponibles pour une seule instance. Cette
démarche vous permet d’en apprendre un peu plus sur les différences et les similitudes
entre l’approche IaaS des machines virtuelles et l’approche PaaS des applications Web.
Dans les chapitres 1 à 5, nous nous pencherons sur les machines virtuelles et les applica-
tions Web, ainsi que sur les fonctions de base pour le stockage et la mise en réseau vir-
tuelle.
Avant de commencer

Azure compte parmi les plus grands fournisseurs de services infonuagiques publics, tels que les
machines virtuelles (MV), les conteneurs, l’informatique sans serveur et l’apprentissage auto-
matique. Dans ce livre, nous n’allons pas analyser les 100 services et plus proposés par Azure,
mais vous découvrirez les principaux services et fonctions qui couvrent la plupart des options
dont vous avez besoin pour concevoir et exécuter des solutions dans Azure. Nous examinerons
un exemple courant de création et d’exécution d’une application Web, et vous apprendrez à
utiliser les services de plateforme et d’infrastructure clés qui vous faciliteront la tâche.
Avec Azure, inutile de posséder une baguette magique pour prévoir le nombre de
serveurs ou le volume de stockage dont vous aurez besoin au cours des trois pro-
chaines années. Finis les retards en attendant l’approbation du budget, l’expédition
du nouveau matériel, ou encore le rangement, l’installation et la configuration des
équipements. Plus besoin de vous inquiéter des bibliothèques ou des versions de logi-
ciel installées pendant que vous écrivez votre code.
Il vous suffit désormais de cliquer sur un bouton pour créer toutes les ressources nécessaires.
Vous payez uniquement pour les minutes d’utilisation de ces ressources, ou pour le volume de
stockage ou la quantité de bande passante utilisée. Vous n’en avez plus besoin? Vous n’avez
qu’à les arrêter ou les supprimer. Si vous avez subitement besoin de multiplier la puissance de
traitement par 10, cliquez sur le bouton, attendez quelques minutes, et c’est fait! Toutes ces
fonctions sont gérées par quelqu’un d’autre afin que vous puissiez vous concentrer sur vos
applications et vos clients.

0.1 Public visé


Le secteur de l’informatique connaît une légère transition en ce qui a trait aux
intitulés de postes. Vous pouvez en effet vous considérer comme un informaticien, un
développeur, un administrateur de système ou encore un ingénieur DevOps. Si vous
désirez maîtriser les compétences de base nécessaires à la conception et à l’exécution
d’applications sécurisées et hautement disponibles dans le nuage, vous êtes au bon
endroit. En termes simples : vous connaissez probablement les opérations informa-
tiques ou le développement de concepts. Cependant, ces domaines s’entrecroisent
énormément, surtout en matière d’infonuagique. Il apparaît donc capital de com-
prendre l’infrastructure et les services de plateforme de base pour concevoir et exécu-
ter des applications qui répondront aux besoins de vos clients.
Ce livre présente certains concepts fondamentaux d’Azure et inculque les com-
pétences nécessaires à une prise de décisions éclairée. Vous devez toutefois dispo-
ser d’une expérience préalable dans les machines virtuelles et connaître les
fondements de la mise en réseau et du stockage. Vous devez également être en
mesure de créer un site Web élémentaire et de comprendre ce qu’est un certificat
SSL ou une base de données. Nous jetterons rapidement un œil aux nouvelles tech-
nologies et à celles à venir, telles que les conteneurs, l’Internet des objets, l’appren-
tissage automatique, l’intelligence artificielle et l’informatique sans serveur. Même
les informaticiens et les développeurs devraient découvrir quelques nouveautés!

1.1 Utilisation de ce livre


J’adore la période la pause dîner, car je prends le temps de m’amuser avec de nouvelles
technologies. Vous êtes plutôt un oiseau de nuit qui dispose d’un peu de temps libre en soi-
rée, ou une personne matinale qui préfère parcourir un chapitre pendant le petit-déjeuner?
Aucun moment n’est bon ni mauvais pour apprendre, mais si vous pouvez consacrer envi-
ron 45 minutes par jour à ce livre, vous devriez pouvoir lire un chapitre entier et terminer
les exercices. Chaque chapitre aborde un nouveau thème, alors donnez-vous le temps
d’intégrer votre leçon quotidienne.

1.1.1 Principaux chapitres


Le livre est divisé en quatre parties. Pratique, puisqu’un mois se compose de quatre
semaines :
 La partie 1 (chapitres 1 à 5) couvre certaines des ressources de base d’Azure.
Lisez au moins ces chapitres afin de bien comprendre les fondements d’Azure.
Vous pourrez ensuite consulter les autres chapitres qui vous intéressent le plus.
 La partie 2 (chapitres 6 à 12) porte sur la disponibilité et l’échelle. Vous appren-
drez à dimensionner automatiquement les ressources, à équilibrer la charge de
trafic et à gérer les événements de maintenance sans temps d’immobilisation.
Vous souhaitez en savoir plus sur l’exécution d’applications hautement dispo-
nibles à l’échelle mondiale? Cette partie est faite pour vous.
 La partie 3 (chapitres 13 à 16) intéressera les passionnés de la sécurité. En effet,
elle détaille les méthodes de chiffrement des machines virtuelles, le stockage des
certificats SSL dans un coffre sécurisé, ainsi que la sauvegarde et la restauration
des données.
 La partie 4 (chapitres 17 à 21) présente un mélange de fonctions attrayantes
afin de vous donner un avant-goût de ce qu’Azure a à vous offrir, comme
l’automatisation, les conteneurs, l’Internet des objets et l’informatique sans
serveur. Choisissez un sujet qui vous intéresse et amusez-vous!

1.1.2 Essayer maintenant


Voulez-vous simplement lire, ou êtes-vous prêt à retrousser vos manches pour jouer avec
Azure? Tout au long du livre apparaissent de petites tâches qui vous permettent de tester
rapidement les nouveautés. Si vous avez le temps, n’hésitez pas à les essayer. La plupart des

3
4 CHAPITRE 1 Avant de commencer

ateliers pratiques sont contenus dans la partie d’exercices à la fin de chaque chapitre. La lec-
ture du livre, entrecoupée par l’essai de nouveaux concepts, vaut vraiment la peine.

1.1.3 Ateliers pratiques


Chaque chapitre se termine par un exercice pratique. Certains chapitres, comme celui-ci, com-
portent des exercices en milieu de chapitre. Ces exercices vous permettent de découvrir les
pièces d’Azure qui s’assemblent et jettent les bases d’une mémoire musculaire mentale. Attra-
pez votre souris et votre clavier, et lancez-vous dans une création extraordinaire!

1.1.4 Code source et matériel supplémentaire


Le code source de ce livre, avec les scripts, les modèles et les ressources d’assistance qui l’accom-
pagnent, figure à l’adresse www.manning.com/books/learn-azure-in-a-month-of-lunches
et dans le référentiel GitHub du livre, à l’adresse https://github.com/fouldsy/azure-mol-
samples. En outre, vous pouvez participer au forum à l’adresse https://forums.manning
.com/forums/learn-azure-in-a-month-of-lunches.

1.2 Création d’un environnement d’essai


Ce livre n’est pas surchargé en concepts et en architectures, mais porte plutôt sur la pratique
de la plateforme Azure. Pour l’utiliser, vous avez besoin d’un compte Azure.

1.2.1 Création d’un compte Azure gratuit


Azure propose un compte d’essai gratuit d’une validité de 30 jours comportant jusqu’à
200 dollars de crédit. Ce crédit gratuit devrait suffire pour que vous puissiez non seulement
parcourir l’ensemble des chapitres et des exercices, mais également explorer des possibilités
tout en vous amusant! Nombre de services et de fonctions Azure sont gratuits, même après la
période d’essai.

Essayer maintenant
Respectez les étapes décrites dans cette section pour créer votre compte Azure gratuit.

1 Ouvrez la page https://azure.microsoft.com/free dans votre navigateur et


sélectionnez le bouton Démarrer gratuitement, comme illustré à la figure 1.1.
2 Lorsque vous y êtes invité, connectez-vous à votre compte Microsoft. Si vous
avez besoin d’un compte Microsoft ou souhaitez en créer un nouveau, cliquez
sur le lien Créer un nouveau compte Microsoft.
3 Une fois connecté à un compte Microsoft, suivez les invites pour créer un
compte Azure gratuit, comme illustré à la figure 1.2.
a Saisissez vos données personnelles dans la section À propos de moi.

✦ Pour réduire le risque d’abus et de fraude, indiquez un numéro de télé-


phone afin que votre identité puisse être vérifiée par message texte ou par
téléphone.
Création d’un environnement d’essai 5

Figure 1.1 Pour réaliser tous les exercices de ce livre, créez un compte Azure gratuit si
vous n’en possédez pas déjà un.

✦ Cette vérification nécessite également une carte de crédit, mais il n'y a


aucun piège La facturation ne commence qu’après 30 jours ou lorsque
vous dépassez les 200 dollars de crédit offerts. Au terme de la période
d’essai, votre compte ne passera pas automatiquement à un abonnement
de type paiement à l’utilisation.
b Lisez et acceptez la déclaration de confidentialité et le contrat d’abonne-
ment d’Azure, puis cliquez sur Suivant.
3 La préparation de votre abonnement Azure peut prendre quelques minutes.
Une fois que le processus d’inscription est terminé et que le portail Azure
charge, parcourez rapidement les différentes options.
Si votre tableau de bord, à savoir la page d’accueil du portail, semble vide pour l’instant,
il commencera à ressembler à la figure 1.3 dès le chapitre suivant, lorsque vous entame-
rez la création de votre première machine virtuelle!
6 CHAPITRE 1 Avant de commencer

Figure 1.2 Remplissez les informations d’inscription sur Azure

Figure 1.3 Le portail Azure se tient prêt à créer vos propres applications et solutions
Création d’un environnement d’essai 7

L’essai est-il vraiment gratuit?


Azure dispose d’une place de marché qui compte des centaines d’images précompi-
lées (base des machines virtuelles) et des solutions que vous pouvez déployer. Nous
faisons référence à certaines des offres de cette place de marché tout au long du
livre, ce qui vous permet de déployer rapidement une suite d’applications.
Toutes ces offres de la Place de marché Azure ne sont pas gratuites – certains édi-
teurs tiers associent les coûts de licence ou d’assistance à la solution que vous
déployez. Par exemple, une machine virtuelle que vous déployez depuis Red Hat peut
engager des frais supplémentaires qui couvrent la licence et l’accord d’assistance
Red Hat. Ces frais ne sont pas pris en charge dans le crédit de votre essai gratuit;
seule l’utilisation classique est comprise.
Les exercices qui figurent dans ce livre reposent uniquement sur des ressources
incluses dans l’essai gratuit. Cependant, si vous explorez les autres offres intéres-
santes d’Azure sur la place de marché, faites attention à ce que vous développez.
Les solutions qui incluent des frais supplémentaires doivent clairement l’indiquer
avant le déploiement!

1.2.2 Exercice pratique complémentaire : création d’un compte gratuit GitHub


GitHub est un service Web gratuit que de nombreux organismes et individus utilisent pour
gérer des projets tels que le code, les modèles et la documentation. Azure comporte des cen-
taines de modèles et d’exemples de scripts gratuits que vous pouvez utiliser et auxquels vous
pouvez contribuer. Il s’agit de l’un des points forts de la communauté du code source libre :
partager et donner en retour.
Certains des exercices de ce livre emploient les ressources de GitHub. Même si
vous n’avez pas nécessairement besoin d’un compte pour tout ça, il est important
d’en créer un si vous voulez pouvoir enregistrer des modifications et commencer à
élaborer votre propre collection de modèles et de scripts. Bien que facultative, la créa-
tion d’un compte GitHub est fortement recommandée dans le cadre de la construc-
tion de votre environnement d’essai :
1 Ouvrez la page www.github.com dans votre navigateur Web. Pour créer un
compte GitHub gratuit, indiquez un nom d’utilisateur, une adresse de courriel
et un mot de passe.
2 Vous recevrez ensuite un message de validation provenant de GitHub. Cliquez
sur le lien dans le courriel pour activer votre compte.
3 Découvrez certains des référentiels Azure qui fournissent des exemples de
ressources :
a Modèles de démarrage rapide Azure – https://github.com/Azure/azure-quicks-
tart-templates
b Azure CLI – https://github.com/Azure/azure-cli

c Utilitaires DevOps Azure – https://github.com/Azure/azure-devops-utils

d Ressources du livre « Learn Azure in a month of Lunches » –


https://github.com/fouldsy/ azure-mol-samples
8 CHAPITRE 1 Avant de commencer

1.3 Aide
Ce livre ne peut pas couvrir toutes les fonctions proposées par Azure. Même si j’essayais, au
moment où vous lirez ce chapitre, je parie qu’Azure aura déjà proposé une nouveauté! En
effet, l’infonuagique évolue rapidement, et de nouveaux services et fonctions sont constam-
ment lancés. Je ne suis peut-être pas très objectif, mais si vous commencez à explorer Azure et
souhaitez en savoir plus sur les services supplémentaires, le site https://docs.micro-
soft.com/azure est un bon point de départ. Chaque service Azure est documenté et accompa-
gné d’exemples de démarrage rapide, de tutoriels, d’exemples de codes, de références de
développeurs et de guides d’architecture. En outre, vous pouvez accéder aux options d’assis-
tance gratuites et payantes.

1.4 Compréhension de la plateforme Azure


Avant de parcourir le reste du livre, prenons un peu de recul afin de comprendre ce qu’est
véritablement Azure et les services disponibles. Comme je l’ai mentionné précédemment,
Azure est un fournisseur de services infonuagiques à l’échelle mondiale. À l’heure où j’écris ces
mots, Azure est déjà actif dans 40 régions, et prévoit de l’être dans 10 autres. Chaque région
comporte un ou plusieurs centres de données. En comparaison, les deux autres principaux
fournisseurs, AWS et Google Cloud, opèrent dans 16 et 15 régions, respectivement.
L’infonuagique offre bien plus que de simples ressources informatiques. Azure
propose plus de 100 services, regroupés dans des familles de services connexes tels
que le calcul, le Web et le mobile, les conteneurs et l’identité. Grâce à cet éventail de
services, Azure couvre nombre de modèles de services différents. Prenons une part de
pizza pour le déjeuner afin de mieux comprendre les services proposés (Figure 1.4).
Maison Prendre + Cuire Livraison à domicile Restaurant
Table à manger Table à manger Table à manger Table à manger

Boissons Boissons Boissons Boissons

Four Four Four Four

Incendie Incendie Incendie Incendie

Pâte à pizza Pâte à pizza Pâte à pizza Pâte à pizza

Sauce tomate Sauce tomate Sauce tomate Sauce tomate

Garnitures Garnitures Garnitures Garnitures

Sauce Sauce Sauce Sauce

Vous gérez Le fournisseur gère

Figure 1.4 La pizza est utilisée comme modèle de service. En passant d’une pizza
maison, où vous achetez tous les ingrédients, à une pizza en restaurant où il vous suffit
de vous asseoir, les responsabilités et les exigences ne sont plus les mêmes.
Compréhension de la plateforme Azure 9

Dans ce modèle de service, quatre options s’offrent à vous. Plus vous avancez dans les options,
moins vous vous tracassez du processus menant à manger une part de pizza :
 Maison – Vous préparez la pâte, ajoutez la sauce, les garnitures et le fromage. Vous
cuisez la pizza dans votre four, allez chercher les boissons, puis vous vous asseyez à
votre table pour manger.
 À emporter – Vous achetez une pizza déjà préparée. Il vous suffit de la cuire dans votre
four, d’aller chercher les boissons et de vous asseoir à votre table pour manger.
 Livraison à domicile – Vous commandez une pizza qui est livrée chez vous. Il vous suf-
fit d’aller chercher les boissons et de vous asseoir à votre table pour manger.
 Restaurant – Vous voulez sortir et manger une pizza sans vous tracasser!

Maintenant que je vous ai ouvert l’appétit, examinons le modèle plus traditionnel qui intègre des
ressources informatiques (Figure 1.5). Ce modèle ressemble davantage à ce que propose Azure.
À mesure que vous avancez dans les modèles, vous gérez de moins en moins de ressources sous-
jacentes et pouvez accorder davantage de votre temps et de votre énergie à vos clients :
 Sur place – Vous configurez et gérez le centre de données dans son ensemble, comme les
câbles réseau, le stockage et les serveurs. Vous êtes responsables de tous les aspects de
l’environnement, de l’assistance et de la redondance de l’application. Cette approche
assure un contrôle maximum, mais avec une surcharge de travail importante.
 Infrastructure en tant que service (IaaS) – Vous achetez les ressources informatiques
essentielles auprès d’un fournisseur qui gère l’infrastructure de base. Vous créez et
gérez les machines virtuelles, les données et les applications. Le fournisseur de ser-
vices infonuagiques est responsable de l’infrastructure physique, de la gestion de
l’hôte et de la résilience. Vous pouvez toujours avoir une équipe à disposition pour
aider au déploiement des machines virtuelles, mais elle ne s’occupe pas de la ges-
tion de l’équipement physique.
Cette approche est idéale lorsque vous commencez à déplacer des applica-
tions en dehors de votre environnement sur place. La gestion et les opérations
étant souvent semblables à celles d’un environnement sur place, l’approche
IaaS constitue une progression naturelle pour les propriétaires d’applications,
de logiciels et d’entreprises qui souhaitent se familiariser au nuage.
 Plateforme en tant que service (PaaS) – Vous achetez la plateforme sous-jacente auprès
d’un fournisseur qui gère le système d’exploitation et les correctifs, en plus de vous
apporter vos applications et vos données. Inutile de vous inquiéter de vos machines
virtuelles ou du réseau. Votre équipe peut donc se concentrer sur la fiabilité et les
performances de l’application.
Cette approche marque généralement le moment où l’organisation informa-
tique et l’entreprise se montrent plus à l’aise avec l’exécution des applications
dans le nuage. Vous vous concentrez sur les applications et vos clients, et non
plus sur l’infrastructure derrière ces applications.
 Logiciel en tant que service (SaaS) – Vous avez simplement besoin d’accéder au logi-
ciel, pendant qu’un fournisseur s’occupe du reste. Les développeurs peuvent se
reposer sur une plateforme existante pour offrir des fonctions uniques ou per-
sonnalisées, sans avoir à entretenir une base de codes volumineuse.
Bien que cette approche puisse sembler effrayante au début, vous connaissez
et utilisez déjà certainement des suites de SaaS, telles que Salesforce, Office 365
ou les suites bureautiques de Google, Mail et Docs. Vous utilisez la messagerie,
10 CHAPITRE 1 Avant de commencer

créez des documents ou des présentations, ou gérez les coordonnées et les


informations de vente relatives à vos clients. Vous vous concentrez ainsi sur le
contenu que vous créez et gérez, et non sur l’exécution de l’application.
La plupart des applications que vous créez dans Azure rentrent dans les domaines IaaS et PaaS.
Les principales utilisations incluent les machines virtuelles et la mise en réseau virtuelle (IaaS),
ou les services Azure Web Apps, Functions et Cosmos DB (PaaS). Si vous êtes un développeur,
les solutions PaaS vous intéressent sûrement plus, car Microsoft couvre l’infrastructure qui vous
permet de vous concentrer sur votre code. Les experts en informatique exploreront davantage
les solutions IaaS afin de construire et de contrôler l’infrastructure Azure.

Soluons tradionnelles Infrastructure en tant Plateforme en tant Logiciel en tant que


sur place que service (IaaS) que service (PaaS) service (SaaS)

Applicaons Applicaons Applicaons Applicaons

Données Données Données Données

Intergiciel Intergiciel Intergiciel Intergiciel

Système d’exploitaon Système d’exploitaon Système d’exploitaon Système d’exploitaon

Virtualisaon Virtualisaon Virtualisaon Virtualisaon

Serveurs Serveurs Serveurs Serveurs

Stockage Stockage Stockage Stockage

réseau réseau réseau réseau

Vous gérez Le fournisseur gère

Figure 1.5 Modèle de services infonuagiques

N’arrêtez jamais d’apprendre


N’oubliez pas que même si une entreprise passe du modèle IaaS au modèle PaaS,
le rôle de l’informaticien garde toute son importance! En effet, il est crucial de com-
prendre ce qui se trame sous le modèle PaaS lorsque vous concevez une application
ou corrigez un problème. Même si vous êtes un expert en informatique, ne sautez
pas les chapitres sur les solutions PaaS d’Azure : vous pourrez apporter de la valeur
à votre entreprise et à vos clients si vous saisissez la transition vers ce modèle de

1.4.1 Virtualisation dans Azure


La virtualisation constitue la vraie magie derrière Azure. Les modèles IaaS, PaaS et SaaS
recourent à la virtualisation pour alimenter leurs services. Les concepts de la virtualisation
n’ont rien de nouveau, tirant leur origine dans les années 60. Au milieu des années 2000, la vir-
tualisation des serveurs dans le centre de données a commencé à se développer et, à l’heure
actuelle, seules quelques applications sont déployées sur des serveurs sur matériel nu plutôt
que d’être virtualisées.
Compréhension de la plateforme Azure 11

Des livres entiers sont dédiés à la virtualisation. En quelques mots, la virtualisation


divise logiquement les ressources physiques d’un serveur en ressources virtuelles, aux-
quelles il est ensuite possible d’accéder en toute sécurité par des charges de travail
individuelles. Une machine virtuelle représente l’une des ressources les plus cou-
rantes dans le domaine de l’infonuagique. Elle comporte un processeur virtuel
(vCPU), une mémoire virtuelle (vRAM), un stockage virtuel (vDisk) et une connecti-
vité réseau virtuelle (vNIC), comme illustré à la figure 1.6.

Hôte physique dans Azure


Machine virtuelle 1 Machine virtuelle 2
Applicaon Web IIS + .NET Applicaon Web node.js

Windows Server 2016 Ubuntu 16.04 LTS

vCPU vRAM vDisk vNIC vCPU vRAM vDisk vNIC

vCPU vCPU vRAM vRAM vDisk vDisk vNIC vNIC

Hyperviseur Hyper-V

CPU Mémoire Stockage NIC

Figure 1.6 Virtualisation en action sur un hôte physique dans Azure

En plus des serveurs physiques, le stockage et la mise en réseau sont désormais fréquemment
virtualisés, permettant à la plateforme Azure de définir rapidement tout ce dont vous avez
besoin dans le logiciel. Aucune interaction physique ni configuration manuelle des appareils
n’est requise. Vous n’avez pas à attendre qu’une autre équipe vous fournisse une adresse IP,
ouvre un port réseau ou ajoute de l’espace de stockage.
À la base, Azure s’exécute sur Windows (en quelque sorte). Une version modifiée
de l’hyperviseur Hyper-V alimente les serveurs informatiques. Hyper-V est un hypervi-
seur de type 1 (sur matériel nu), disponible depuis une décennie dans Windows Ser-
ver. Ne vous inquiétez pas, vous pourrez toujours exécuter Linux comme charge de
travail numéro un! Microsoft contribue fortement à la communauté et au noyau
Linux. En effet, certains des réseaux de base définis par le logiciel dans Azure sont ali-
mentés par une solution sur mesure reposant sur Debian Linux, un logiciel Open
Networking in the Cloud (SONiC), que Microsoft a déployé en code source libre.
Vous pouvez réaliser une visite virtuelle des centres de données de Microsoft sur
www.microsoft.com/cloud-platform/global-datacenters.
12 CHAPITRE 1 Avant de commencer

1.4.2 Outils de gestion


Tant de services Azure, mais comment les utiliser? Comme vous le voulez! Si vous souhaitez
tout sélectionner dans un navigateur Web, il existe un portail Web impressionnant. Vous êtes à
l’aise avec PowerShell? Justement, il existe un module Azure PowerShell. Une interface de
ligne de commande (CLI) multiplateforme est également proposée si vous êtes sur Mac ou
Linux. De plus, les développeurs peuvent interagir avec Azure par l'intermédiaire des API
REST en utilisant une variété de langages communs tels que .Net, Python et Node.js.
PORTAIL AZURE
Le portail Azure doit fonctionner dans n’importe quel navigateur Web moderne, vous évitant
d’avoir à installer quoi que ce soit sur votre ordinateur. Ce portail constitue également un
excellent moyen pour apprendre à créer et à gérer des ressources, vous permettant de voir
rapidement une représentation visuelle de l’ensemble.
De nouveaux services et de nouvelles fonctions étant sans cesse ajoutés à Azure, le
portail peut légèrement différer de ce que vous voyez sur les captures d’écran dans ce
livre ou la documentation en ligne et les blogues. La formulation d’un bouton peut
également différer, ou une nouvelle option peut être ajoutée, mais les opérations
restent toutes les mêmes. Bienvenue dans cet incroyable nouveau monde de l’info-
nuagique!
AZURE CLOUD SHELL
Vous avez envie de tapoter sur votre clavier et de saisir des commandes? Le portail inclut égale-
ment Azure Cloud Shell, comme illustré à la figure 1.7. Ce Cloud Shell est une console interac-
tive Web qui fournit un interpréteur Bash, l’interface de ligne de commande Azure et certains
outils de développement d’applications préinstallés tels que Git et Maven. La version
PowerShell fournit, comme son nom l’indique, un accès aux dernières cmdlets de commande
d’Azure PowerShell.
Vous pouvez accéder à Azure Cloud Shell depuis un navigateur Web sur n’importe
quel ordinateur depuis http://shell.azure.com, sans avoir à installer d’outils. Les édi-
teurs comme Visual Studio Code (http://code.visualstudio.com) fournissent l’accès
au Cloud Shell dans l’application. Une application Azure, disponible pour iOS et
Android, vous permet même d’utiliser Azure Cloud Shell directement depuis votre
iPhone.
Grâce à Azure Cloud Shell, vous avez toujours accès à la dernière version de l’inter-
face de ligne de commande ou à des outils PowerShell. Le stockage permanent est
associé, vous permettant de créer et d’enregistrer des scripts, des modèles et des
fichiers de configuration.
INTERFACE DE LIGNE DE COMMANDE ET OUTILS AZURE POWERSHELL LOCAUX
Bien qu’Azure Cloud Shell comporte de nombreux avantages, vous avez souvent besoin d’accé-
der à votre système de fichiers et à vos outils locaux. Vous pouvez installer l’interface de ligne
de commande ou Azure PowerShell localement afin de travailler à la fois avec les ressources
locales et les ressources Azure.
Dans ce livre, nous employons principalement l’interface de ligne de commande
Azure (à savoir la version 2.0). Il peut sembler étrange d’opter pour cette interface
plutôt que pour le PowerShell natif de Microsoft... L’avantage, toutefois, est que les
exemples et les exercices fonctionnent aussi bien dans Azure Cloud Shell que sur
Compréhension de la plateforme Azure 13

Figure 1.7 Azure Cloud Shell dans le portail Web

votre ordinateur, quel que soit le système d’exploitation utilisé. Bien qu’ils ne soient
pas repris dans la configuration de votre environnement, les guides suivants détaillent
l’installation des outils de gestion Azure sur votre ordinateur :
 Mise en route d’Azure PowerShell—
https://docs.microsoft.com/powershell/ azure/get-started-azureps
 Installation de l’interface de ligne de commande Azure –
https://docs.microsoft.com/cli/azure/install-azure-cli
Création d’une machine virtuelle

Prêt à découvrir à quelle vitesse vous pouvez configurer un serveur Web dans Azure? Dans
ce chapitre, nous nous penchons sur l’une des demandes les plus fréquentes en matière de
machines virtuelles : la création d’un serveur Web de base. Cette tâche constitue un excel-
lent exemple des composants clés de l’infrastructure en tant que service (IaaS) dans Azure.
Imaginons que vous travaillez dans un restaurant italien qui entend étendre ses activités et
accepter les commandes en ligne (livraison et à emporter). Pour établir votre présence sur
la toile, vous avez besoin d’un site Web. Dans les premières sections de ce livre, nous exami-
nons les différents services et fonctions proposés par Azure qui vous permettent de créer et
d’exécuter des applications Web IaaS comme PaaS. Vous pouvez dès lors prendre des déci-
sions réfléchies quant au moment de créer et d’exécuter une machine virtuelle pour ali-
menter un site Web, ainsi que quant au moment d’utiliser un PaaS pour le faire.
Dans ce chapitre, vous créez une machine virtuelle Ubuntu Linux et installez un serveur
Web de base. Ne vous inquiétez pas si vous ne maîtrisez pas Linux, l’exercice pratique à la fin
du chapitre porte sur la création d’une machine virtuelle Windows. Ubuntu étant une plate-
forme de serveur Web courante, elle représente un excellent point de départ pour en savoir
plus sur l’authentification SSH par clé publique. Vous apprendrez ensuite comment ouvrir
un port réseau pour que les clients puissent accéder à votre site sur Internet. Une vue
d’ensemble de haut niveau de cet environnement de base est illustré à la figure 2.1.

2.1 Création d’une machine virtuelle à partir de votre navigateur Web


L’interface de ligne de commande et les outils Azure PowerShell se veulent incroyablement
puissants, mais l’un des avantages d’Azure est qu’il est possible de déterminer le temps passé
à la construction d’un incroyable portail. Le portail Azure est un outil graphique sur le Web
qui vous permet de voir l’assemblage des différents composants et de vérifier visuellement
l’état général. Le portail comporte des fonctions uniques que ne proposent pas les autres
outils, et est très rapide à utiliser puisque vous n’avez rien à installer.

15
16 CHAPITRE 2 Création d’une machine virtuelle

Ouvrez le port 80
pour permere aux
clients de naviguer Client sur PC
Créez dans un Connectez-vous sur votre site.
navigateur MV Linux et installez les MV Linux
Web. paquets. Client sur
Serveur Web téléphone
de base intelligent

Client sur
tablee

Figure 2.1 En résumé, vous créez une machine virtuelle de base, vous vous connectez pour
installer un serveur Web, puis vous ouvrez un port réseau afin de permettre aux clients de naviguer
jusqu’au site Web.

Essayer maintenant
Ne perdons plus de temps! Entamez la création d’une machine virtuelle en respectant les
étapes suivantes.

1 Ouvrez la page https://portal.azure.com dans un navigateur Web. Connectez-


vous avec le compte que vous avez créé dans le chapitre précédent pour confi-
gurer votre environnement.
2 Une fois connecté, sélectionnez Créer une ressource dans le coin supérieur gauche du
tableau de bord.
3 Sélectionnez Calculer dans la liste des ressources que vous pouvez créer, puis sélection-
nez Afficher tout. Des centaines d’images sont disponibles, à partir desquelles vous pou-
vez former la base de toutes les machines virtuelles. Sélectionnez le serveur Ubuntu par
Canonical, puis choisissez Ubuntu 18.04 LTS. Il s’agit de la version la plus récente
d’Ubuntu, mais si une nouvelle version d’un soutien à long terme (LTS) est disponible
au moment où vous lisez ce livre, sélectionnez-la.
4 Pour commencer, sélectionnez Créer. Dans la fenêtre des paramètres qui s’ouvre, inscri-
vez le nom de votre machine virtuelle, par exemple webvm.
Remarquez le menu déroulant pour le type de disque de la machine vir-
tuelle. L’option par défaut indique d’utiliser un type de disque SSD. La section
suivante examine les types de disques dans Azure.

2.1.1 Azure Storage


Le stockage pour les machines virtuelles dans Azure constitue un vrai jeu d’enfant. Combien
de disques voulez-vous, de quelle taille et de quel type? Les deux premiers facteurs ne sont pas
vraiment propres à Azure. Alors, quels sont les types de stockage disponibles?
 Disques SSD premium – Utilisent des SSD haute performance et à faible latence.
Parfaits pour les tâches de production. Ce type est particulièrement utile pour
bénéficier des meilleures performances pour vos applications.
 Disques SSD standard – Utilisent les SSD standard. Offrent des performances
uniformes par rapport aux disques durs. Ce type est idéal pour les tâches de test
et de développement, ou en cas de production à faible demande et présentant
des contraintes budgétaires.
Création d’une machine virtuelle à partir de votre navigateur Web 17

 Disques durs standard – Utilisent des disques rotatifs normaux. Parfaits pour un accès
peu fréquent aux données, comme les données d’archivage ou les sauvegardes. Ce
type n’est pas recommandé pour l’exécution des tâches d’application.
Inutile de creuser plus en profondeur les spécificités de stockage pour créer un serveur Web
rapide. Vous en apprendrez davantage dans le chapitre 4. Pour l’instant, il vous suffit de savoir
que le choix d’une taille de machine virtuelle permet également de définir le type de stockage
utilisé.
Les disques virtuels sont des disques gérés Azure. Ces disques vous permettent de créer une
machine virtuelle et d’associer des disques de données supplémentaires sans vous soucier des
comptes de stockage sous-jacents, des limites de ressources ou des quotas de performance. Les
disques gérés sont également automatiquement chiffrés au repos : rien ne doit être configuré
pour sécuriser vos données!

2.1.2 Paramètres de base, suite


Laissons le stockage de côté et passons aux paramètres de base du portail.

Essayer maintenant
Poursuivrez la création de votre première machine virtuelle en respectant les étapes de
cette section.

5 L’option suivante dans le portail vous invite à saisir un nom d’utilisateur pour un
compte d’utilisateur. Ce dernier est créé sur votre machine virtuelle et correspond au
nom que vous saisissez pour vous connecter à la machine virtuelle.
6 L’option par défaut consiste à utiliser une clé SSH publique comme type d’authentifica-
tion. Tout au long de ce livre, nous utiliserons les clés SSH. Vous ne les connaissez pas?
Ne vous tracassez pas, elles ne sont pas si compliquées. Consultez la barre latérale sui-
vante pour obtenir de l’aide.
Créons une paire de clés publiques SSH avec Azure Cloud Shell. Sélection-
nez l’icône Cloud Shell en haut du tableau de bord, comme illustré à la
figure 2.2.

Paires de clés Secure Shell (SSH)


Secure Shell (SSH) est un protocole utilisé pour communiquer en toute sécurité avec des
ordinateurs à distance et représente la méthode la plus fréquente de se connecter à une
machine virtuelle Linux. Son utilisation est semblable à celle d’une connexion RDP (Remote
Desktop Protocol) à une machine virtuelle Windows, sauf sous Linux, la session SSH étant
généralement basée sur la console. Grâce au chiffrement à clé publique, vous pouvez utili-
ser une paire de clés numériques pour vous authentifier avec une machine virtuelle Linux à
distance.
Une paire de clés SSH comporte deux parties : une clé publique et une clé privée. La clé
publique est stockée sur votre machine virtuelle Linux dans Azure. Vous conservez une
copie de la clé privée. Lorsque vous devez vous connecter à votre machine virtuelle Linux,
la clé publique sur la machine virtuelle à distance est jumelée à la clé privée que vous
conservez localement. Si les paires de clés correspondent, vous accédez à la machine vir-
tuelle. Bien qu’il représente un peu plus, le chiffrement à clé publique constitue essentiel-
lement une excellente méthode de vérification de l’identité.
18 CHAPITRE 2 Création d’une machine virtuelle

(suite)
J’aimerais que vous preniez l’habitude d’utiliser les clés SSH pour vous connecter aux
machines virtuelles Linux. Ces clés se révèlent bien plus sûres que les mots de passe, car,
entre autres, elles ne sont pas sensibles aux attaques ciblant les mots de passe. Vous
devez toujours placer la sécurité au cœur de vos démarches, en particulier dans le nuage.

Figure 2.2 Sélectionnez et lancez le Cloud Shell dans le portail Azure en sélectionnant l’icône Shell.

7 La première fois que vous ouvrez le Cloud Shell, la création d’un stockage permanent
qui sera connecté à vos sessions en continu peut prendre quelques minutes. Ce stockage
vous permet d’enregistrer et de récupérer des scripts, des fichiers de configuration et
des paires de clés SSH. Acceptez toutes les invites pour autoriser la création de ce stoc-
kage.
8 Si nécessaire, sélectionnez Bash dans le menu déroulant dans le coin supérieur gauche
du Cloud Shell, comme illustré à la figure 2.3.

Figure 2.3 Les exercices de ce livre recourent principalement


à la version Bash du Cloud Shell. La première fois que vous
accédez au Cloud Shell, il chargera probablement l’outil
PowerShell. Sélectionnez la version Bash, puis attendez
quelques secondes pour qu’Azure intervertisse l’interpréteur.
Chaque fois que vous accédez au Cloud Shell après cette
modification, la version Bash se charge automatiquement.

9 Pour créer une paire de clés, saisissez la commande suivante :


ssh-keygen
Acceptez les invites par défaut en appuyant sur la touche Entrée. En quelques
secondes, vous disposez d’une paire de clés publiques SSH que vous pouvez uti-
liser avec l’ensemble de vos machines virtuelles! La commande ssh-keygen
désigne par défaut une clé d’une longueur de 2 048 bit et utilise la version 2 du
protocole RSA. Recommandé dans la plupart des cas, ce type assure un bon
équilibre en matière de sécurité. La figure 2.4 illustre une paire de clés SSH ter-
minées dans le Cloud Shell.
10 Pour afficher votre clé publique et l’utiliser avec une machine virtuelle, saisissez la com-
mande suivante :
cat .ssh/id_rsa.pub
Création d’une machine virtuelle à partir de votre navigateur Web 19

Figure 2.4 Une paire de clés SSH créée dans Azure Cloud Shell avec la commande ssh-keygen

Sélectionnez la sortie et copiez-la. Faites attention lorsque vous copiez la sortie


de la clé publique, car elle est sensible aux espaces supplémentaires ou aux
caractères manquants. Voici un exemple de clé publique SSH complète :
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPGaOBsfhJJOHAWAv+RLLR/vdUTzS9HOIj
JyzWWLsnu0ESH2M6R+YYPPNXv9X7dmVyM1zCXXEaLucpnyFjevbwPedxTgifyxgCFTgylr1
kg7o4EyCTGBGhTA+hSHuhXGXa12KPdKWehsPwHMa6Hs8fbt/in9Z1k2ZAwvbT+LWPcmJgNO
FuolIHOsOEeoQQqdXLrGa7NU/3fzSXdT9Y2BT1KLINc4KnwdOuONddLw3iANvK+Gkwax8iK
7IicKMoammwvJUCRf+MTEK9pZ84tfsc9qOIAdhrCCLbQhtoWjZpIwYnFk+SNBE8bZZtB8b2
vkDFNZlA5jcAd6pUR3tPuL0D iain@cc-a444-9fdee8b2-2014310619-v5cl5
ASTUCE Le Cloud Shell étant basé sur le navigateur, les raccourcis clavier
pour copier et coller peuvent fonctionner un peu différemment de ceux aux-
quels vous êtes habitué. Les touches Ctrl-Insert et Shift-Insert permettent de
copier et de coller, au lieu des combinaisons Ctrl-C et Ctrl-V habituelles.

11 Collez le contenu de votre clé dans la case Clé publique SSH. À cet instant, le portail
affiche un message si la clé est n’est pas correcte.
Veillez à ce que l’option Créer nouveau soit sélectionnée dans le groupe des
ressources, puis indiquez un nom. Je vous conseille de nommer les groupes de res-
sources par chapitre afin d’assurer une organisation cohérente. Par exemple,
nommez le groupe de ressources dans cet exercice azuremolchapter2. La
figure 2.5 affiche les différentes fenêtres et les divers volets du portail Azure à la
création de votre première machine virtuelle.
12 Sélectionnez l’emplacement le plus proche dans le menu déroulant Emplacement, puis
sélectionnez OK. Cet emplacement désigne l’endroit où s’exécute votre machine vir-
tuelle. Azure extrait l’emplacement exact, car plusieurs centres de données peuvent
exister dans chaque région. Dans Azure, vous indiquez une région et laissez la plate-
forme placer vos ressources en fonction de la disponibilité, de la capacité et des perfor-
mances.
20 CHAPITRE 2 Création d’une machine virtuelle

Figure 2.5 Créez une machine virtuelle Ubuntu Linux dans le portail Azure. Indiquez un nom de machine
virtuelle, puis saisissez un nom d’utilisateur et la clé publique SSH que vous avez créée. Créez un groupe de
ressources, puis sélectionnez votre emplacement Azure le plus proche.

2.1.3 Tailles de machines virtuelles


Différentes gammes de tailles de machines virtuelles existent dans Azure. Ces gammes com-
portent des groupes de types de matériel virtuel similaires qui sont ciblés pour certaines tâches.
Les tailles sont parfois mises à jour à mesure que de nouvelles offres de matériel et de tâche
apparaissent, mais les principales gammes demeurent constantes. Les types de gammes sont les
suivants :
 Usage général – Idéal pour les opérations de développement et de tests, ou les
bases de données et les serveurs Web de production à faible utilisation.
 Optimisé pour le calcul – Processeurs haute performance, tels que les serveurs
d’applications de production.
 Optimisé pour la mémoire – Options de mémoire plus importantes, comme
lorsque vous devez exécuter des bases de données volumineuses ou des tâches
qui nécessitent un travail de traitement considérable des données en mémoire.
 Optimisé pour le stockage – Haute performance à faible latence pour les applica-
tions nécessitant le disque.
 Processeur graphique – Machines virtuelles de graphiques basées sur Nvidia, si
vous avez besoin d’un rendu graphique ou d’un traitement vidéo.
 Calcul de haute performance (CHP) – Gammes composées de beaucoup de
fonctions : des processeurs à la mémoire en passant par le débit du réseau pour
les tâches les plus exigeantes.
Création d’une machine virtuelle à partir de votre navigateur Web 21

Quelle taille maximale peut avoir une machine virtuelle dans Azure? Même si la technologie
est en constante évolution, à l’heure actuelle, la plus grande machine virtuelle que vous pouvez
créer est une série M (de la gamme optimisée pour la mémoire), avec 128 processeurs virtuels
et 3,8 Tb de mémoire. Elle devrait suffire pour un serveur Minecraft, non?
Ce qu’il est important de saisir ici est que seul votre budget limite le nombre de machines
virtuelles et la quantité de processeurs et de mémoire que vous pouvez demander dans Azure.
Vous ne parviendrez probablement pas à créer des machines virtuelles de cette taille sur place
en situation réelle.

Essayer maintenant
Poursuivez la création de votre machine virtuelle en choisissant une taille à l’étape suivante.

13 Dans le volet Tailles du portail, choisissez l’une des tailles de machine virtuelle recom-
mandées, telles que D2S_v3, puis cliquez sur le bouton Sélectionner. Cette taille est pro-
bablement beaucoup trop puissante pour un serveur Web de base, mais elle permet de
créer rapidement la machine virtuelle et d’installer les paquets requis.
Si vous êtes passé d’un SSD à un disque dur à la page précédente, la liste des
tailles de machines virtuelles disponibles peut différer. Pour afficher la liste
complète des tailles disponibles, sélectionnez Afficher tout. Vous pouvez
consulter les informations relatives à la taille, telles que le nombre de proces-
seurs virtuels et la mémoire attribuée, le nombre maximal de disques de don-
nées qui peuvent être associés, et la taille du disque temporaire local.

Économies de coûts sur les machines virtuelles


Les machines virtuelles créées par défaut sont souvent trop puissantes par rapport à vos
besoins, mais elles sont rapides à déployer et à utiliser. Cette surpuissance permet de
réduire le temps consacré à l’installation des paquets lors de votre pause midi.
Pour ce qui est de la production, attardez-vous sur la mémoire, le processeur et le stockage
pour vos machines virtuelles. Créez des machines virtuelles de la taille appropriée. Cette
approche est identique à celle adoptée sur place, où vous pouvez vous retrouver avec des
machines virtuelles qui disposent de bien plus de mémoire ou de beaucoup plus de proces-
seurs que ce dont vous avez besoin.
Azure propose également un type de machine virtuelle particulier : la série B. Ces tailles de
machine virtuelle recourent à des ressources de mémoire et de processeur incroyables, et
vous pouvez utiliser des crédits bancaires pour les ressources de calcul inutilisées. Si vous
souhaitez économiser vos crédits Azure, vous pouvez choisir cette série de machines vir-
tuelles pour les exercices du livre. Elles sont proposées à un prix attractif et conviennent
parfaitement dans les situations ne nécessitant pas toujours énormément de ressources
en termes de mémoire et de processeur.

Maintenant que les informations de connexion, l’emplacement et la taille de machine virtuelle


sont sélectionnés, vous pouvez configurer certains paramètres clés de la machine virtuelle pour
la connectivité, la sauvegarde ou l’identité.
22 CHAPITRE 2 Création d’une machine virtuelle

2.1.4 Paramètres
Dans le volet Paramètres du portail, vous pouvez exa-
miner et modifier les paramètres du réseau virtuel,
comme illustré à la figure 2.6, ainsi que les para-
mètres de diagnostic, de sauvegarde et d’arrêt auto-
matique. Prenons une minute pour examiner
certains de ces concepts.
Même si cela apparaît évident, votre machine vir-
tuelle nécessite une connectivité réseau pour
atteindre votre site Web dans un navigateur Web. Cela
signifie que vous avez besoin non seulement d’un
réseau virtuel, mais également d’une connectivité
externe.
Vous pouvez créer une machine virtuelle qui est
uniquement associée à un réseau virtuel sans fournir
de connectivité externe, pour les serveurs d’applica-
tions ou de bases de données back-end par exemple.
Pour connecter ces machines virtuelles dans le cadre
d’opérations d’administration et de maintenance,
vous pouvez créer une connexion à un réseau virtuel
privé (RPV) ou utiliser une connexion privée dédiée
à Azure à partir de votre équipement de réseau sur
place. Dans Azure, cette connexion dédiée est appe-
lée ExpressRoute.
Pour connecter votre serveur Web à l’Internet
public, attribuez une adresse IP publique à la
machine virtuelle. En situation réelle, vous auriez pro-
bablement plus d’un serveur Web qui exécute cette
application. Un équilibreur de charge servirait de
passerelle entre vos clients sur Internet et distribue-
rait le trafic aux serveurs Web réels. Vous commencez
à vous y retrouver n’est-ce pas? Super, continuez
comme ça! Nous aborderons cette infrastructure plus
robuste aux chapitres 8 et 9. Pour l’instant, nous nous
en tiendrons à une seule machine virtuelle qui se
connecte directement à Internet (je sais, quelle hor-
reur!). Par défaut, Azure créée et assigne une adresse
IP publique pour vous.
Figure 2.6 Lorsque vous créez une
Dans Azure, un réseau virtuel est constitué des
machine virtuelle, vous pouvez modifier
mêmes fonctions clés qu’un réseau physique les paramètres du réseau virtuel, ajouter
classique : des extensions, configurer des
 Un espace adresse et un masque de sous- sauvegardes, etc. Pour ce chapitre, rien
ne doit être modifié, mais dans le cadre
réseau, comme 10.0.0.0/16
de vos propres déploiements, vous
 Un ou plusieurs sous-réseaux, que vous pourriez vouloir configurer des
pouvez utiliser pour répartir le trafic paramètres supplémentaires.
externe, de base de données ou d’appli-
cation, par exemple
Connexion à la machine virtuelle et installation du serveur Web 23

 Des cartes d’interface réseau virtuelles qui connectent des machines virtuelles à
un sous-réseau donné
 Des adresses IP virtuelles affectées à des ressources telles qu’une carte réseau
virtuelle ou un équilibreur de charge
Pour votre serveur Web de base, vous créez un type spécifique d’adresse IP virtuelle : une
adresse IP publique. Cette adresse IP publique est affectée à une carte réseau virtuelle et per-
met au trafic externe d’atteindre votre machine virtuelle. Vous contrôlez le flux de trafic vers
votre machine virtuelle avec des groupes de sécurité réseau. Imaginez un pare-feu classique que
vous utilisez pour ouvrir ou fermer différents ports et protocoles. Dans Azure, les groupes de
sécurité réseau verrouillent le trafic par défaut et autorisent uniquement le trafic spécifique
que vous définissez.
Également dans la fenêtre Paramètres, vous pouvez explorer d’autres domaines, notam-
ment les zones de disponibilité et les ensembles, ainsi que les extensions. Encore une fois, ces
thèmes sont vraiment intéressants (sans rire, il y a toujours quelque chose de nouveau à
apprendre dans Azure!) et je vous promets que nous reviendrons dessus dans les chapitres sui-
vants. Veillez noter l’option d’arrêt automatique, qui permet d’éteindre automatiquement les
machines virtuelles à une heure voulue. Cette fonction est très utile afin d’éviter de laisser les
machines virtuelles allumées et d’engranger des frais supplémentaires.

Essayer maintenant
Examinez les paramètres de votre machine virtuelle dans la fenêtre Résumé, puis créez
votre première machine virtuelle!

14 Dans la section Groupe de sécurité réseau, ouvrez un port pour les connexions de ges-
tion à distance. Par défaut, les machines virtuelles créées dans le portail sont verrouillées
et sécurisées depuis Internet. Dans le menu déroulant Sélectionner les ports publics
entrants, choisissez SSH (22). Nous nous pencherons plus en détail sur les règles et les
groupes de sécurité réseau dans le chapitre 5.
15 Sélectionnez OK dans le volet Paramètres. Examinez les informations indiquées dans la
fenêtre Résumé, puis sélectionnez Créer. La création de votre machine virtuelle prendra
quelques minutes. Une fois la machine virtuelle prête, vous pouvez vous connecter et
commencer à installer les paquets du serveur Web.

2.2 Connexion à la machine virtuelle et installation du serveur Web


Une fois votre machine virtuelle opérationnelle, vous pouvez utiliser la clé SSH que vous avez
créée il y a quelques minutes pour vous connecter à votre machine virtuelle. Vous pouvez dès
lors commencer à installer et à configurer le serveur Web, et tout ça dans le Cloud Shell.

2.2.1 Connexion à la machine virtuelle avec SSH


Découvrons comment obtenir rapidement les détails de connexion pour votre machine vir-
tuelle.

Essayer maintenant
Vous êtes nouveau sur Linux? Ne vous tracassez pas! Respectez les étapes suivantes pour
vous connecter à votre machine virtuelle.
24 CHAPITRE 2 Création d’une machine virtuelle

16 Dans le portail Azure, accédez aux machines virtuelles et sélectionnez-les dans la barre
de navigation sur le côté gauche de l’écran. La création de la machine virtuelle nécessi-
tant quelques minutes, cliquez sur le bouton Actualiser jusqu’à ce que le statut de la
machine virtuelle affiche Opérationnel, puis sélectionnez votre machine virtuelle et cli-
quez sur le bouton Connecter, comme illustré à la figure 2.7.
Avec une machine virtuelle Linux, vous consultez la commande SSH qui
inclut votre nom d’utilisateur et votre adresse IP unique. Copiez cette com-
mande de connexion SSH.
Sur une machine virtuelle Windows, le bouton Connecter télécharge un
fichier de connexion RDP sur votre ordinateur qui comprend déjà l’adresse IP
publique de votre machine virtuelle.

Figure 2.7 Sélectionnez votre machine virtuelle dans le portail Azure, puis sélectionnez Connecter pour
générer les informations de connexion SSH.

17 Si nécessaire, ouvrez une nouvelle fois le Cloud Shell. Pour passer facilement du Cloud
Shell au portail et vice-versa, vous pouvez réduire le Cloud Shell pour le garder dispo-
nible en arrière-plan.
18 Collez la commande SSH dans le Cloud Shell, puis appuyez sur Entrée. La clé SSH
créée plus tôt est automatiquement utilisée pour vous authentifier.
La première fois que vous vous connectez à une machine virtuelle avec la clé
SSH, elle vous invite à l’ajouter à une liste d’hôtes approuvés. Il s’agit d’une
autre couche de sécurité offerte par la clé SSH : si quelqu’un tente d’intercep-
ter le trafic et de vous diriger vers une autre machine virtuelle à distance, votre
client SSH local détecte un changement et vous avertit avant la connexion.
Acceptez l’invite à stocker la connexion à la machine virtuelle à distance. La
figure 2.8 illustre le processus de connexion SSH dans Azure Cloud Shell.
À ce stade, soit vous vous sentez comme chez vous, soit l’invite Linux vous semble encore
tout à fait étrangère. Ne vous inquiétez pas. Inutile de connaître un grand nombre de com-
mandes Linux, puisque chaque commande est expliquée au fur et à mesure. Cela dit, je vous
conseille fortement d’apprendre au moins quelques compétences de base en administration
Linux. Une grande partie du nuage repose sur les systèmes Linux, et la tendance est de privi-
légier les conteneurs et les microservices pour le développement et la gestion d’applications.
Connexion à la machine virtuelle et installation du serveur Web 25

Figure 2.8 Utilisez la chaîne de connexion indiquée dans le portail Azure pour créer une connexion
SSH à votre machine virtuelle à partir du Cloud Shell.
Si vous êtes un ancien de Windows, bienvenue! Restez avec moi, un petit quelque chose vous
attend à la fin de ce chapitre.

2.2.2 Installation du serveur Web


Créer une machine virtuelle? Fait. Se connecter à la machine virtuelle avec SSH? Fait. Vous
pouvez maintenant installer les paquets pour un serveur Web et vous préparer à le voir en
action.
Azure prend en charge différentes distributions Linux. Les outils de gestion des paquets et
les emplacements des fichiers de configuration varient légèrement entre chaque distribution.
Dans ce livre, nous utiliserons Ubuntu, car il s’agit de l’une des distributions les plus populaires
et documentées en matière d’infonuagique. Par conséquent, si vous rencontrez un problème,
nombreux sont les documents susceptibles de vous aider. Si vous souhaitez employer une distri-
bution différente à laquelle vous êtes déjà habitué, n’hésitez pas à l’utiliser! Faute de quoi, utili-
sez Ubuntu.

Essayer maintenant
À partir de session SSH sur la machine virtuelle, installez les paquets de serveurs Web avec
APT.
26 CHAPITRE 2 Création d’une machine virtuelle

1 Dans Ubuntu, vous installez des paquets avec un APT (Advanced Packing
Tool). Cet outil superpuissant de gestion des paquets installe automatiquement
tout paquet supplémentaire dont il a besoin. Il vous suffit de demander à instal-
ler un serveur Web pour que l’APT installe tous les composants requis.
Pour cet exemple, installez le pilotage Web de LAMP. Il s’agit probablement
de l’ensemble de composants Web le plus fréquent : Linux, Apache (serveur
Web), MySQL (serveur de base de données) et PHP (langage de programma-
tion Web) :
sudo apt-get update && sudo apt install -y lamp-server^
La première commande met à jour les paquets disponibles – une opération
appropriée permettant de vous assurer que vous pouvez installer les packages les
plus récents. Une fois cette première commande terminée, vous exécutez la
commande suivante avec &&. Pourquoi ne pas simplement commencer une nou-
velle ligne pour la prochaine commande? Les signes && exécutent la commande
suivante uniquement si la commande précédente a réussi. Par exemple, si
aucune connectivité réseau n’a permis à apt d’obtenir les derniers paquets (évi-
demment que vous devez disposer d’une connectivité réseau pour vous connec-
ter au départ!), alors il est totalement inutile d’exécuter la commande install.
Si la commande update est réussie, apt détermine ensuite les paquets sup-
plémentaires nécessaires et lance l’installation de lamp-server. Pourquoi le
signe du caret apparaît-il à la fin (^)? Il indique à apt d’installer le groupe de
paquets qui composent le serveur LAMP, et pas uniquement un seul paquet
nommé lamp-server.
2 L’installateur peut vous demander un mot de passe ou utilise par défaut un mot de
passe MySQL vide. Cette démarche n’est pas très sûre et pour une utilisation en situa-
tion réelle, il est préférable de spécifier un mot de passe fort. Dans le chapitre 15, nous
abordons des thèmes vraiment chouettes et enregistrons un mot de passe sécurisé dans
Azure Key Vault qui s’intègre automatiquement dans cet assistant d’installation MySQL.
3 L’installation de tous les paquets pour votre pilotage Web de LAMP dure quelques
minutes, puis vous avez terminé. Saisissez exit pour vous déconnecter de votre
machine virtuelle et revenir à l’invite du Cloud Shell.
Et voilà! Votre serveur web est opérationnel, mais vous ne pouvez pas y accéder dans un naviga-
teur Web pour l’instant. Pour ce faire, vous devez autoriser le trafic Web pour atteindre la
machine virtuelle.

2.3 Autorisation du trafic Web pour atteindre la machine virtuelle


Bien que votre serveur Web soit prêt, si vous saisissez l’adresse IP publique de votre machine
virtuelle dans un navigateur Web, la page ne se charge pas. Pourquoi? Vous vous souvenez des
groupes de sécurité réseau dont nous avons brièvement parlé? Lorsque vous créez la machine
virtuelle, un groupe de sécurité réseau a été créé pour vous. Une règle a été ajoutée qui permet
la gestion à distance : dans notre cas, il s’agissait de la clé SSH. Si vous créez une machine vir-
tuelle Windows, une règle est ajoutée, permettant la connexion RDP. Mais c’est tout, le reste de
la machine virtuelle est verrouillé. Pour permettre aux visiteurs d’accéder à votre serveur Web
via Internet, vous devrez créer une règle dans le groupe de sécurité réseau qui autorise le trafic
Web. Autrement, personne ne pourra commander de pizza!
Autorisation du trafic Web pour atteindre la machine virtuelle 27

2.3.1 Création d’une règle autorisant le trafic Web


Mélangeons le tout et utilisons l’interface de ligne de commande Azure afin de créer une règle
pour le trafic Web. L’interface de ligne de commande Azure est disponible dans le Cloud Shell,
vous n’avez rien à installer. Nous abordons plus en détail les groupes de sécurité réseau et la
mise en réseau virtuelle dans le chapitre 5. Pour l’instant, nous allons vérifier la rapidité et la
puissance de l’interface de ligne de commande Azure avec une seule commande.

Essayer maintenant
Ouvrez Azure Cloud Shell et respectez les étapes suivantes pour voir l’interface de ligne de
commande Azure en action.

1 Si vous avez fermé la fenêtre du Cloud Shell, ouvrez-la une nouvelle fois depuis
le portail Azure. Veillez à ce que l’interpréteur Bash charge, et non l’outil
PowerShell. Si nécessaire, passez à la version Bash.
2 Pour afficher l’interface de ligne de commande Azure et les modules installés, inscrivez az
--version. La liste des modules et des numéros de version s’affiche. Ce qui est extraordi-
naire avec le Cloud Shell, c’est que la version la plus récente est toujours disponible.

REMARQUE Si vous êtes attentif, vous aurez peut-être remarqué que la com-
mande génère des informations sur la version de Python. Pourquoi ce point est-il
important? Python est un langage de programmation puissant et populaire.
L’interface de ligne de commande Azure est rédigée en Python, ce qui en fait
une interface multiplateforme et disponible pour que vous puissiez installer la
machine virtuelle sur n’importe quel ordinateur dans le cas où vous ne voudriez
pas toujours utiliser le Cloud Shell. Afin de rester dans la lignée des efforts de
Microsoft visant à contribuer à la communauté du code source libre, l’interface
de ligne de commande Azure est disponible sur GitHub pour toute personne qui
souhaiterait apporter sa contribution et ses suggestions, ou encore signaler des
problèmes (https://github.com/Azure/azure-cli).

3 Pour ouvrir un port, vous devez indiquer le nom de la machine virtuelle et son groupe
de ressources, ainsi que le numéro de port. Pour le trafic Web, vous devez ouvrir le
port 80. Saisissez le groupe de ressources (-g) et le nom de la machine virtuelle (-n)
spécifiés à la création de votre machine virtuelle :
az vm open-port -g azuremolchapter2 -n webvm --port 80

2.3.2 Affichage du serveur Web en action


Maintenant que vous disposez d’un port ouvert vers votre machine virtuelle, regardons ce qu’il
se passe lorsque vous tentez d’y accéder dans un navigateur Web :
1 Dans le portail Azure, sélectionnez votre machine virtuelle si vous vous en êtes
éloigné.
2 L’adresse IP publique est reprise dans le coin supérieur droit de la page d’aperçu de la
machine virtuelle, comme illustré à la figure 2.9. Sélectionnez l’adresse et copiez-la.
28 CHAPITRE 2 Création d’une machine virtuelle

Figure 2.9 Sélectionnez votre machine virtuelle dans le portail Azure pour afficher ses informations.
L’adresse IP publique est affichée en bas à droite.

3 Dans votre navigateur Web, ouvrez un nouvel onglet ou une nouvelle fenêtre, et collez-y
l’adresse IP publique. Le site Web Apache charge par défaut, comme illustré à la
figure 2.10! On est bien d’accord, il ne ressemble pas du tout à un restaurant italien,
mais vos fondations sont prêtes pour l’arrivée de votre code et la création de votre appli-
cation!

Figure 2.10 Pour afficher votre serveur Web en action et consulter la page par défaut
d’Apache 2, saisissez l’adresse IP publique dans un navigateur Web.
Nettoyage des ressources 29

2.4 Exercice : création d’une machine virtuelle Windows


Nous avons avancé étape par étape dans l’installation du pilotage de LAMP sur une machine
virtuelle Ubuntu Linux. Cette plateforme est assez commune pour les sites Web, mais vous
pourriez vouloir un peu plus de particularité si vous travaillez avec Windows. Vos équipes de
développement ou vos décideurs commerciaux peuvent vouloir utiliser .NET, par exemple.
Vous pouvez exécuter .NET Core sur les machines virtuelles Linux, donc ne laissez pas le lan-
gage orienter votre décision.
À partir de ce que vous avez appris dans ce chapitre, essayez de créer une machine virtuelle
qui exécute Internet Information Services (IIS). Quelques conseils :
 Vous avez besoin d’une machine virtuelle qui exécute Windows Server 2016.
 Vous utilisez RDP, et non SSH, donc attendez-vous à une expérience de
connexion un peu différente.
 Dans Server Manager, recherchez l’option permettant d’ajouter des rôles et des fonctions.
 Vous devez installer le serveur Web (IIS).

2.5 Nettoyage des ressources


Lorsque vous créez des ressources dans Azure, le compteur de facturation se met à tourner.
Comme vous êtes facturé à la minute, il est judicieux de prendre de bonnes habitudes et de ne
pas laisser des ressources telles que les machines virtuelles tourner une fois que vous avez ter-
miné. Deux méthodes permettent d’arrêter les frais de facturation pour l’exécution d’une
machine virtuelle :
 Annuler l’assignation d’une machine virtuelle – Vous pouvez sélectionner le bouton
Arrêter dans le portail pour arrêter et annuler l’assignation d’une machine vir-
tuelle. Cette opération libère toutes les ressources de calcul et de réseau détenues.
 Supprimer une machine virtuelle – Cette option semble assez évidente. S’il ne reste plus
rien dans Azure, vous n’avez plus rien à payer. Veillez à en avoir terminé avec la machine
virtuelle avant de la supprimer, car aucun bouton Restaurer n’existe dans Azure!
Je vous conseille de créer un groupe de ressources pour chaque déploiement d’application
lorsque vous commencez un projet dans Azure. À mesure que vous avancerez dans les exer-
cices de ce livre, c’est ce que vous ferez. Si vous nommez vos groupes de ressources par cha-
pitre, comme azuremolchapter2, il sera plus facile d’assurer le suivi de vos ressources et de
déterminer les éléments à supprimer. Cette technique facilite quelque peu le nettoyage, car
vous pouvez alors supprimer la totalité du groupe de ressources à la fin de chaque chapitre. Par
conséquent, sélectionnez Groupes de ressources dans le menu de navigation à gauche, ouvrez
chaque groupe de ressources que vous avez créé dans ce chapitre, puis sélectionnez Supprimer
le groupe de ressources, comme illustré à la figure 2.11. Pour confirmer, vous devez indiquer le
nom du groupe de ressources.

Figure 2.11 Pour économiser des coûts, supprimer les groupes de ressources lorsque vous n’en avez
plus besoin.
30 CHAPITRE 2 Création d’une machine virtuelle

Si vous avez l’habitude de supprimer des ressources à chaque fin de tâche, vous n’aurez aucun
problème à le faire tout au long de ce livre pour économiser des crédits gratuits Azure! Annu-
lez au moins l’assignation de votre machine virtuelle à la fin de chaque leçon afin de pouvoir
reprendre le jour suivant et interrompre la facturation.

2.6 Houston, nous avons un problème


Vous rencontrerez parfois des problèmes dans Azure. Voilà, c’est dit. En règle générale, la
plateforme Azure réagit bien aux problèmes qui surviennent lorsque vous créez des
ressources :
 L’interface de ligne de commande ou Azure PowerShell réalise un compte
rendu des commandes que vous exécutez et détecte immédiatement tout pro-
blème. L’outil Azure PowerShell affiche généralement un message dans un joli
rouge pour attirer votre attention.
 L’interface de ligne de commande Azure se montre un peu plus mystérieuse,
car elle inclut habituellement les réponses aux appels API REST sous-jacents du
serveur. Si tout ceci est nouveau pour vous, quelques manipulations réussies et
ratées peuvent s’avérer nécessaires pour que vous compreniez mieux. Grâce
aux réponses REST, vous pouvez copier et coller les messages d’erreur dans
votre moteur de recherche favori et obtenir des résultats probants qui vous
aideront à trouver une solution.

Besoin d’une pause? Nous venons tout juste de commencer!


Lorsque vous ouvrez une page Web dans votre navigateur, votre ordinateur communique
avec un serveur Web à travers HTTP. Je peux presque jurer que vous avez déjà vu un mes-
sage d’erreur 404 sur un site Web. Ce message signifie que la page Web n’a pas pu être
trouvée. D’autres erreurs courantes sont la 403, lorsque vous n’êtes pas autorisé à consul-
ter la page, et la 500, quand le serveur rencontre une erreur.
Même lorsque tout se déroule bien, votre navigateur reçoit des messages 200 lorsque la
page se charge correctement ou des messages 301 si une page a été redirigée vers un nou-
vel emplacement. Vous n’avez pas besoin de comprendre et de garder une trace de tous
ces codes, c’est simplement de cette façon que HTTP simplifie la communication entre les
ordinateurs.
J’ai parlé plus tôt de la façon de créer et de gérer les ressources Azure dans le portail Web,
l’interface de ligne de commande ou PowerShell. Tous les services Azure sont accessibles
via les interfaces de programmation d’applications (API) de transfert d’état représentation-
nel (REST).
En d’autres termes, les API REST désignent (en quelque sorte) une méthode standardisée
d’exposer des services par HTTP. Vous utilisez des requêtes HTTP standard comme GET et
POST pour demander des informations ou apporter une modification et, une fois que la
plateforme accepte et traite la demande, vous recevez un message d’état. Azure dispose
d’un ensemble bien défini d’API REST.
Inutile de comprendre tout ce qu’elles impliquent. Sachez simplement que lorsque vous
voyez un message d’erreur, le format n’est pas toujours lisible pour l’homme. En effet, par-
fois, vous recevez la réponse HTTP brute de l’API REST que vous devez déchiffrer par vous-
même. Cette fois encore, collez l’erreur dans votre moteur de recherche. Il est fort probable
qu’une personne ait déjà rencontré ce problème et ait fourni une réponse plus compréhen-
sible du problème et de la solution à apporter.
Houston, nous avons un problème 31

Les problèmes les plus fréquents rencontrés avec les machines virtuelles surviennent lorsque
vous vous connectez à votre machine virtuelle. Vous pourriez vous connecter pour une admi-
nistration à distance avec SSH ou RDP, ou tenter d’accéder à vos applications au moyen d’un
navigateur Web ou d’un bureau client. Ces problèmes sont souvent liés au réseau. Je ne compte
pas blâmer le réseau avant les prochains chapitres, donc voici quelques astuces rapides à
appliquer :
 Pouvez-vous vous connecter à d’autres machines virtuelles Azure ou à des appli-
cations fonctionnant dans Azure? Dans le cas contraire, un problème local sur
votre réseau empêche probablement l’accès.
Si vous parvenez à vous connecter à d’autres ressources Azure, assurez-vous
d’avoir ouvert les règles du groupe de sécurité réseau que j’ai abordées à la
section 2.3. Dans le chapitre 5, nous les examinerons plus en détail.
 Pour les problèmes d’authentification, testez les astuces suivantes :
– Confirmez que vous avez bien les bonnes clés SSH. À la création de la
machine virtuelle, Azure doit vous dire si la clé publique n’est pas valide.
Cependant, si vous disposez de plus d’une clé privée, vérifiez que vous utili-
sez la bonne!
– Pour les problèmes de RDP, essayez de vous connecter à localhost\<nomutili-
sateur> et saisissez votre mot de passe. Par défaut, la plupart des clients RDP
tentent de présenter des identifiants réseaux ou locaux, alors que votre
machine virtuelle ne les comprend pas.
Azure Web Apps

Dans le chapitre précédent, nous avons créé une machine virtuelle et avons installé
manuellement des paquets pour exécuter un serveur Web de base. Si jamais vous êtes
impatient de commencer, vous pourriez construire un restaurant italien en ligne. L’une
des principales utilisations des machines virtuelles Azure couvre l’exécution des applica-
tions Web, généralement à l’échelle. Les applications Web constituent une tâche aisée
pour les machines virtuelles. Aisée si, bien sûr, vous aimez également les opérations de
maintenance qui accompagnent la gestion de toutes ces machines virtuelles. Vous savez,
les activités amusantes comme les mises à jour logicielles, les correctifs de sécurité, la jour-
nalisation centralisée ou encore les rapports de conformité. Et si vous pouviez bénéficier
de toute la puissance d’un serveur Web sécurisé pour exécuter vos applications Web, y
compris la possibilité de mise à l’échelle automatique pour répondre aux demandes, sans
avoir à créer et à gérer toutes ces machines virtuelles? Permettez-moi alors de vous présen-
ter le service Azure Web Apps.
Dans ce chapitre, nous comparons l’approche de l’infrastructure en tant que
service (IaaS) des machines virtuelles et des serveurs Web à l’approche de la plate-
forme en tant que service (PaaS). Vous découvrirez les avantages du service Azure
Web Apps lorsque vous créerez une application Web et apprendrez à travailler avec
ses versions de développement et de production. Vous assimilerez également les
méthodes de déploiement automatiquement pour votre application Web à partir
d’un contrôle de code source, tel que GitHub. Ce processus est illustré à la
figure 3.1. Azure Web Apps vous permet de déployer et d’exécuter votre restaurant
italien en ligne en quelques minutes seulement, sans avoir à installer ni à configu-
rer une machine virtuelle et des paquets de serveurs Web.

32
Aperçu et concepts du service Azure Web Apps 33

Créer un Créer une Déployer l’exemple


App Service App Service
service applicaon d’applicaon de
d’applicaon Plan de service Web GitHub Applicaon Web
Web
d’applicaon Applicaon Site

Figure 3.1 Dans ce chapitre, vous créez un plan de service d’application et une application Web
de base, puis vous déployez un site Web depuis GitHub.

3.1 Aperçu et concepts du service Azure Web Apps


Avec Azure Web Apps, vous plongez petit à petit dans le monde merveilleux des solutions
PaaS. Si vous pensez que les machines virtuelles sont uniquement synonymes de services info-
nuagiques, vous allez être étonné. Au début de ce livre, j’ai parlé de l’achat de la puissance de
calcul et de l’orientation applications/clients. Lorsque vous venez de solutions IaaS, telles
que les machines virtuelles, pour arriver aux solutions PaaS, comme les applications Web, vos
applications et vos clients font l’objet d’une attention accrue.
L’exécution d’applications Web sur des machines virtuelles IaaS requiert la gestion
du système d’exploitation, des mises à jour des applications, des règles de sécurité et
de trafic, ainsi que la configuration du système dans son ensemble. Avec le service
Web Apps, vous téléchargez votre application Web et toutes ces tâches de gestion sont
gérées pour vous. Maintenant, vous pouvez vous consacrer à l’amélioration de l’appli-
cation pour vos clients ou à l’augmentation de la disponibilité grâce aux options de
mise à l’échelle et de gestion du trafic.
Est-ce que cela implique que vous ne devrez jamais exécuter de machines virtuelles
pour héberger une application Web? Probablement pas. Il n’est pas toujours inutile
d’exécuter la pile d’applications et de la configurer vous-même. Mais le service Web
Apps peut vous présenter nombre de situations dans lesquelles il est préférable de lais-
ser le service faire.

3.1.1 Langages et environnements pris en charge


Quelle flexibilité le service Web Apps offre-t-il en termes de langages de programmation que
vous pouvez utiliser pour créer votre application Web? Une flexibilité accrue! Deux plate-
formes majeures permettent d’exécuter le service Web Apps : Windows et Linux. La version
Windows de Web Apps est utilisée depuis un moment et propose différents langages en plus
d’ASP.NET et .NET Core. Vous pouvez exécuter les applications Web Node.js, Python, Java et
PHP en mode natif. Si vous utilisez Web Apps sur Linux, vous pouvez également opter pour
.NET Core ou Ruby. Si vous souhaitez vous démarquer et exécuter votre application Web
dans des conteneurs, le service vous permet également d’exécuter des conteneurs Docker en
mode natif pour Linux. Nous aborderons les conteneurs et Docker plus en détail dans le
chapitre 19. Pour l’instant, sachez que vous avez le choix grâce au service Web Apps!
Quand ce service peut-il sembler inutile? Dans le cas où vous voudriez vous triturer
les méninges avec une application Web écrite en Perl, par exemple. Dans cette situa-
tion, vous devriez probablement exécuter des machines virtuelles IaaS que vous gérez
vous-même, car Perl n’est pas pris en charge dans Web Apps. Cependant, ce service
prend en charge les langages de programmation Web les plus courants que vous pour-
34 CHAPITRE 3 Azure Web Apps

riez vouloir utiliser. Et puis, vous devriez probablement rechercher une version plus
récente de votre application plutôt qu’une rédigée en Perl...
Le service Web Apps prend en charge non seulement différents langages, mais
également différentes versions de ces langages. Prenez PHP, par exemple : en règle
générale, vous avez le choix entre trois ou quatre versions de PHP adaptées à votre
application. Mieux encore, inutile de vous soucier des dépendances sur le serveur
Web sous-jacent pour la prise en charge, comme vous devriez le faire si vous gériez
une machine virtuelle IaaS par vos propres moyens. Python constitue un autre
exemple de différences entre les versions stables 2.7 et 3.4 (et ultérieures), comme
illustré à la figure 3.2.

Figure 3.2 Sélectionnez une version spécifique d’un langage dans les
paramètres d’application Web Apps.

En outre, le service Web Apps tient ses correctifs de sécurité à jour. Mais ne vous attendez pas
à ce que les versions plus anciennes de PHP ou de Python soient prises en charge indéfini-
ment. En effet, elles finiront par être abandonnées après un certain temps. Une fois encore,
vous serez peut-être alors obligé d’exécuter vos machines virtuelles IaaS vous-même si votre
application requiert une version plus ancienne. Mais si vous avez besoin d’utiliser une version
plus ancienne d’un langage donné pour prendre en charge une ancienne application, ne
vous limitez pas à une approche de maintenance constante. Tentez toujours de déplacer ces
anciennes applications vers des plateformes prises en charge plus modernes.

3.1.2 Élaboration de différentes versions avec des emplacements de déploiement


Les emplacements de déploiement créent un environnement intermédiaire pour votre applica-
tion Web. Vous pouvez intégrer de nouvelles versions de votre application dans un emplace-
ment de déploiement et les exécuter à l’aide de variables environnementales ou de
connexions de bases de données, sans affecter le site. Une fois que vous êtes satisfait de votre
application dans un emplacement de déploiement, vous pouvez basculer cette version sur le
site en quelques secondes. Le site déjà établi passe alors dans un emplacement de déploie-
ment qui lui est propre, se transformant en une version archivée. Si nécessaire, vous pouvez
également renvoyer l’application en production.
Le nombre d’emplacements de déploiement disponibles varie en fonction du
niveau de l’application Web que vous sélectionnez. Un plus grand nombre d’emplace-
ments permet l’utilisation de plusieurs versions intermédiaires par différents déve-
loppeurs à mesure qu’ils évaluent et testent leurs propres mises à jour.
Création d’une application Web 35

3.2 Création d’une application Web


Maintenant que vous avez quelques notions théoriques, jetons un œil à une application Web
en action, qui se déroule en plusieurs parties. Tout d’abord, vous créez l’application Web de
base et affichez le site par défaut dans votre navigateur. Ensuite, vous utilisez un exemple de
page Web fourni dans GitHub et le transférez dans Azure. Si vos développeurs Web ont déjà
commencé à créer une interface pour votre restaurant italien en ligne, votre site de base est
alors prêt à charger.
REMARQUE Si vous n’avez jamais utilisé Git avant, ne vous inquiétez pas.
Vous n’avez pas besoin de saisir l’utilité de Git à ce stade, vous pourrez vous
essayer à ses fonctions à la fin du chapitre.

3.2.1 Création d’une application Web de base


La première étape vise à créer l’application Web dans Azure et à s’assurer que la page par
défaut charge.

PaaS et non IaaS


Cette application Web est une nouvelle ressource et est séparée des machines virtuelles
comme celles que vous avez créées dans le chapitre précédent. La machine virtuelle que vous
avez créée au chapitre 2 se réfère à une approche IaaS pour la création et l’exécution d’appli-
cations Web. L’approche PaaS est associée au service Web Apps. Aucune véritable relation
ne lie les deux. En réalité, si vous avez suivi les conseils du chapitre précédent et avez sup-
primé votre machine virtuelle, cette application Web s’exécute sans machine dans votre abon-
nement Azure!

Essayer maintenant
Pour créer votre application Web, procédez comme décrit ci-dessous.

1 Ouvrez la page https://portal.azure.com dans un navigateur Web et connectez-


vous à votre compte Azure.
2 Dans le portail, sélectionnez Créer une ressource dans le coin supérieur gauche
du tableau de bord.
3 Choisissez Web + Mobile dans la liste des ressources que vous pouvez créer, puis
sélectionnez Application Web.
4 Saisissez un nom pour votre application Web. Ce nom doit être unique, car il
crée l’URL de votre application Web sous la forme http://<nom>.azureweb-
site.net. Si jamais vous vous posiez la question, vous pouvez en effet appliquer
un nom de domaine personnalisé. Pour l’instant, utilisez l’adresse azureweb-
sites.net par défaut.
5 Par défaut, un nouveau groupe de ressources est créé. Pour assurer une cer-
taine organisation comme au chapitre 2, je vous suggère de nommer ce groupe
de ressources azuremolchapter3.
6 Vous pouvez utiliser un hôte Linux pour vos applications Web en mode natif,
mais pour cet exercice, choisissez Windows comme système d’exploitation s’il
n’est pas déjà sélectionné.
7 Sélectionnez Plan App Service/Emplacement, puis cliquez sur Créer nouveau.
Prenons une minute pour parcourir les options disponibles.
36 CHAPITRE 3 Azure Web Apps

PLANS APP SERVICE


Le service Web Apps fait partie de la gamme élargie App Service dans Azure. App Service
inclut également les applications Mobile Apps, API Apps et Logic Apps. À l’exception des
applications Logic Apps, toutes les applications sont disponibles dans les régions où Azure
exerce ses activités. Le site https://azure.microsoft.com/regions/services permet de véri-
fier la disponibilité des services Azure par région. Nombre de services sont disponibles aux
quatre coins du monde.
Lorsque vous devez créer une ressource App Service, comme une application Web,
vous créez ou utilisez un plan de service existant. Le plan de service définit la quantité
de ressources disponibles, l’automatisation disponible pour la mise à l’échelle et la
sauvegarde de votre application Web, ainsi que le niveau de disponibilité nécessaire à
la création de votre site avec des emplacements intermédiaires et Traffic Manager.
Comme pour à peu près tout, vous obtenez ce pour quoi vous payez. Chaque niveau
de service s’appuie sur les fonctions des niveaux inférieurs, en ajoutant généralement
plus de stockage et de ressources.
Les quatre principaux niveaux de plan de service sont les suivants :
 Gratuit/Partagé – Recourt à une infrastructure partagée, offre un stockage minimal
et ne propose aucune option de déploiement pour différentes versions intermé-
diaires, routage de trafic ou sauvegardes. Le niveau Partagé vous permet d’utiliser
un domaine personnalisé, engendrant des frais par rapport au niveau Gratuit.
 De base – Fournit des ressources de calcul dédiées pour votre application Web. Ce
niveau vous permet d’utiliser SSL et de mettre manuellement à l’échelle le nombre
d’instances de l’application Web que vous exécutez.
 Standard – Ajoute des sauvegardes quotidiennes, une mise à l’échelle automatique
des instances de l’application Web et des emplacements de déploiement, et vous
permet d’acheminer les utilisateurs vers Traffic Manager.
 Premium – Assure des sauvegardes plus fréquentes, un stockage accru et un plus
grand nombre d’emplacements de déploiement et d’options de mise à l’échelle
des instances.

Cas de l’isolation
Avec des solutions PaaS comme Web Apps, l’infrastructure est délibérément abstraite.
Comme le nom de certains des niveaux de plan de service l’indique, les applications Web
s’exécutent sur une plateforme partagée de ressources disponibles. Ce n’est pas tout de dire
que les applications Web ne sont pas sécurisées et que d’autres peuvent consulter vos don-
nées privées! Des raisons de conformité ou de réglementation peuvent vous obliger à exécu-
ter vos applications dans un environnement isolé et contrôlé. Accédez aux environnements
App Service : ces environnements isolés vous permettent d’exécuter les instances App Ser-
vices, comme les applications Web, dans une partie segmentée d’un centre de données
Azure. En plus de contrôler le trafic réseau entrant et sortant, vous pouvez mettre en place
des pare-feu et créer des connexions de réseau privé virtuel (RPV) sur la base de vos res-
sources sur place.
L’ensemble de ces composants d’infrastructure sont en grande partie extraits des environne-
ments App Service, mais cette approche fournit un juste équilibre lorsque vous souhaitez
bénéficier de la flexibilité des solutions PaaS tout en conservant certains des contrôles minu-
tieux concernant le flux des connexions réseau.
Création d’une application Web 37

Même si les options disponibles sont déjà très nombreuses avec les niveaux Gratuit et Par-
tagé, vous devrez probablement recourir aux niveaux Standard et Premium pour les tâches
de production. L’exemple illustré dans ce chapitre utilise le niveau Standard pour que vous
puissiez voir toutes les fonctions disponibles. Lorsque vous employez Web Apps pour vos
propres applications, vous pouvez choisir le nombre de fonctions dont vous avez besoin et
sélectionner le niveau de plan de service approprié.

Essayer maintenant
Pour finaliser votre application Web, procédez comme décrit ci-dessous.

1 Saisissez un nom de plan App Service, comme appservice. Le nom ne doit pas
nécessairement être unique comme celui de votre application Web. Choisissez la
région Azure adéquate dans votre cas.
2 Sélectionnez le niveau de tarification, puis choisissez le niveau Standard S1, s’il
n’est pas déjà sélectionné. Ce niveau propose toutes les fonctions de base sans
fournir trop de ressources pour votre site de démonstration.
3 Cliquez sur Sélectionner, puis sur OK.
4 De retour dans la fenêtre Créer une application Web, laissez Application
Insights désactivé pour l’instant. Application Insights vous permet d’aborder
plus en détail les performances de votre application Web et de réaliser des
tâches telles que les corrections en temps réel ou la télémétrie de flux. Si vous
êtes un développeur, ces sujets peuvent se révéler intéressants lorsque vous
commencez à développer vos propres applications Web dans Azure.
5 Pour créer votre application Web, sélectionnez Créer.
6 La création de votre service d’application ne prend que quelques secondes.
Accédez à la barre de navigation sur le côté gauche de l’écran et sélectionnez
App Services. Il faut ensuite une minute ou deux pour que l’application Web
soit créée. Cliquez alors que le bouton Actualiser jusqu’à ce que votre applica-
tion apparaisse, puis sélectionnez-la dans la liste.
7 Dans la fenêtre Aperçu de votre application Web, affichez et sélectionnez l’URL
de votre application Web. La figure 3.3 illustre l’exemple d’azuremol comme
nom de l’application Web, l’URL étant https://azuremol.azurewebsites.net.

Figure 3.3 Sélectionnez votre application Web dans le portail Azure. Sur le côté droit de la fenêtre se trouvent
des informations, telles que l’état actuel de l’application Web, l’emplacement et son URL.
38 CHAPITRE 3 Azure Web Apps

8 Lorsque vous sélectionnez l’URL de votre application Web, une nouvelle


fenêtre ou un nouvel onglet de votre navigateur s’ouvre. La page de l’applica-
tion Web charge par défaut, comme illustré à la figure 3.4! Et elle ne ressemble
toujours pas à une pizza…

Figure 3.4 Pour voir la page de l’application Web par défaut en action, ouvrez un navigateur Web
vers l’URL de votre site.

3.2.2 Déploiement d’un exemple de site HTML


Vous disposez d’une application Web dans Azure, mais il s’agit d’un site Internet de base,
sans personnalité. Comment créer votre propre site Web dans Azure? L’une des méthodes les
plus courantes consiste à utiliser Git.
La plupart des équipes et des développeurs d’applications recourent à un système
de contrôle de code source. Plutôt que de stocker des fichiers sur votre ordinateur et
d’enregistrer les modifications au fil de votre travail, les systèmes de contrôle de code
source assurent le suivi des modifications et vous permettent de collaborer. Vous pou-
vez créer des versions d’essai qui n’entraîneront aucune répercussion sur votre code
de production, et revenir aux versions précédentes en cas de problème. Git figure
parmi les systèmes de contrôle de code source les plus courants. GitHub est un service
basé sur le nuage qui vous permet de partager et de travailler sur le code avec le reste
du monde. Microsoft a fait l’acquisition de GitHub en juin 2018, mais rien ne vous
oblige à utiliser GitHub avec Azure. Tous les exemples de ce livre sont disponibles
dans GitHub.
Création d’une application Web 39

Pour cet exemple, vous créez une copie locale de l’exemple de site HTML statique
et transférez les fichiers vers votre application Web Azure. Ce processus est illustré à la
figure 3.5.

Créer une Copier des


Exemples de Git clone Push git
copie locale fichiers dans
fichiers HTML
des fichiers l’applicaon
dans GitHub
Web Azure

Figure 3.5 Vous créez une copie locale des exemples de fichiers depuis GitHub à l’aide de la command
transférer ces fichiers locaux vers votre application Web Azure, utilisez la commande git push.

Essayer maintenant
Pour obtenir une copie de l’exemple de page HTML de GitHub et la transférer vers votre appli-
cation Web, procédez comme décrit ci-dessous.

1 Sélectionnez votre application Web Azure dans le portail, puis cliquez sur Informa-
tions d’identification de déploiement. Ces informations d’identification sont diffé-
rentes de votre identifiant Azure et vous permettent de transférer votre code
d’application depuis Git vers une application Web. Ces mêmes informations
d’identification peuvent être utilisées dans votre abonnement Azure, donc si vous
les créez maintenant, vous pourrez les utiliser pour le reste du livre.
Pour créer vos informations d’identification de déploiement, saisissez un nom
d’utilisateur et un mot de passe, puis cliquez sur Enregistrer.
2 Pour configurer votre application Web afin qu’elle soit utilisée avec Git, cliquez
sur Options de déploiement > Choisir une source > Référentiel Git local. Veuil-
lez noter que différentes options peuvent être utilisées pour stocker votre code
source pour les applications Web, notamment GitHub, Dropbox ou OneDrive,
ou encore Visual Studio Team Services.
3 Pour confirmer et créer un référentiel Git local, sélectionnez OK.
4 Avant d’accéder à ce référentiel Git local, vous devez obtenir l’exemple de site
HTML depuis GitHub.
Ouvrez le Cloud Shell dans le portail Azure et attendez quelques secondes pour
vous connecter à votre session. Pour cloner, ou copier, l’exemple de site HTML
depuis GitHub, saisissez la commande suivante :
git clone https://github.com/fouldsy/azure-mol-samples.git
S’il s’agit de votre première expérience avec Git dans le Cloud Shell, vous devez
définir plusieurs paramètres afin que Git puisse comprendre qui vous êtes.
Pour la plupart des exercices de ce livre, ces paramètres n’ont pas d’impor-
tance, mais pour une utilisation dans le cadre de vos propres projets et applica-
tions, ils permettent de suivre les utilisateurs dans un système de contrôle de
code source. Vous ne devez les définir qu’une seule fois. Saisissez votre adresse
e-mail et votre nom complet dans git config comme suit :
git config --global user.email "iain@azuremol.com"
git config --global user.name "Iain Foulds"
40 CHAPITRE 3 Azure Web Apps

5 Passez au répertoire azure-mol-samples qui a été créé lorsque vous avez cloné le
référentiel Git :
cd azure-mol-samples/3/prod
6 Pour pouvoir le charger, vous devez initialiser Git, puis ajouter et valider vos
fichiers. Ne vous préoccupez pas des commandes Git pour l’instant! Vous devez
indiquer à Git les fichiers à suivre et à ajouter, et vous donner un moyen de
suivre ces changements par la suite, si nécessaire :
git init && git add . && git commit -m "Pizza"

Vous pouvez maintenant transférer cet exemple de site HTML vers votre application Web.
Dans le portail Azure, la fenêtre Aperçu de votre application Web est reprise dans l’URL du
Git Clone. Elle ressemble à l’exemple suivant :
https://azuremol@azuremol.scm.azurewebsites.net:443/azuremol.git

Votre application Web étant configurée pour fonctionner avec les référentiels Git, vous devez
expliquer au Cloud Shell ce qu’est un référentiel. Dans Git, vous définissez ces emplace-
ments comme étant distants.
7 Copiez l’URL de votre Git Clone, puis définissez cette URL comme une destina-
tion pour l’exemple de site HTML dans le Cloud Shell au moyen de la com-
mande suivante :
git remote add azure your-git-clone-url

Pour télécharger ou copier des fichiers avec Git, vous devez les transférer. Où Git les transfère-
t-il? Dans un emplacement à distance tel que celui que vous avez configuré à l’étape précédente,
comme azure. La partie finale de la commande est une branche, généralement la maîtresse.
Dans Git, une branche désigne la façon dont vous suivez les différents modèles de travail en
cours. Dans les environnements de production, la pratique consiste à transférer des branches
que vous pouvez nommer vous-même, comme dev ou staging. Ces branches supplémentaires
permettent le fonctionnement normal de votre code de production. Vous pouvez ensuite tra-
vailler sur de nouvelles fonctions ou mises à jour en toute sécurité et sans influencer les
tâches de vos clients.
8 Transférez l’exemple de site HTML vers votre application Web :
git push azure master
9 Lorsque vous y êtes invité, saisissez le mot de passe que vous avez créé pour les
informations d’identification de déploiement.
Depuis la sortie, vous pouvez voir que la page de site par défaut de l’application Web a été
supprimée et que l’exemple de site HTML a été chargé, puis configuré pour s’exécuter.
Voici quelques exemples de sortie :
Counting objects: 6, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 1.24 KiB | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Updating branch 'master'.
remote: Updating submodules.
remote: Preparing deployment for commit id 'a3822aa914'.
remote: Generating deployment script.
remote: Generating deployment script for Web Site
remote: Generated deployment script files
Gestion des applications Web 41

remote: Running deployment command...


remote: Handling Basic Web Site deployment.
remote: KuduSync.NET from: 'D:\home\site\repository' to:
'D:\home\site\wwwroot'
remote: Deleting file: 'hostingstart.html'
remote: Copying file: 'index.html'
remote: Copying file: 'LICENSE'
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
To https://mol-deploy@azuremol.scm.azurewebsites.net:443/azuremol.git
* [new branch] master -> master

Pour afficher votre application Web mise à jour, actualisez votre site dans un navigateur Web
ou rouvrez-le dans la fenêtre Aperçu du portail Azure. Il devrait ressembler au magnifique
exemple de la figure 3.6. En effet, il apparaît plutôt rudimentaire, mais le flux de travail pour
déployer le plus élémentaire des sites HTML statiques vers une application Web .NET ou
Node.js complexe est tout à fait identique!

Figure 3.6 Actualisez votre navigateur Web pour afficher le site HTML statique de
base de GitHub qui remplace désormais la page de l’application Web par défaut.

3.3 Gestion des applications Web


Maintenant que vous avez appris à créer une application Web de base et à déployer un site
HTML simple, qu’en est-il de la gestion générale? Si vous rencontrez des problèmes, il serait
utile de consulter le serveur Web ou les journaux d’application. Afin de faciliter le dépan-
nage de vos applications, vous pouvez écrire la sortie de votre application vers ces fichiers
journaux. Ces fichiers peuvent être consultés en temps réels ou rédigés dans des fichiers jour-
naux, puis consultés ultérieurement.

3.3.1 Visualisation des journaux de diagnostic


Votre application Web fonctionne en grande partie par elle-même. En termes de mainte-
nance, vous n’avez pas grand-chose à faire sur l’hôte Web sous-jacent. Si votre application
rencontre des problèmes, vous voudrez peut-être consulter les journaux afin de découvrir ce
qu’il se passe et de résoudre le problème. Grâce à Azure Web Apps, vous pouvez configurer
des paramètres tels que le niveau des messages de journal à afficher, l’emplacement de stoc-
kage des journaux et la durée de conservation de ces derniers. La figure 3.7 met en lumière
la façon dont vous générez et affichez les fichiers journaux avec Web Apps.
42 CHAPITRE 3 Azure Web Apps

Événements
d’applicaon
diffusés dans les Journaux
journaux d’applicaon
Accès par FTP
Journaux
Applicaon assemblés en
ou en
temps réel pour diffusion
Web Azure connue en
examen
Journaux direct
Événements de de serveur
serveur diffusés Web
dans les
journaux

Figure 3.7 Votre application peut créer des journaux d’application et des journaux de
serveur. Afin de vous aider à consulter ou à résoudre des problèmes, ces journaux
peuvent être téléchargés avec FTP ou consultés en temps réel.

Essayer maintenant
Pour configurer votre application Web pour les journaux de diagnostic, procédez comme décrit
ci-dessous.

1 Dans le portail Azure, sélectionnez l’application Web que vous avez créée lors de
l’exercice précédent. Dans la fenêtre Aperçu, faites défiler jusqu’à la section Sur-
veillance et sélectionnez Journaux de diagnostic.
2 Examinez les options de journal disponibles, telles que la verbosité et l’activa-
tion du traçage des échecs de demandes. Pour gérer le côté infrastructure
d’Azure, vous devez probablement travailler avec vos développeurs en vue de
déterminer les journaux dont ils ont besoin pour corriger les problèmes. Vous
pouvez ensuite activer la journalisation pertinente ici.
3 Veuillez noter le nom d’utilisateur et l’adresse FTP pour obtenir vos journaux.
Le mot de passe est identique à celui que vous avez créé lors de l’exercice pré-
cédent, pour les informations d’identification de déploiement.
Saisissez l’adresse FTP indiquée dans le panneau du portail dans un navigateur
ou dans la fenêtre du gestionnaire de fichiers local. À la connexion, saisissez le
nom d’utilisateur FTP indiqué ainsi que le mot de passe créé précédemment.
Dans le répertoire Fichiers journaux figurent les différents fichiers journaux, en fonction des
paramètres que vous avez activés pour votre application. Ces journaux peuvent être chiffrés,
et, en règle générale, leur examen ne s’avère pas nécessaire, à moins que votre application
Web ne présente des problèmes.
À la base de votre session FTP repose un répertoire, appelé site. À l’intérieur de ce
répertoire se trouve wwwroot. C’est à cet endroit que vos fichiers Web sont conservés.
Une fois que vous avez transféré votre site avec Git dans l’exemple précédent, Git écrit
le fichier dans ce répertoire. Vous pouvez évidemment enregistrer directement les
fichiers FTP ici, mais Git propose des fonctions supplémentaires dès que vous maîtri-
sez la plateforme, comme les versions, l’historique et les branches.
Gestion des applications Web 43

Vous vous dites peut-être que FTP se révèle plutôt compliqué pour obtenir des
journaux de diagnostic, et qu’il doit exister un moyen plus facile... Eh bien oui! Dans
le portail Azure, là où vous avez configuré vos journaux de diagnostic, se trouve
l’option Flux de journalisation. Devinez-vous son utilité? Petit indice : elle a un rap-
port avec le flux de vos fichiers journaux.
Si vous cliquez sur ce bouton dans le portail Azure, vous pouvez choisir entre les
journaux d’applications et les journaux de serveurs Web. Ces fichiers se lisent à partir
des mêmes journaux de diagnostic qui sont écrits en fichier. Le flux est un peu
retardé, et ce qui est affiché dépend des niveaux de journal que vous indiquez, ainsi
que de la génération d’événements d’application par votre application Web. Pour le
site HTML de base, le flux est plutôt ennuyeux, mais cette fonction est intéressante
dans le navigateur Web. La figure 3.8 illustre un exemple de flux des journaux de ser-
veurs Web dans le portail Azure.

Essayer maintenant
Affichez le flux des fichiers journaux dans le portail Azure. Vous devrez peut-être actualiser la
page dans votre navigateur Web à plusieurs reprises pour générer une activité dans les jour-
naux.

Figure 3.8 Vous pouvez afficher les flux des journaux de serveurs Web Apps à partir de votre application afin de
vérifier et de corriger les performances de l’application. La case de la console à droite de l’écran affiche les flux
de journaux en temps réel à partir de votre application Web.

Lorsque vous commencez à maîtriser Azure et utilisez l’interface de ligne de commande


ou le module Azure PowerShell, vous pouvez également diffuser des journaux avec ces
outils. Pour les développeurs, vous pouvez également activer la correction à distance avec
Visual Studio dans la zone des paramètres de l’application ou configurer Application
44 CHAPITRE 3 Azure Web Apps

Insights afin de permettre à votre application Web d’assurer la télémétrie à des services
supplémentaires pour la surveillance et le diagnostic. Il est important de comprendre ici
que lorsque vous passez aux solutions PaaS comme les applications Web, vous pouvez tou-
jours obtenir des journaux de diagnostic et des données d’application essentiels au dépan-
nage et à la surveillance de votre application Web.

3.4 Exercice : création et utilisation


d’un emplacement de
déploiement
Nous avons parcouru les étapes de la création
d’un site HTML de base et du transfert vers Azure
Web Apps grâce à Git. Et si vous vouliez ajouter de
nouveaux goûts de pizzas et les intégrer sur votre
site avant que vos clients ne puissent les comman-
der? Utilisons donc un emplacement de déploie-
ment pour fournir un endroit où télécharger vos
modifications, les examiner et les échanger pour
la production :
1 Dans votre application Web, cliquez sur
Ajouter un emplacement de déploie-
ment. Laissez les options par défaut pour
ne pas cloner un emplacement de
déploiement existant.
2 Sélectionnez votre emplacement de Figure 3.9 Échangez les emplacements de
déploiement, puis respectez la même déploiement disponibles pour que votre site
procédure pour créer une source de de développement arrive en production.
déploiement (référentiel Git local).
3 Un exemple de site de développement
est inclus dans les exemples que vous avez déjà clonés. Dans Azure Cloud Shell,
accédez au répertoire de développement comme suit :
cd ~/azure-mol-samples/3/dev
4 Comme précédemment, initialisez, ajoutez et confirmez vos modifications dans
Git à l’aide des commandes suivantes :
git init && git add . && git commit -m "Pizza"
5 Créez un lien vers le nouveau référentiel Git dans votre emplacement intermé-
diaire avec la commande git remote add dev, suivie de votre URL de déploie-
ment GIT de l’emplacement intermédiaire.
6 Utilisez la commande git push dev master pour transférer vos modifications
vers l’emplacement de déploiement.
7 Sélectionnez l’URL de votre emplacement intermédiaire dans la fenêtre
Aperçu du portail Azure.
8 Que pensez-vous qu’il se passe si vous cliquez sur le bouton Échanger? La
figure 3.9 illustre la façon dont vous pouvez sélectionner les emplacements de
déploiement source et de destination pour les échanger.
Exercice : création et utilisation d’un emplacement de déploiement 45

Essayez et découvrez comme il est facile de remplacer votre site de développe-


ment pour activer le site de production!

Emplacements de déploiement : dans les cuisines


Lorsque vous échangez des emplacements, ce qui se trouvait dans l’emplacement production
est désormais dans l’emplacement dev et, inversement, ce qui se trouvait dans l’emplace-
ment dev est désormais en production. Tous les paramètres ne peuvent pas être échangés,
tels que les paramètres SSL et les domaines personnalisés. Cependant, pour la plupart, les
emplacements de déploiement permettent d’organiser et de valider le contenu avant qu’il ne
soit disponible pour les clients. Vous pouvez également effectuer un échange avec aperçu,
fonction qui vous offre la possibilité de vérifier que le contenu échangé fonctionne correcte-
ment avant qu’il ne passe en production.
Dans le cadre de l’utilisation de la production dans les flux DevOps, vous pouvez également
configurer l’échange automatique. Ici, lorsqu’un code est inscrit dans le contrôle de code
source tel que GitHub, il peut déclencher une version dans un emplacement de déploiement
Azure Web Apps. Une fois la version terminée et l’application prête à proposer du contenu, les
emplacements de déploiement s’échangent automatiquement pour faire passer le code en
production. En règle générale, ce flux est utilisé avec un environnement de test afin d’exami-
ner les modifications de code en premier, pour ne pas publier directement pour la production!
Présentation
d’Azure Storage

Le monde de l’informatique repose sur deux certitudes : quand les choses


tournent mal, le stockage et la mise en réseau sont toujours les coupables. Et je sais
de quoi je parle! Nous étions meilleurs amis avec l’équipe réseau... D’accord,
c’était une blague. Cependant, peu importe la conception et l’écriture d’une appli-
cation, les fondements de l’infrastructure doivent être à même de les supporter.
Accompagnez-moi à travers les prochains chapitres afin d’explorer les services
Azure Storage et Azure Networking. Vous pourriez vouloir mettre ces services de
côté pour aborder les sujets plus intéressants des chapitres suivants, mais il vaut la
peine d’accorder un certain temps à la découverte et à l’apprentissage de ces ser-
vices de base. Votre nourriture n’aura pas un meilleur goût pour autant, mais vos
clients pourront commander plus facilement leur délicieuse pizza!
Dans ce chapitre, nous examinons les différents types de stockage dans Azure et
les moments où les utiliser. Nous couvrons également les options de redondance et
de réplication pour le service Azure Storage, ainsi que les méthodes permettant de
tirer profit des meilleures performances pour vos applications.

4.1 En quoi le stockage est-il si spécial?


Le stockage n’est pas de prime abord le domaine que nous pensons devoir exami-
ner pour construire et exécuter des applications, mais ce service étendu couvre bien
plus de possibilités que vous ne le pensez. Azure vous propose bien plus que de
simples emplacements où enregistrer des fichiers ou des disques virtuels pour vos
machines virtuelles.

46
En quoi le stockage est-il si spécial? 47

Examinons ce dont votre restaurant italien fictif a besoin pour concevoir une
application qui traite les commandes des clients à emporter ou à livrer. L’application
nécessite une banque de données qui conserve les pizzas disponibles, la liste des gar-
nitures et les tarifs. À mesure que les commandes sont reçues et traitées, l’application
doit pouvoir envoyer des messages entre ses différents composants. La façade du site
doit comporter des images attrayantes pour montrer aux clients ce à quoi ressemblent
les pizzas. Azure Storage couvre l’ensemble de ces trois besoins :

Compte Azure Storage

Grand objet Tableau File d’aente Fichier


binaire
Données non Magasin de données Messages entre les Partages tradionnels de
fichiers SMB pour les
structurées, telles NoSQL non structuré, composants de machines virtuelles, par
que les images des par exemple la liste l’applicaon, pour exemple pour stocker des
pizzas que vend des pizzas de votre traiter les commandes journaux d’applicaons de
magasin de pizza
votre magasin magasin de pizzas

Figure 4.1 Un compte Azure Storage vous permet de créer et d’utiliser un large
éventail de fonctions de stockage sophistiquées.

 Stockage de grands objets binaires – Pour les données non structurées, telles que les docu-
ments et les fichiers multimédias. Les applications peuvent stocker des données dans le
stockage de grands objets binaires, comme des images, puis les restituer. Vous pourriez
enregistrer des photos de vos pizzas dans ce type de stockage.
 Stockage de tableaux – Pour les données non structurées dans une banque de don-
nées NoSQL. Comme pour chaque débat comparant les banques de données SQL
et NoSQL, planifiez votre application et évaluez les exigences de performances en
termes de traitement de grandes quantités de données. Vous pourriez enregistrer la
liste des pizzas de votre menu dans ce stockage. Nous détaillerons les banques de
données NoSQL dans la prochaine section.
 Stockage de la file d’attente – Pour que les applications dans le nuage puissent commu-
niquer entre différents niveaux et composants de façon fiable et cohérente. Vous
pouvez créer, lire et supprimer des messages transférés entre les composants de
l’application. Vous pourriez utiliser ce stockage pour transférer des messages entre
la façade Web lorsqu’un client passe une commande et les cuisines (composant
dorsal), où les pizzas sont préparées et cuites.
 Stockage de fichiers – Pour un bon vieux partage avec le protocole SMB (Server
Message Block), accessible par les plateformes Windows et Linux/MacOS. Sou-
vent utilisé pour centraliser la collecte des journaux depuis les machines vir-
tuelles.
Le service Azure Storage pour les machines virtuelles constitue un vrai jeu d’enfant.
Vous créez et utilisez les disques gérés Azure, un type de disque dur virtuel (VHD) qui
reprend différentes considérations de conception en matière de performances et la
distribution des disques virtuels sur la plateforme. Vous créez une machine virtuelle, y
joignez des disques de données gérés, et laissez la plateforme Azure déterminer la
redondance et la disponibilité.
48 CHAPITRE 4 Présentation d’Azure Storage

La vie avant les disques gérés


Lancés début 2017, les disques gérés Azure ont pour objectif de faciliter le stockage des
machines virtuelles. Avant eux, vous deviez créer un compte de stockage au nom unique,
limiter le nombre de disques virtuels créés dans chacun, et parcourir manuellement des
images de disques personnalisées pour créer des machines virtuelles dans différentes
régions. Le service des disques gérés rend inutiles les comptes de stockage, vous limite
à « seulement » 10 000 disques par abonnement et vous permet de créer des machines
virtuelles à partir d’une image personnalisée de n’importe quelle région. Vous profitez
également de la possibilité de créer et d’utiliser des instantanés des disques, de chiffrer
automatiquement des données au repos et d’utiliser des disques d’une taille allant
jusqu’à 4 To.
Pourquoi ce point est-il important? Si vous travaillez dans une documentation ou des bil-
lets de blogues anciens, ils peuvent vous obliger à créer un compte de stockage pour vos
machines virtuelles. Arrêtez-vous là! Oui, vous pouvez convertir des machines virtuelles à
partir de disques non gérés en disques gérés, mais si vous partez de zéro, veillez à com-
mencer chaque projet avec des disques gérés dès le début. L’utilisation des disques non
gérés consiste davantage à maintenir la compatibilité ascendante avec des déploiements
existants, bien que je dirais que vous devriez chercher alors à convertir ces tâches pour
les disques gérés!

4.1.1 Stockage de tableaux


Discutons de quelques types de stockage différents. Le premier est le stockage de
tableaux. La plupart des lecteurs connaissent probablement une base de données SQL
classique telle que Microsoft SQL Server, MySQL ou PostgreSQL. Il s’agit de bases de
données relationnelles, composées d’un ou de plusieurs tableaux comportant une ou
plusieurs lignes de données. Les bases de données relationnelles sont fréquentes dans
le cadre du développement d’applications et peuvent être conçues, visualisées et
interrogées de façon structurée : le S dans SQL (Structured Query Language).
Les bases de données NoSQL sont quelque peu différentes. Elles ne respectent pas
la même approche structurée et les données ne sont pas conservées dans des tableaux
dans lesquels chaque ligne comporte les mêmes champs. Il existe différentes implé-
mentations de bases de données NoSQL : citons notamment MongoDB, Cassandra,
SAP HANA, CouchDB et Redis. Parmi les avantages vantés des bases de données
NoSQL figurent leur mise à l’échelle horizontale (ce qui signifie que vous pouvez
ajouter plus de serveurs plutôt que d’ajouter plus de mémoire ou de processeurs), la
gestion de plus grandes quantités de données et une efficacité accrue du traitement
de ces importants jeux de données.
Les données sont stockées dans une base de données NoSQL sur la base de diffé-
rentes catégories :
 Valeur de clé, comme Redis
 Colonne, comme Cassandra
 Document, comme MongoDB
Chaque approche comporte ses avantages et ses inconvénients en matière de perfor-
mances, de souplesse et de complexité. Un tableau de stockage Azure utilise un stoc-
kage de valeurs de clé et constitue une bonne introduction aux bases de données
NoSQL lorsque vous êtes habitué à une base de données SQL comme Microsoft SQL
ou MySQL.
En quoi le stockage est-il si spécial? 49

La figure 4.2 illustre un exemple de données stockées dans un tableau.

Figure 4.2 Données non structurées stockées dans un tableau : une combinaison de valeurs
de clé PartitionKey et RowKey. Les données apparaissent dans les champs cost et
description.

Vous pouvez télécharger et installer l’explorateur de stockage Microsoft Azure sur


la page www.storageexplorer.com pour visualiser les données. Inutile de faire ça tout
de suite. L’explorateur de stockage constitue un excellent outil pour apprendre ce à
quoi les tableaux et les files d’attente ressemblent en action. Dans ce chapitre, je ne
souhaite pas trop creuser les bases de données NoSQL – au chapitre 10, nous abor-
dons certaines bases de données NoSQL intéressantes avec Azure Cosmos DB. En réa-
lité, dans l’exercice suivant, vous utilisez l’API Cosmos DB pour vous connecter à
Azure Storage et créer un tableau. L’utilisation des tableaux Azure s’apparente davan-
tage à une présentation des bases de données NoSQL plutôt qu’à un exemple robuste
d’utilisation de la production.
Pour l’instant, lançons un exemple rapide d’application pour apprendre à ajouter
et à interroger des données, comme vous le feriez avec une véritable application. Bien
que rudimentaires, ces exemples vous montrent comment stocker les types de pizzas
que vous vendez et le prix de chaque pizza. Plutôt que d’utiliser un outil vaste comme
Microsoft SQL Server ou MySQL, nous allons utiliser une base de données NoSQL
avec le stockage de tableaux Azure.

Essayer maintenant
Pour afficher les tableaux Azure en action, procédez comme décrit ci-dessous.

1 Ouvrez le portail Azure dans un navigateur Web, puis ouvrez le Cloud Shell.
2 Au chapitre 3, vous avez obtenu une copie d’exemples Azure dans GitHub.
Dans le cas contraire, saisissez une copie comme suit :
git clone https://github.com/fouldsy/azure-mol-samples.git
3 Passez au répertoire qui contient les exemples Azure Storage :
cd ~/azure-mol-samples/4
4 Installez plusieurs dépendances Python, si ce n’est pas déjà fait. Vous installez le
paquet azurerm, qui couvre la communication vous permettant de créer et de
gérer des ressources Azure, ainsi que deux paquets azure, à savoir les SDK
Python sous-jacents pour Azure Cosmos DB et Storage :
pip2 install --user azurerm azure-cosmosdb-table azure-storage-queue
Que signifie --user lorsque vous installez les paquets? Si vous employez Azure
Cloud Shell, vous ne pouvez pas installer de paquets dans le système principal.
Vous n’y êtes pas autorisé. À la place, les paquets sont installés dans votre envi-
ronnement utilisateur. Ces installations persistent à travers les sessions et vous
permettent d’utiliser tous les SDK Azure dans ces exemples.
50 CHAPITRE 4 Présentation d’Azure Storage

5 Exécutez l’exemple d’application Python pour les tableaux. Suivez les invites
pour déguster de délicieuses pizzas :
python2.7 storage_table_demo.py

Des serpents dans l’avion


Python est un langage de programmation renommé, souvent utilisé dans les cours d’intro-
duction à l’informatique. Si vous travaillez principalement dans les opérations informa-
tiques ou l’administration, considérez Python comme un langage de script puissant qui
fonctionne dans plusieurs systèmes d’exploitation. Python ne fait pas seulement réfé-
rence aux scripts, il peut également être utilisé pour développer des applications com-
plexes. Par exemple, l’interface de ligne de commande Azure que vous utilisez est rédigée
en Python.
J’utilise Python pour certains des exemples de ce livre, car ils doivent fonctionner en
dehors d’Azure Cloud Shell sans modification. Les distributions MacOS et Linux incluent
Python en mode natif. Les utilisateurs Windows peuvent télécharger et installer rapide-
ment Python, mais aussi exécuter ces scripts localement. Python se révèle parfait pour
les débutants en programmation, ainsi que pour les développeurs plus habitués à
d’autres langages. La documentation Azure concernant Azure Storage et de nombreux
autres services fournit une aide pour un éventail de langages, notamment .NET, Java et
Node.js. Vous n’êtes pas limité à l’utilisation de Python lorsque vous développez vos
propres applications qui utilisent des tableaux.
Veuillez noter que ces exemples utilisent Python 2.7. Une version de Python 3.x plus
moderne est disponible, mais elle risque de présenter des incohérences entre les sys-
tèmes d’exploitation avec les différents SDK Azure. Afin de réduire le risque de pro-
blèmes, j’ai conservé des exemples de base et compatibles avec l’ancienne version de
Python, mais, encore une fois, vous n’êtes pas restreint à ce langage lorsque vous déve-
loppez vos propres applications.

4.1.2 Stockage de la file d’attente


Les tableaux Azure s’avèrent utiles lorsque vous tentez de comprendre petit à petit le
monde du développement d’applications dans le nuage. Lorsque vous commencez à
créer et à gérer des applications en mode natif dans le nuage, vous les décomposez
généralement en composants plus petits, qui peuvent chacun mettre à l’échelle et
traiter des données. Pour permettre à ces différents composants de communiquer et
de se transmettre des données, une certaine forme de file d’attente est utilisée.
Découvrez les files d’attente Azure.
Grâce aux files d’attente, vous pouvez créer, lire et supprimer des messages qui trans-
portent de petits segments de données. Ces messages sont créés et récupérés par diffé-
rents composants de l’application lorsqu’ils se transmettent des données. Les files
d’attente Azure ne suppriment aucun message tant que le composant de l’application
ne confirme pas qu’il a terminé de l’utiliser.

Essayer maintenant
Pour voir les files d’attente Azure en action, exécutez le script Python suivant à partir du
même répertoire azure-samples/4. Respectez les invites pour afficher les messages
écrits, lus et supprimés de la file d’attente :
python2.7 storage_queue_demo.py
En quoi le stockage est-il si spécial? 51

Reprenons l’exemple d’application qui gère les commandes de pizzas. Il se peut que
vous disposiez d’un composant de façade avec lequel les clients interagissent pour
commander leur pizza. Une file d’attente de messages transmet alors les messages vers
les cuisines (composant dorsal) afin que vous puissiez traiter ces commandes. Une
fois les commandes sont reçues, les messages dans la file d’attente peuvent être
consultés, comme illustré à la figure 4.3.

Figure 4.3 Les messages sont reçus depuis le composant de façade qui détaille les pizzas
commandées par chaque client dans la propriété Message Text.

Une fois que les cuisines (composant dorsal) traitent chaque commande de délicieuse
pizza, les messages sont supprimés de la file d’attente. La figure 4.4 illustre ce à quoi
ressemble la file d’attente lorsqu’une pizza végétarienne se trouve dans le four et que
le premier message est supprimé.

Figure 4.4 À mesure que chaque message est traité, il est supprimé de la file d’attente. Le
premier message illustré à la figure 4.3 a été supprimé une fois qu’il a été traité par le
composant d’application dorsal.

4.1.3 Disponibilité et redondance du stockage


Les centres de données Azure sont conçus pour tolérer les pannes liées aux
connexions Internet redondantes, aux générateurs d’alimentation, aux chemins
d’accès réseau multiples, aux groupes de stockage, etc. Vous devez tout de même
mettre la main à la pâte lorsque vous concevez et exécutez des applications. Avec
Azure Storage, vous choisissez le niveau de redondance du stockage dont vous avez
besoin. Ce niveau varie pour chaque application et en fonction de la criticité des don-
nées. Examinons les options de redondance de stockage disponibles :
 Stockage localement redondant (LRS) – Vos données sont répliquées trois fois dans le centre
de données dans lequel votre compte de stockage a été créé. Cette option permet la
redondance en cas d’une défaillance matérielle. Toutefois, si tout le centre de données
est en panne (rare, mais possible), vos données seront également perdues.
 Stockage redondant par zone (ZRS) – Le niveau suivant après le LRS vise à répliquer vos
données trois fois dans deux ou trois centres de données d’une région (où plu-
sieurs centres de données existent) ou de plusieurs régions. Le ZRS est également
disponible dans les zones de disponibilité, que nous aborderons au chapitre 7.
52 CHAPITRE 4 Présentation d’Azure Storage

 Stockage géo-redondant (GRS) – Avec le GRS, vos données sont répliquées trois fois
dans la région principale dans laquelle votre stockage est créé, puis répliquées trois
fois dans une région associée. En règle générale, la région associée se situe à des
centaines, voire des milliers de kilomètres. Par exemple, l’ouest des États-Unis est
associé à l’est des États-Unis, l’Europe du Nord est associée à l’Europe de l’Ouest, et
l’Asie du Sud-Est est associée à l’Asie de l’Est. Le GRS offre une excellente option
de redondance pour les applications de production.
 Stockage géo-redondant en accès en lecture (RA-GRS) – Il s’agit de la principale option
de redondance de données. À l’instar du GRS, vos données sont répliquées dans
des régions associées, mais vous pouvez également disposer d’un accès en lecture
aux données dans cette zone secondaire.

4.2 Stockage de la machine virtuelle


Il y a plusieurs années, le stockage de serveur s’avérait coûteux, lent et extrêmement
compliqué. Il n’était pas rare qu’un fournisseur de stockage vous vende du matériel
coûtant des centaines de milliers de dollars et dont la configuration par une armée de
conseillers et d’ingénieurs pouvait durer des journées, voire des semaines. Avec le
début de la virtualisation dans le centre de données et la reconnaissance de VMware
et Hyper-V, le stockage est souvent devenu un goulot d’étranglement. Et c’est sans par-
ler des incohérences de micrologiciel entre les adaptateurs de stockage dans le ser-
veur et sur le groupe de stockage, des chemins de réseau redondants qui ne
fonctionnent pas, ou encore des SSD considérés comme la seule méthode efficace.
Azure résout-il par magie tous les problèmes de stockage? Bien sûr que non! Mais
il élimine 95 % des soucis et vous permet de vous concentrer sur la construction et la
création d’expériences incroyables pour vos clients. Examinons un peu les 5 % res-
tants dont vous devez être conscient.

4.2.1 Stockage standard et premium


Vous vous rappelez l’énoncé précédent selon lequel, pour obtenir les meilleures per-
formances, vous deviez acheter des SSD? Aucune potion magique ne permet d’y
échapper dans Azure, désolé. La vérité est que les SSD dépassent de loin les perfor-
mances des disques rotatifs classiques. Des limites physiques restreignent la rapidité à
laquelle ces disques rotatifs peuvent, eh bien, tourner. Jusqu’ici, les ingénieurs de
Microsoft n’ont pas réussi à adapter les lois de la physique! Certains cas d’utilisation
continuent de promouvoir les disques rotatifs classiques, et, à l’instar des groupes de
stockage traditionnels, les technologies les plus récentes garantissent de bonnes per-
formances à partir d’un groupe de disques rotatifs.
Le premier et principal choix que vous devez faire pour une machine virtuelle
Azure concerne le type de stockage à utiliser :
 Disques SSD premium – Utilisez des disques SSD haute performance pour bénéficier de
performances optimales, d’un plus grand nombre d’IOPS et d’une faible latence. Ce
type de stockage est recommandé pour la plupart des tâches de production.
 Disques SSD standard – Utilisez des SSD standard. Ils offrent des performances uni-
formes par rapport aux disques durs. Ce type est idéal pour les tâches de test et de
développement, ou en cas de production à faible demande et présentant des
contraintes budgétaires.
 Disques durs classiques – Utilisez des disques rotatifs classiques pour accéder à
des données moins fréquentes, comme les archives ou les sauvegardes.
Stockage de la machine virtuelle 53

La taille de la machine virtuelle que vous choisissez aide à déterminer le type de stoc-
kage que vous pouvez sélectionner. Dans le chapitre 2, lorsque vous avez créé une
machine virtuelle, vous avez opté pour une taille afin d’obtenir rapidement une
machine virtuelle. Vous avez donc choisi une machine virtuelle série D2S_v3, qui vous
a donné accès à des disques SSD premium. Comment identifiez-vous les machines vir-
tuelles capables d’accéder aux disques SSD premium? Recherchez un s dans la taille
de la machine virtuelle, comme le S de S SD, notamment :
 Les séries D2S_v3, Fs, GS et Ls peuvent accéder aux disques SSD premium.
 Les séries D, A, F et M peuvent uniquement accéder aux disques durs ou SSD
standard.
Si vous sélectionnez une taille de machine virtuelle à même d’utiliser des disques SSD
premium, vous n’y êtes évidemment pas obligé. Vous pouvez créer et utiliser des disques
durs ou SSD standard. En optant pour des disques SSD premium, vous concevez une
application à l’épreuve du temps et vous vous donnez la possibilité d’utiliser des SSD
haute performance en cas de besoin, sans avoir à redimensionner vos machines vir-
tuelles ni à arrêter le processus. Toutes les tailles de machine virtuelle peuvent utiliser
des disques SSD standard.

Essayer maintenant
Comment parvenez-vous à identifier les tailles de machine virtuelle disponibles? Dans le
portail Azure, ouvrez le Cloud Shell. Saisissez la commande suivante (n’hésitez pas à
employer votre propre région) :
az vm list-sizes --location eastus --output table
N’oubliez pas, chaque taille dotée d’un s vous donne accès à des disques SSD premium.

4.2.2 Disques temporaires et disques de données


Maintenant que vous avez déterminé le niveau de performance dont vos applications
ont besoin, assemblons d’autres pièces du puzzle. Les disques sont connectés de deux
façons différentes :
 Disques temporaires – Chaque machine virtuelle possède automatiquement un stockage
SSD local associé à l’hôte sous-jacent, qui offre un petit espace de stockage haute perfor-
mance. Faites attention à la façon dont vous utilisez ce disque temporaire! Comme son
nom l’indique, ce disque ne reste pas avec la machine virtuelle. Si la machine virtuelle
passe à un nouvel hôte lors d’un événement de maintenance, un nouveau disque tem-
poraire sera associé. Et les données que vous avez stockées seront perdues. Le disque
temporaire est conçu comme un espace de travail ou un cache d’application.
 Disques de données – Tous les disques que vous créez et joignez à la machine vir-
tuelle agissent comme vous vous y attendiez en termes de partitions, de sys-
tèmes de fichiers et de points de montage persistants. Les disques de données
sont de nouveau associés lorsque la machine virtuelle passe au centre de don-
nées Azure, et demeurent là où la plupart de vos applications et données
doivent être conservées. Vous pouvez toujours utiliser des espaces de stockage
ou un RAID logiciel pour regrouper les disques de données au niveau de la
machine virtuelle, pour des performances accrues.
54 CHAPITRE 4 Présentation d’Azure Storage

4.2.3 Options de mise en cache de disque


Il est également important de prendre en compte le disque du système d’exploitation
fourni avec la machine virtuelle. Lorsque vous créez une machine virtuelle, vous
acquérez toujours au moins un disque. C’est sur ce disque qu’est installé le système
d’exploitation, et il est tentant de l’utiliser pour installer vos applications ou écrire des
fichiers journaux. À moins que vous n’exécutiez un déploiement de démonstration,
ne lancez pas vos applications sur le disque du système d’exploitation! Vous ne bénéfi-
cierez sûrement pas des performances que vous souhaitez.
Une stratégie de mise en cache peut être définie pour les disques dans Azure. Par
défaut, une mise en cache read/write est appliquée sur le disque du système d’exploita-
tion. En règle générale, ce type de mise en cache n’est pas idéal pour les tâches
d’application qui écrivent des fichiers journaux ou des bases de données, par
exemple. En revanche, les disques de données présentent une stratégie de mise en
cache par défaut définie sur none. Cette politique se révèle efficace pour les tâches qui
nécessitent un travail d’écriture considérable. Vous pouvez également appliquer une
politique de cache read-only, plus adaptée aux tâches d’application qui lisent principa-
lement les données contenues sur les disques.
Généralement, associez et utilisez toujours les disques de données pour installer et
exécuter vos applications. Même la stratégie de mise en cache none par défaut offre
probablement de meilleures performances que la politique de mise en cache
read/write du disque du système d’exploitation.

4.3 Ajout de disques à une machine virtuelle


Voyons voir comment vous ajoutez des disques à une machine virtuelle que vous
créez. Au chapitre 2, vous avez créé une machine virtuelle avec le portail Azure. Cette
fois, nous allons utiliser l’interface de ligne de commande Azure pour créer une
machine virtuelle. Cette interface Azure permet de créer rapidement une machine
virtuelle et d’associer en même temps un disque de données.
Essayer maintenant
Pour créer une machine virtuelle et voir les disques de données en action, procédez
comme décrit ci-dessous.

1 Dans Azure Cloud Shell, créez un groupe de ressources avec la commande az


group create. Fournissez un nom pour le groupe de ressources, ainsi qu’un
emplacement :
az group create --name azuremolchapter4 --location eastus

Barres obliques inversées


Dans les exemples et les chapitres suivants, la barre oblique inversée (\) indique que la
commande se poursuit à la ligne suivante. Elle permet de regrouper de longues lignes et
est utilisée dans un grand nombre d’exemples en ligne où vous pouvez copier et coller les
commandes. Vous n’êtes pas obligé de saisir les barres obliques inversées des exemples
de ce livre si vous ne le voulez pas! Continuez simplement de saisir les paramètres sup-
plémentaires comme s’il s’agissait d’une seule grande ligne.
Si vous utilisez l’invite de commande Windows plutôt qu’un interpréteur Bash, n’utilisez
pas les barres obliques inversées. Si vous le faites tout de même, vous n’obtiendrez vrai-
ment pas le résultat attendu!
Ajout de disques à une machine virtuelle 55

2 Créez une machine virtuelle avec la commande az vm create. Le paramètre


final, --data-disk-sizes-gb, vous permet de créer un disque de données avec
la machine virtuelle. Dans l’exercice à la fin du chapitre, vous pourrez vous
connecter à cette machine virtuelle et initialiser les disques.
Pour cet exercice, vous créez une machine virtuelle Linux ou Windows. Si
vous êtes à l’aise avec Linux ou souhaitez apprendre à initialiser et à préparer
un disque pour Linux, utilisez la commande suivante pour créer une machine
virtuelle Ubuntu LTS :
az vm create \
--resource-group azuremolchapter4 \
--name storagevm \
--image UbuntuLTS \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys \
--data-disk-sizes-gb 64
Si vous préférez travailler avec Windows, utilisez la commande suivante pour
créer une machine virtuelle Windows Server 2016. Vous pouvez ensuite RDP
vers la machine virtuelle afin de configurer les disques ultérieurement :
az vm create \
--resource-group azuremolchapter4 \
--name storagevm \
--image Win2016Datacenter \
--size Standard_B1ms \
--admin-username azuremol \
--admin-password P@ssw0rd! \
--data-disk-sizes-gb 64
La création de la machine virtuelle prend quelques minutes. Cette dernière dis-
pose déjà d’un disque de données associé et prêt à être utilisé.
Et si vous vouliez ajouter un autre disque de données dans quelques semaines ou
quelques mois? Utilisons de nouveau l’interface de ligne de commande Azure pour
apprendre à ajouter un disque. Le processus est identique pour une machine virtuelle
Linux comme Windows. Il vous suffit de dire à Azure de créer un nouveau disque et
de l’associer à votre machine virtuelle.

Essayer maintenant
Ajoutez un disque de données supplémentaire à votre machine virtuelle, comme indiqué
ci-dessous.

Créez un nouveau disque avec la commande az vm disk attach. Indiquez un nom et


une taille pour le disque. Vous rappelez-vous notre dernière discussion sur les disques
standard et premium? Dans l’exemple suivant, vous créez un disque SSD premium :
az vm disk attach \
--resource-group azuremolchapter4 \
--vm-name storagevm \
--disk datadisk \
--size-gb 64 \
--sku Premium_LRS \
--new
56 CHAPITRE 4 Présentation d’Azure Storage

Reconnaissez-vous la dernière partie de ce type de stockage? LRS indique qu’il s’agit


d’un stockage localement redondant.
En seulement deux commandes, vous avez créé une machine virtuelle avec l’inter-
face de ligne de commande Azure qui incluait un disque de données, puis vous avez
simulé l’ajout d’un disque de données supplémentaire. Ce n’est pas parce que vous
avez associé ces disques que vous pouvez immédiatement écrire des données dessus.
Comme avec n’importe quel disque, qu’il s’agisse d’un disque physique joint à un ser-
veur sur place ou d’un disque virtuel associé à une machine virtuelle, vous devez tout
d’abord initialiser le disque et créer une partition ainsi qu’un système de fichiers.
Voilà ce sur quoi porte l’exercice à la fin du chapitre.

4.4 Exercice : exploration du service Azure Storage


Vous avez la possibilité de tester vos compétences. Sélectionnez l’une des tâches sui-
vantes pour effectuer votre exercice.

4.4.1 Axé sur les développeurs


Si vous vous sentez plus l’âme d’un développeur et ne souhaitez pas vous occuper de
l’initialisation des disques de données sur une machine virtuelle, retournez au Cloud
Shell et explorez les deux démonstrations Python qui recourent aux tableaux et aux
files d’attente. Même si vous ne connaissez pas encore Python, vous devriez pouvoir
suivre le rythme :
 Pensez à certains scénarios où vous pouvez implémenter des tableaux ou des files
d’attente dans vos propres applications. Que faudrait-il pour construire des applications
natives dans le nuage avec des composants d’application individuels qui pourraient
recourir aux files d’attente, par exemple?
 Modifiez l’un des exemples qui vous intéressent pour créer un élément de
menu supplémentaire (en cas de tableau) ou pour créer un nouveau message
de commande (en cas de file d’attente).

4.4.2 Axé sur les machines virtuelles


Si vous souhaitez vous connecter à une machine virtuelle et suivre le processus lié à
l’initialisation d’un disque et à la création d’un système de fichiers identique pour
toutes les machines virtuelles sur lesquelles vous avez travaillé, tentez l’un de ces
exercices :
1 Connectez-vous à la machine virtuelle créée dans la section 4.2. En fonction de
votre sélection, vous vous connecterez avec SSH ou RDP.
2 Initialisez le disque et créez une partition :
a Sur Linux, le flux est fdisk, mkfs, puis mount.

b Sur Windows, utilisez une séquence à laquelle vous êtes habitué (probable-
ment Disk Management > Initialize > Create Volume > Format).
Principes de base de la
mise en réseau Azure

Dans le chapitre précédent, nous avons examiné le service Azure Storage. Parmi les
autres services fondamentaux des applications dans le nuage figure la mise en réseau
Azure. Dans Azure, nombre de fonctions réseau puissantes visent à sécuriser et à ache-
miner votre trafic à l’échelle mondiale. Ces fonctions sont conçues pour vous aider à
vous concentrer sur la construction et la maintenance de vos applications, afin que
vous n’ayez pas à vous soucier de détails comme les adresses IP et les tables. Si vous
concevez et exécutez un restaurant en ligne pour gérer les commandes de pizza, il doit
transmettre en toute sécurité les données client et traiter les transactions de paiement.
Dans ce chapitre, nous nous penchons sur les réseaux virtuels et les sous-réseaux
Azure, ainsi que sur la création d’interfaces réseau virtuelles. Afin de sécuriser et de
contrôler le flux de trafic, vous créez des groupes et des règles de sécurité réseau.

5.1 Composants du réseau virtuel


Réfléchissez au nombre de câbles derrière votre bureau ou dans votre centre de diver-
tissement. Maintenant, pensez à tous les câbles nécessaires pour connecter les ordina-
teurs d’un étage donné d’un bâtiment. Et à ceux nécessaires pour tout le bâtiment!
Êtes-vous déjà entré dans un centre de données ou en avez-vous déjà vu des photos?
Essayez d’imaginer la grandeur des centres de données Azure. Et maintenant, des
dizaines de centres de données Azure aux quatre coins du monde? Les mathématiques
ne sont pas mon point fort, donc je serais incapable de calculer les kilomètres de câbles
réseau utilisés pour acheminer le trafic dans Azure!
La connectivité réseau joue un rôle crucial dans notre vie actuelle. Dans Azure, le
réseau constitue le cœur de toute communication. Pour les milliers de périphériques
réseau physiques et de kilomètres de câbles réseau qui connectent tous les éléments
d’un centre de données Azure, vous travaillez avec des ressources réseau virtuelles. Com-
ment? Grâce aux réseaux définis par logiciel. Lorsque vous créez une machine virtuelle
57
58 CHAPITRE 5 Principes de base de la mise en réseau Azure

ou une application Web, aucun technicien ne doit courir autour du centre de données
Azure pour connecter physiquement les câbles et attribuer des adresses IP (ce qui serait
pourtant vraiment drôle à regarder!). À la place, toutes vos ressources réseau qui défi-
nissent l’ensemble de votre environnement réseau sont gérées logiquement par la plate-
forme Azure. La figure 5.1 illustre les composants réseau virtuels que vous allez générer à
mesure que vous parcourrez ce chapitre.

Réseau virtuel

Sous-réseau : règle Web Sous-réseau : règle distante


pour autoriser le trafic HTTP pour autoriser le trafic SSH
Adresse IP publique Adresse IP publique
d’interface réseau + DNS d’interface réseau + DNS

Machine
Machine virtuelle virtuel à boîte
Web de saut

Figure 5.1 Connexions réseau définies par logiciel dans Azure

Certains composants réseau sont retirés si vous utilisez des ressources PaaS. Les princi-
paux composants que vous utilisez pour les machines virtuelles sont les suivants :
 Réseaux virtuels et sous-réseaux (groupes d’adresses IP compris)
 Cartes d’interface réseau virtuelles
 Une ou plusieurs adresses IP publiques
 Nom DNS interne et noms DNS publics facultatifs pour la résolution de noms
externes
 Groupes et règles de sécurité réseau, qui sécurisent et contrôlent le flux du trafic
réseau comme un pare-feu classique

5.1.1 Création et utilisation des réseaux virtuels et sous-réseaux


À la création de votre machine virtuelle au chapitre 2, vous n’avez pas eu à ajuster les para-
mètres réseau. En effet, la plateforme Azure peut créer ces ressources pour vous à l’aide
de noms et d’adresses IP par défaut. Créons les ressources réseau à l’avance et découvrons
comment elles s’assemblent pour une machine virtuelle.

Essayer maintenant
La mise en réseau est souvent plus facile à se représenter lorsque vous la voyez en
action. Ne vous souciez pas trop de la façon d’utiliser vos propres espaces d’adressages
ou noms DNS personnalisés pour l’instant. Pour créer votre réseau virtuel et votre sous-
réseau comme illustré à la figure 5.2, procédez comme décrit ci-dessous.
Composants du réseau virtuel 59

1 Ouvrez le portail Azure et sélectionnez Créer une ressource dans le coin supé-
rieur gauche du tableau de bord.
2 Sélectionnez Mise en réseau dans la liste des services de la place de marché,
puis choisissez Réseau virtuel.
3 Le menu qui s’ouvre ressemble à celui que vous avez vu dans le chapitre 2. Indi-
quez un nom pour le réseau virtuel, comme vnetmol.
4 Afin de vous entraîner un peu, modifiez l’espace d’adressage en 10.0.0.0/16.

plages d’adresses IP
Les réseaux virtuels couvrent une certaine
plage d’adresses IP : un espace d’adressage.
Si vous avez déjà vu une adresse IP, vous
avez peut-être remarqué le masque de sous-
réseau, qui ressemble souvent à
255.255.255.0. En règle générale, ce
masque de sous-réseau arbore une forme
abrégée qui spécifie la taille de cette plage,
comme /24.
Par défaut, le portail Azure affiche un espace
d’adressage /24. Pour augmenter le nombre
de plages IP supplémentaires, vous pouvez
augmenter l’espace d’adressage à /16.
Cependant, vous ne fournissez pas directe-
ment ce type d’adresse IP à une machine vir-
tuelle. À la prochaine étape, vous créez un
sous-réseau qui couvre une plus petite sec-
tion de cet espace d’adressage.
Vous ne connaissez absolument pas les
espaces d’adressage réseau? Ne vous inquié-
tez pas. Vous n’avez pas à vous en occuper la
plupart du temps. La gouvernance sensée
Azure peut fonctionner de la même façon que
dans vos installations sur place existantes :
un groupe de personnes peut gérer les
réseaux virtuels Azure, et vous, vous déposez
vos applications dans un espace précréé.

Figure 5.2 Dans ce chapitre, le réseau


virtuel et le sous-réseau que vous créez
dans le portail Azure jettent les bases de
l’infrastructure.

5 Sélectionnez Créer un nouveau groupe de ressources. Saisissez un nom,


comme azuremolchapter5, puis sélectionnez votre région Azure.
60 CHAPITRE 5 Principes de base de la mise en réseau Azure

6 Indiquez un nom de sous-réseau, comme websubnet, puis saisissez la plage


d’adresses de sous-réseau 10.0.1.0/24. Cette plage d’adresses fait partie du
réseau virtuel plus large dont nous avons parlé plus tôt. Vous ajouterez un autre
sous-réseau par la suite.
7 Pour créer le réseau virtuel, sélectionnez Créer.

5.1.2 Cartes d’interface réseau virtuelles


Maintenant que vous avez créé un réseau virtuel et un sous-réseau, vous devez vous
connecter à une machine virtuelle. Tout comme vous le faites avec un ordinateur de
bureau classique, un ordinateur portable ou une tablette, vous utilisez une carte d’inter-
face réseau (NIC) pour vous connecter au réseau virtuel. Et non, il n’y a pas de Wi-Fi gra-
tuit! Mais différentes tailles de machines virtuelles vous sont proposées, qui offrent
actuellement jusqu’à huit cartes d’interface réseau avec des vitesses pouvant atteindre
25 Gbit/s. Il me semble que ça ajoute une sacrée bande passante!
Vous vous demandez peut-être pourquoi vous créeriez chacune de ces ressources à
l’avance, alors que vous pouvez toutes les créer lorsque vous concevez une machine vir-
tuelle. C’est vrai, mais prenez un peu de recul et considérez les ressources réseau comme
des ressources durables.
En effet, les ressources réseau existent séparément des ressources des machines vir-
tuelles, et peuvent persister au-delà du cycle de vie d’une machine virtuelle donnée. Ce
concept vous permet de créer des ressources réseau fixes, ainsi que de créer, de supprimer
et de recréer une machine virtuelle qui conserve les mêmes ressources réseau, comme les
adresses IP et les noms DNS. Imaginez une machine virtuelle ou un environnement de
développement et de test. Vous pouvez rapidement reproduire le même environnement,
car seule la machine virtuelle change.

Essayer maintenant
Pour créer une NIC comme illustré à la figure 5.3, procédez comme décrit ci-dessous.

1 Dans le portail Azure, sélectionnez Créer une ressource dans le coin supérieur
gauche du tableau de bord.
2 Recherchez et sélectionnez Interface réseau, puis sélectionnez Créer.
3 Indiquez un nom pour votre interface réseau, comme webvnic. Le réseau vir-
tuel et le sous-réseau que vous avez créés plus tôt doivent être automatiquement
sélectionnés.
4 Regardons exactement comment fonctionnent les ressources durables dont j’ai
parlé. Choisissez Statique pour l’attribution de l’adresse IP privée. Saisissez
l’adresse 10.0.1.4 afin de créer une adresse IP statique pour cette interface
réseau.
ASTUCE Pourquoi .4? Qu’en est-il des trois premières adresses de l’espace
d’adressage? Azure réserve les trois premières adresses IP de chaque plage
pour ses propres opérations de gestion et de routage. La première adresse
que vous pouvez utiliser dans chaque plage est donc la .4.
Composants du réseau virtuel 61

5 Laissez le groupe de sécurité réseau défini sur Aucun pour l’instant, nous y
reviendrons dans quelques minutes. Si vous faites partie de ceux qui
connaissent IPv6, vous pouvez cocher la case Adresse IP privée (IPv6) et indi-
quer un nom.
6 Sélectionnez Utiliser le groupe de ressources existant, puis sélectionnez celui
que vous avez créé dans la section précédente pour votre réseau virtuel.
7 Pour créer votre interface réseau, sélectionnez Créer.

Figure 5.3 Créez une carte d’interface


réseau virtuelle dans le portail Azure.
62 CHAPITRE 5 Principes de base de la mise en réseau Azure

Séparation des rôles dans Azure


Il est inutile de créer d’autres ressources de calcul dans le même groupe de ressources
que votre réseau virtuel. Repensez au concept de gouvernance Azure dont nous avons
parlé plus tôt. Vous pouvez compter sur un groupe d’ingénieurs réseau qui gèrent
l’ensemble des ressources du réseau virtuel dans Azure. Lorsque vous créez des res-
sources pour vos applications, telles que les machines virtuelles, vous les créez et les
gérez dans vos propres groupes de ressources.
Dans les chapitres suivants, nous aborderons certaines des fonctions de sécurité et de
stratégie dans Azure qui vous permettent de définir les personnes autorisées à accéder
à certaines ressources et à les modifier. Le fait est que si vous ne savez pas, ou ne voulez
pas savoir, vous ne pourrez vous connecter qu’à ce qui vous est donné, et c’est tout. La
même affirmation s’applique aux ingénieurs et aux développeurs : ils peuvent voir vos res-
sources d’application, mais ne peuvent ni les modifier ni les supprimer.
Même si ce type de gouvernance est intéressant, veillez à ne pas tomber dans le piège
du travail cloisonné. Dans de grandes entreprises, il peut sembler inévitable d’être limité
par certaines frontières, alors que l’un des grands avantages des fournisseurs de ser-
vices infonuagiques comme Azure consiste à raccourcir le délai avant le déploiement des
applications, car vous n’avez pas à attendre que les ressources réseau physiques soient
connectées et configurées. Si vous avez prévu de créer et de configurer les ressources
réseau Azure, vous ne devriez pas avoir de problème pour créer et gérer vos ressources
d’application.

5.1.3 Adresse IP publique et résolution DNS


Personne ne peut encore accéder à vos ressources, car aucune adresse IP publique ni
aucun nom DSN n’y a été associé. Encore une fois, respectons le principe des ressources
durables pour créer une adresse IP publique et un nom DNS public, puis assignez-les à
votre interface réseau.

Essayer maintenant
Pour créer une adresse IP publique et une entrée DNS pour votre interface réseau comme
illustré à la figure 5.4, procédez comme décrit ci-dessous.

1 Dans le portail Azure, sélectionnez Créer une ressource dans le coin supérieur
gauche du tableau de bord.
2 Recherchez et sélectionnez Adresse IP publique, puis sélectionnez Créer.
3 Indiquez un nom, par exemple webpublicip. Laissez la référence définie sur
De base et la version IP sur IPv4. Les références standard et les adresses IPv6
sont utilisées avec les équilibreurs de charge, que nous examinerons dans le
chapitre 8.
4 Pour l’attribution d’adresses IP, vous pouvez choisir entre Dynamique et Sta-
tique.
Composants du réseau virtuel 63

Types d’attribution d’adresses IP


Une attribution dynamique assigne une
adresse IP publique lorsque la machine
virtuelle est démarrée. Quand la machine
virtuelle est arrêtée, l’attribution de
l’adresse IP publique est supprimée. Voici
quelques points à retenir :
 Vous ne disposerez pas d’une
adresse IP publique avant de l’affec-
ter à une machine virtuelle et de la
démarrer.
 L’adresse IP publique peut changer
si vous arrêtez, supprimez l’attribu-
tion et démarrez la machine vir-
tuelle.
Une attribution statique implique qu’une
adresse IP publique a été attribuée sans
machine virtuelle associée, et que cette
adresse ne changera pas :
 Cette attribution s’avère utile dans
les cas où vous utilisez un certifi-
cat SSL mappé à une adresse IP
ou un nom DSN personnalisé, ainsi
qu’un enregistrement qui indique
l’adresse IP.
 Là tout de suite, vous utilisez une
seule machine virtuelle. Aux fins de
production, vous allez idéalement
exécuter votre application sur plu-
sieurs machines virtuelles avec un
équilibreur de charge à l’avant.
Dans cette situation, l’adresse IP
publique est attribuée à l’équi-
libreur de charge et crée générale-
ment une attribution statique à ce
Figure 5.4 Créez une adresse IP publique et
stade.
un nom DNS dans le portail Azure.

5 Pour l’étiquette de nom DNS, saisissez un nom unique. Ce nom forme le nom
de domaine qualifié complet (FQDN) pour votre ressource, basé sur la région
Azure dans laquelle vous le créez. Dans l’exemple illustré à la figure 5.4, j’ai
créé une étiquette de nom DNS pour azuremol dans la région est des États-
Unis, mon FQDN devenant alors azuremol.eastus.cloudapp.azure.com.
64 CHAPITRE 5 Principes de base de la mise en réseau Azure

Entrées DNS
Et qu’en est-il d’un nom DNS personnalisé? Le FQDN par défaut n’est pas vraiment très
pratique! Utilisez une adresse IP publique statique, puis créez un enregistrement CNAME
dans votre zone DNS enregistrée. Vous conservez le contrôle de l’enregistrement DNS et
pouvez créer autant d’entrées que vous le souhaitez pour vos applications.
Par exemple, dans la zone DNS manning.com, vous pouvez créer un CNAME pour azure-
mol qui renvoie vers une adresse IP publique statique dans Azure. Un utilisateur n’aurait
qu’à accéder à azuremol.manning.com pour atteindre votre application. Cette adresse est
tout de même bien plus facile que webmol.eastus.cloudapp.azure.com!

6 Sélectionnez Utiliser le groupe de ressources existant, puis choisissez le groupe


que vous avez créé dans la section précédente.
7 Pour créer votre adresse IP publique et votre étiquette de nom DNS, sélection-
nez Créer.
8 Maintenant, associons l’adresse IP publique et l’étiquette de nom DNS à l’inter-
face réseau que vous avez créée à l’étape précédente. Accédez à la barre de
navigation sur le côté gauche du portail Azure et sélectionnez Groupe de res-
sources. Choisissez le groupe de ressources dans lequel vous avez créé vos res-
sources réseau, par exemple azuremolchapter5.
9 Sélectionnez votre adresse IP publique dans la liste des ressources, puis choisis-
sez Associer, comme illustré à la figure 5.5.

Figure 5.5 Pour associer l’adresse IP publique à votre interface réseau, sélectionnez Associer en haut
de la fenêtre d’aperçu.

10 Sélectionnez Interface réseau dans le menu déroulant Type de ressource. Choi-


sissez votre interface réseau, par exemple webvnic, puis sélectionnez OK.
Après quelques secondes, la fenêtre d’adresse IP publique se met à jour pour montrer que
l’adresse IP est maintenant associée à votre interface réseau. Si vous avez sélectionné
Dynamique comme type d’attribution, l’adresse IP est toujours vide, comme illustré à la
figure 5.6. N’oubliez pas : une adresse IP publique est attribuée une fois qu’une machine
virtuelle associée est allumée.
Sécurisation et contrôle du trafic avec les groupes de sécurité réseau 65

Figure 5.6 L’adresse IP publique est désormais associée à une interface réseau. Avec une
attribution dynamique, aucune adresse IP publique n’est affichée avant qu’une machine
virtuelle ne soit créée et démarrée.

5.2 Sécurisation et contrôle du trafic avec les groupes de


sécurité réseau
Petite question : devez-vous connecter une machine virtuelle à Internet sans pare-feu pour
contrôler et restreindre le flux de trafic? Si vous répondez « Bien sûr, pourquoi pas? »,
alors prenez le reste de votre pause-déjeuner pour en apprendre davantage sur la sécurité
réseau sur Internet.
J’espère que votre réponse est un grand « Non! ». Malheureusement, le risque que
votre machine virtuelle soit l’objet d’une cyberattaque automatique juste après avoir été
allumée n’est pas nul. Même si vous devez toujours respecter les meilleures pratiques pour
maintenir le système d’exploitation et le logiciel d’application à jour, vous ne souhaitez
probablement pas que le trafic réseau atteigne votre machine virtuelle si ce n’est pas
nécessaire. Un ordinateur Windows ou MacOS classique est équipé d’un pare-feu intégré
et chaque réseau (compétent) sur place que j’ai vu est doté d’un pare-feu réseau entre
Internet et le réseau interne. Dans Azure, les règles de pare-feu et de trafic sont fournies
par les groupes de sécurité réseau.

5.2.1 Création d’un groupe de sécurité réseau


Dans Azure, un groupe de sécurité réseau (NSG) applique logiquement un ensemble de
règles aux ressources réseau. Ces règles définissent le trafic entrant et sortant de votre
machine virtuelle. En outre, vous définissez les ports, les protocoles et les adresses IP auto-
risés, ainsi que leur direction. Ces groupes de règles peuvent être appliqués à une seule
interface réseau ou à tout un sous-réseau. Cette flexibilité vous permet de contrôler minu-
tieusement la façon dont et le moment où les règles sont appliquées afin de répondre aux
besoins de sécurité de votre application.
La figure 5.7 illustre le flux logique d’un paquet réseau entrant lorsqu’il passe par un
NSG. Le même processus s’applique pour les paquets sortants. L’hôte Azure ne fait pas la
différence entre le trafic provenant d’Internet et le trafic provenant d’un autre endroit au
sein de votre environnement Azure, comme un réseau virtuel ou un autre sous-réseau. Les
règles NSG entrantes s’appliquent aux paquets réseau entrants, alors que les règles NSG
sortantes s’appliquent à tout paquet réseau sortant.
66 CHAPITRE 5 Principes de base de la mise en réseau Azure

Appliquer la Oui
règle NSG
suivante

Appliquer en premier Correspon- Non Plus de


Règle NSG dance de règles?
règle?
Figure 5.7 Les paquets
Oui Non entrants sont examinés et
chaque règle NSG est
Refuser Oui Supprimer appliquée par ordre de
la règle? le paquet priorité. En cas de
correspondance de règle
Non d’autorisation ou de refus, le
paquet est soit transmis à la
Autoriser le machine virtuelle, soit
paquet supprimé.

Voilà ce qui arrive à chaque paquet réseau :


1La première règle NSG est appliquée.
2Si la règle ne correspond pas au paquet, la règle suivante est chargée jusqu’à ce
qu’il n’y ait plus aucune règle. La règle par défaut consistant à supprimer le
paquet est ensuite appliquée.
3 Si une règle correspond, vérifiez si l’action propose de supprimer le paquet. Le
cas échéant, le paquet est supprimé.
4 Au contraire, si la règle consiste à autoriser le paquet, ce dernier est transmis à
la machine virtuelle.
Créons donc un NSG pour donner du sens à toutes ces explications.

Essayer maintenant
Pour créer un groupe de sécurité réseau comme illustré à la figure 5.8, procédez comme
décrit ci-dessous.

1 Dans le portail Azure, sélectionnez Créer une ressource dans le coin supérieur
gauche du tableau de bord.
2 Recherchez et sélectionnez Groupe de sécurité réseau, puis sélectionnez Créer.
3 Entrez un nom, par exemple webnsg.
4 Sélectionnez Utiliser le groupe de ressources existant, puis sélectionnez celui
que vous avez créé précédemment. Sélectionnez Créer pour créer votre NSG.
Et voilà! La majeure partie de la configuration d’un NSG s’effectue lorsque vous créez les
règles de filtrage. Continuons et discutons de l’exécution de votre NSG.
Sécurisation et contrôle du trafic avec les groupes de sécurité réseau 67

Figure 5.8 Créez un NSG dans


votre groupe de ressources.

5.2.2 Association d’un groupe de sécurité réseau à un sous-réseau


Le NSG ne protège pas vraiment votre machine virtuelle s’il ne comporte pas de règles.
Vous devez également l’associer à un sous-réseau, de la même façon que vous avez associé
votre adresse IP publique à une interface réseau. Associons tout d’abord votre NSG à un
sous-réseau.

Essayer maintenant
Pour associer votre sous-réseau virtuel à votre groupe de sécurité réseau, procédez
comme décrit ci-dessous.

1 Accédez à la barre de navigation sur le côté gauche du portail Azure et sélec-


tionnez Groupe de ressources. Choisissez le groupe de ressources dans lequel
vous avez créé vos ressources réseau, par exemple azuremolchapter5.
2 Sélectionnez votre NSG, par exemple webnsg.
3 À gauche, sous Paramètres, figurent les options Interfaces réseau et Sous-
réseaux. Choisissez Sous-réseaux.
4 Sélectionnez le bouton Associer, puis sélectionnez votre réseau virtuel et votre
sous-réseau créé aux étapes précédentes. Sélectionnez OK pour associer votre
NSG au sous-réseau.
La flexibilité des NSG implique que vous pouvez associer plusieurs sous-
réseaux, à travers différents réseaux virtuels, avec un seul NSG. Il s’agit d’un
mappage un-à-plusieurs, qui vous permet de définir des règles de sécurité
68 CHAPITRE 5 Principes de base de la mise en réseau Azure

réseau de base qui s’appliquent à un large éventail de ressources et d’applica-


tions. Examinons ce à quoi ressemblent votre NSG et les règles par défaut qui
s’appliquent.
5 À gauche dans votre NSG, sélectionnez Règles de sécurité entrantes. Aucune
règle de sécurité n’est répertoriée, à moins que vous n’en ayez créée. Sélection-
nez Règles par défaut pour voir ce que la plateforme Azure créée, comme illus-
tré à la figure 5.9.

Figure 5.9 Les règles de sécurité par défaut sont créées, autorisant le trafic interne du réseau virtuel ou de
l’équilibreur de charge, mais rejetant tout autre trafic.

Trois règles par défaut ont été créées pour vous. La compréhension de ces règles revêt
une importance capitale :
 AllowVnetInBound – Autorise tout trafic interne au réseau virtuel. Si votre réseau
virtuel comporte plusieurs sous-réseaux, le trafic n’est pas filtré par défaut et est
autorisé.
 AllowAzureLoadBalancerInBound – Autorise tout trafic depuis un équilibreur de
charge Azure pour atteindre votre machine virtuelle. Si vous placez un équilibreur
de charge entre vos machines virtuelles et Internet, cette règle garantit que le trafic
depuis l’équilibreur de charge atteint vos machines virtuelles, par exemple pour
surveiller un rythme cardiaque.
 DenyAllInBound – Règle finale appliquée. Supprime tous les paquets entrants
qui y arrivent. En l’absence de règle Allow, cette règle par défaut supprime tout
trafic. Vous devez donc uniquement autoriser le trafic spécifique que vous vou-
lez. Le reste est supprimé.
La priorité d’une règle NSG est importante. Si une règle d’autorisation ou de refus est
appliquée, aucune règle supplémentaire n’est appliquée. Les règles sont appliquées par
ordre de priorité numérique croissant : une règle avec une priorité de 100 est appliquée
avant une règle avec une priorité de 200, par exemple.
Comme pour les discussions précédentes sur la gouvernance des ressources Azure, ces
règles NSG peuvent être déjà créées pour vous et appliquées à un sous-réseau donné. Vous
créez vos machines virtuelles et exécutez vos applications, alors que quelqu’un d’autre
gère les NSG. Il est important de comprendre le flux du trafic au cas où quelque chose
tourne mal. Dans Azure, plusieurs outils peuvent vous aider à déterminer pourquoi le tra-
fic peut ne pas atteindre votre application quand vous pensez qu’il le devrait!
Sécurisation et contrôle du trafic avec les groupes de sécurité réseau 69

5.2.3 Création des règles de filtrage des groupes de sécurité réseau


Maintenant que votre NSG est associé au sous-réseau et que nous avons examiné les règles
par défaut, créons une règle NSG de base qui autorise le trafic HTTP.

Essayer maintenant
Pour créer vos propres règles avec le groupe de sécurité réseau comme illustré à la
figure 5.10, procédez comme décrit ci-dessous.

Figure 5.10 Créez une règle NSG


pour autoriser le trafic HTTP.

1 Pour créer une règle NSG, sélectionnez Ajouter dans la section Règles de sécu-
rité entrantes.
2 Deux méthodes permettent de créer des règles : De base et Avancée. Pour créer
rapidement des règles prédéfinies, sélectionnez De base en haut de la fenêtre.
3 Sélectionnez HTTP dans le menu déroulant Service. De nombreux services par
défaut sont fournis, comme SSH, RDP et MySQL. Lorsque vous sélectionnez un
service, la plage de ports appropriée est appliquée : dans ce cas, le port 80.
4 Une valeur Priorité est attribuée à chaque règle. Plus le nombre est bas, plus la
priorité est élevée. Laissez la priorité basse par défaut, par exemple 100.
5 Vous pouvez accepter le nom par défaut ou indiquer le nom de votre choix.
Ensuite, sélectionnez OK.
70 CHAPITRE 5 Principes de base de la mise en réseau Azure

5.3 Création d’un exemple d’application Web avec un


trafic sécurisé
Jusqu’à présent, vous avez créé un réseau virtuel et un sous-réseau. Ensuite, vous avez créé
une interface réseau et y avez associé une adresse IP publique ainsi qu’un nom DNS. Un
NSG a été créé et appliqué à l’ensemble du sous-réseau, et une règle NSG a été créée pour
permettre le trafic HTTP. Il vous manque toutefois une chose : la machine virtuelle.

5.3.1 Création de connexions au réseau par accès à distance


En production, vous ne devriez pas pouvoir ouvrir l’accès à distance, comme SSH ou RDP,
vers les machines virtuelles qui exécutent vos applications. En règle générale, vous dispo-
sez d’une machine virtuelle pour la boîte de saut distincte à laquelle vous vous connectez
depuis Internet, puis accédez à vos machines virtuelles supplémentaires à partir de la
connexion interne. Jusqu’ici, vous avez créé toutes les ressources réseau virtuelles dans le
portail Azure. Passons maintenant à l’interface de ligne de commande Azure pour voir à
quelle vitesse vous pouvez créer ces ressources à partir de la ligne de commande.

Essayer maintenant
Le premier NSG a été créé dans le portail Azure. Pour créer un autre NSG avec l’interface
de ligne de commande Azure, procédez comme décrit ci-dessous.

1 Sélectionnez l’icône Cloud Shell en haut du tableau de bord du portail Azure.


Veillez à ce que l’interpréteur Bash s’ouvre, et non l’outil PowerShell.
2 Créez un NSG supplémentaire dans le groupe de ressources existant. Comme
dans les chapitres précédents, les barres obliques inversées (\) dans les
exemples de commandes suivants permettent d’effectuer des sauts de ligne,
vous n’êtes pas obligé de les utiliser.
Fournissez un nom, par exemple remotensg:
az network nsg create \
--resource-group azuremolchapter5 \
--name remotensg
3 Créez une règle NSG dans le nouveau NSG qui autorise le port 22. Indiquez le
groupe de ressources et le NSG que vous avez créés à l’étape précédente, ainsi
qu’un nom, comme allowssh :
az network nsg rule create \
--resource-group azuremolchapter5 \
--nsg-name remotensg \
--name allowssh \
--protocol tcp \
--priority 100 \
--destination-port-range 22 \
--access allow
4 L’étape finale consiste à réseau un sous-réseau pour votre machine virtuelle à
distance. Indiquez un nom de sous réseau, par exemple remotesubnet, ainsi
qu’un préfixe d’adresse dans la plage du réseau virtuel, comme 10.0.2.0/24.
Vous associez également le NSG que vous avez créé à l’étape précédente au
sous-réseau, comme remotensg:
Création d’un exemple d’application Web avec un trafic sécurisé 71

az network vnet subnet create \


--resource-group azuremolchapter5 \
--vnet-name vnetmol \
--name remotesubnet \
--address-prefix 10.0.2.0/24 \
--network-security-group remotensg

Trois commandes : c’est tout ce dont vous avez besoin pour créer un sous-réseau, créer un
NSG et créer une règle. Vous commencez à ressentir la puissance de l’interface de ligne
de commande Azure, n’est-ce pas? L’outil Azure PowerShell est tout aussi puissant, donc
ne pensez pas que vous devrez créer toutes les ressources du portail Azure. À mesure que
vous avancez dans le livre, nous allons utiliser l’interface de ligne de commande Azure
plutôt que le portail.

5.3.2 Création de machines virtuelles


Une fois tous les composants réseau mis en place, créons deux machines virtuelles. Une
machine virtuelle est créée dans le sous-réseau qui permet le trafic HTTP afin que vous
puissiez installer un serveur Web. L’autre machine virtuelle est créée dans le sous-réseau
qui autorise SSH afin que vous disposiez d’une boîte de saut pour sécuriser votre environ-
nement d’application et commenciez à répliquer un déploiement de production. La
figure 5.11 représente le système que vous construisez.

Réseau virtuel

Sous-réseau : règle Web Sous-réseau : règle distante


pour autoriser le trafic HTTP pour autoriser le trafic SSH
Adresse IP publique Adresse IP publique
d’interface réseau + DNS d’interface réseau + DNS

Machine
Machine virtuelle virtuel à boîte
Web de saut

Figure 5.11 (Figure 5.1, suite.) Vous rassemblez deux sous-réseaux, des
NSG, des règles, des interfaces réseau et des machines virtuelles. Ce
regroupement est proche d’un déploiement prêt à la production, dans lequel
une machine virtuelle exécute un serveur Web et s’ouvre au trafic public, et
une autre machine virtuelle dans un sous-réseau distinct est utilisée pour les
connexions à distance au reste de l’environnement d’application.

Lorsque vous créez une machine virtuelle, vous pouvez fournir l’interface réseau virtuelle
que vous avez créée dans les étapes précédentes. Si vous n’avez pas indiqué cette ressource
réseau, l’interface de ligne de commande Azure créera un réseau virtuel, un sous-réseau
et une carte réseau à l’aide des valeurs par défaut intégrées. Pour créer rapidement une
machine virtuelle, ces opérations se révèlent utiles, mais vous voulez surtout suivre le prin-
cipe des ressources réseau durables qu’une autre équipe peut gérer et dans lesquelles
vous allez créer vos machines virtuelles.
72 CHAPITRE 5 Principes de base de la mise en réseau Azure

Essayer maintenant
Pour utiliser l’interface de ligne de commande Azure afin de créer votre machine virtuelle
pour la boîte de saut, procédez comme décrit ci-dessous.

1 Créez la première machine virtuelle pour votre serveur web et donnez-lui un


nom, comme webvm. Associez l’interface réseau, comme webvnic, et saisissez
une image, comme UbuntuLTS. Fournissez un nom d’utilisateur, par exemple
azuremol. La dernière étape, --generate-ssh-keys, ajoute à la machine vir-
tuelle les clés SSH que vous avez créées dans le chapitre 2 :
az vm create \
--resource-group azuremolchapter5 \
--name webvm \
--nics webvnic \
--image UbuntuLTS \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys
2 Créez la seconde machine virtuelle pour la boîte de saut. Cet exemple montre
comment vous pouvez utiliser un sous-réseau et un NSG existants, et laisser
l’interface de ligne de commande Azure créer l’interface réseau et effectuer les
connexions appropriées. Vous créez une adresse IP publique, comme remote-
publicip, dans le cadre de cette commande :
az vm create \
--resource-group azuremolchapter5 \
--name remotevm \
--vnet-name vnetmol \
--subnet remotesubnet \
--nsg remotensg \
--public-ip-address remotepublicip \
--image UbuntuLTS \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys

La sortie des deux commandes affiche l’adresse IPC publique. Si vous tentez une
connexion SSH à votre première machine virtuelle, elle échouera, car vous avez unique-
ment créé une règle NSG pour autoriser le trafic HTTP.

5.3.3 Utilisation de l’agent SSH pour se connecter à vos machines virtuelles


Je me dois de vous présenter la petite touche de magie de SSH, qui vous permet d’utiliser
votre boîte de saut correctement et de vous connecter à la machine virtuelle Web sur le
réseau virtuel Azure : l’agent SSH. Comme il concerne uniquement les machines virtuelles
Linux, si vous travaillez principalement avec les connexions RDP et les machines virtuelles
Windows, vous n’en aurez sûrement pas entendu parler. Vous pouvez créer des
connexions RDP à partir de votre boîte de saut à l’aide d’informations d’identification dis-
tantes locales, ou avec des informations d’identification de domaine si vous configurez
correctement le serveur.
Création d’un exemple d’application Web avec un trafic sécurisé 73

Un agent SSH peut stocker vos clés SSH et les transférer, au besoin. Revenons au chapitre 2,
où vous avez créé une paire de clés SSH publiques et dans lequel j’ai parlé des clés publiques et
privées. La clé privée demeure sur votre ordinateur, alors que la clé publique est copiée sur les
machines virtuelles à distance. Bien que la clé publique ait été ajoutée aux deux machines vir-
tuelles que vous avez créées, vous ne pouvez pas simplement vous connecter par SSH à votre
boîte de saut, puis à la machine virtuelle Web. Pourquoi? Parce que cette boîte de saut n’est pas
dotée d’une copie de votre clé privée. Lorsque vous tentez d’établir la connexion SSH depuis
la boîte de saut, cette dernière n’a pas de clé privée pour s’associer à la clé publique sur la
machine virtuelle Web et vous authentifier.
La clé privée étant un élément important, vous ne devriez pas pouvoir simplement la
copier sur la boîte de saut. Tout autre utilisateur qui accède à la boîte de saut pourrait
alors obtenir une copie de votre clé privée, et utiliser votre identité dans tous les emplace-
ments où cette clé est utilisée. C’est là que l’agent SSH entre en jeu.
Si vous exécutez l’agent SSH dans votre session du Cloud Shell, vous pouvez y ajouter
vos clés SSH. Pour créer votre connexion SSH à la boîte de saut, vous précisez l’utilisation
de cet agent pour acheminer votre session. Vous pouvez alors utiliser efficacement votre
clé privée dans la boîte de saut, sans jamais avoir à la copier. Lorsque vous établissez une
connexion SSH depuis la boîte de saut vers la machine virtuelle Web, l’agent SSH ache-
mine votre clé privée à travers la boîte de saut et vous permet de vous authentifier.

Essayer maintenant
Pour utiliser la connexion SSH avec votre machine virtuelle pour la boîte de saut, procédez
comme décrit ci-dessous.

1 Dans le Cloud Shell, lancez l’agent SSH comme suit :


eval $(ssh-agent)
2 Ajoutez la clé SSH que vous avez créée au chapitre2 à l’agent comme suit :
ssh-add
3 Créez une connexion SSH à votre machine virtuelle pour la boîte de saut. Préci-
sez l’utilisation de l’agent SSH au moyen du paramètre -A. Saisissez votre
propre adresse IP publique qui a été indiquée dans la sortie lorsque vous avez
créé la machine virtuelle pour la boîte de saut :
ssh -A azuremol@<publicIpAddress>
4 Comme il s’agit de la première fois que vous créez une connexion SSH à la
machine virtuelle pour la boîte de saut, acceptez l’invite pour vous connecter
avec les clés SSH.
5 Vous rappelez-vous comment vous avez créé une attribution d’adresse IP privée
statique pour la machine virtuelle Web à la section 5.1.2? Cette adresse statique
facilite grandement la connexion SSH! Établissez une connexion SSH à la
machine virtuelle Web comme suit :
ssh 10.0.1.4
6 Acceptez l’invite pour poursuivre la connexion SSH. L’agent SSH a acheminé
votre clé SSH privée à travers la boîte de saut et vous permet de vous connecter
à la machine virtuelle Web. Et maintenant? Eh bien, essayez-vous à cet exercice
pour mettre toute cette théorie en application!
74 CHAPITRE 5 Principes de base de la mise en réseau Azure

5.4 Exercice : installation et test du serveur Web LAMP


Vous avez déjà accompli le plus dur dans le chapitre. Cet exercice rapide vous rappelle
comment installer un serveur Web et vous permet de voir la règle NSG en action sur votre
machine virtuelle :
1 Installez un serveur Web Linux de base. Repensez au chapitre 2, lorsque vous avez
créé une connexion SSH à la machine virtuelle, puis installé le paquet de ser-
veur Web LAMP avec apt. À partir de la connexion SSH à votre machine vir-
tuelle Web créée à la section 5.3.2, installez et configurez le pilotage Web de
LAMP par défaut.
2 Accédez au site Web par défaut. Une fois que le pilotage Web de LAMP est installé,
ouvrez votre navigateur Web à l’étiquette de nom DNS que vous avez saisie
lorsque vous avez créé une adresse IP publique dans la section 5.1.3. Dans mon
exemple, il s’agissait du nom azuremol.eastus.cloudapp.azure.com. Vous pou-
vez également utiliser l’adresse IP publique qui a été sortie lorsque vous avez
créé la machine virtuelle Web. N’oubliez pas, cependant, que l’adresse IP
publique est différente de la machine virtuelle pour la boîte de saut à laquelle
vous accédez par une connexion SSH!
Partie 2

Haute disponibilité et mise


à l’échelle

C ’est parti, nous pouvons commencer à nous amuser! Maintenant que vous
comprenez les ressources de base dans Azure, nous pouvons nous plonger dans les
domaines tels que la redondance, l’équilibrage de charge et la distribution géogra-
phique des applications. C’est ici que l’aventure commence, et les thèmes que vous
avez déjà abordés dans les chapitres précédents vont enfin révéler les solutions et les
meilleures pratiques que vous pouvez utiliser dans les déploiements en situation
réelle. Certaines fonctions incroyables dans Azure permettent de répliquer des don-
nées globalement, de distribuer le trafic client à l’instance la plus proche de votre
application et d’effectuer une mise à l’échelle automatique sur demande. Ces fonc-
tions démontrent la puissance de l’infonuagique et soulignent la véritable valeur de
votre travail.
Azure Resource Manager

Dans la plupart des cas, vous souhaitez passer le moins de temps possible sur la
méthode de déploiement d’un environnement d’application, mais plutôt obtenir le
déploiement en question. Dans de nombreux environnements informatiques, la ten-
dance est à la collaboration des équipes de développement et des opérations, le mot
DevOps étant à la mode sur plusieurs blogues ou faisant l’objet de conférences.
Rien n’est intrinsèquement nouveau ni révolutionnaire concernant la culture
DevOps, mais la plupart du temps, les différentes équipes n’ont pas travaillé ensemble
comme ils auraient dû. Les outils modernes ont favorisé le mouvement DevOps, grâce
aux solutions d’intégration continue et de livraison continue (CI/CD) qui peuvent
automatiser la totalité du déploiement des environnements d’applications sur la base
d’un archivage de code unique par un développeur. En règle générale, l’équipe des
opérations est celle qui construit et maintient ces pipelines CI/CD, promouvant des
tests et des déploiements de mises à jour beaucoup plus rapides pour les développeurs.
Le modèle de déploiement Azure Resource Manager se veut essentiel à la façon
dont vous créez et exécutez des ressources, même si vous ne vous en êtes pas encore
rendu compte. Resource Manager est une approche permettant de créer et de
déployer des ressources, tout comme les processus d’automatisation et les modèles qui
motivent ces déploiements. Dans ce chapitre, vous apprendrez à utiliser les fonctions
Resource Manager, comme les contrôles d’accès et les verrous, les déploiements de
modèles cohérents et les déploiements automatisés à plusieurs niveaux.

6.1 Approche Azure Resource Manager


Lorsque vous avez conçu une machine virtuelle ou une application Web dans les cha-
pitres précédents, un groupe de ressources a d’abord été créé pour servir de fondation
à l’ensemble de vos ressources. Un groupe de ressources s’avère essentiel à toutes les
ressources : une machine virtuelle, une application Web, un réseau virtuel ou une table
de stockage ne peut exister en dehors d’un groupe de ressources. Cependant, ce der-
nier représente bien plus qu’un simple endroit pour organiser vos ressources. Exami-

77
78 CHAPITRE 6 Azure Resource Manager

nons le modèle Azure Resource Manager sous-jacent et déterminons pourquoi il est


important de construire et d’exécuter vos applications.

6.1.1 Conception autour du cycle de vie de l’application


Avec un peu de chance, vous ne créerez pas d’application pour ensuite ne jamais la main-
tenir. Généralement, des mises à jour peuvent toujours être développées et déployées, de
nouveaux packages installés, de nouvelles machines virtuelles ajoutées et des emplace-
ments de déploiement d’application Web supplémentaires peuvent être créés. Vous
devrez peut-être apporter des modifications aux paramètres et aux adresses IP du réseau
virtuel. Vous rappelez-vous ce que j’ai dit dans les chapitres précédents, concernant les
réseaux virtuels dans Azure pouvant être gérés par une équipe différente? Vous devez
commencer à réfléchir à la façon dont vous exécutez vos applications à grande échelle,
ainsi qu’à la gestion et au cycle de vie de celles-ci.
Plusieurs approches permettent de regrouper des ressources dans Azure :
 Toutes les ressources pour une application donnée dans le même groupe de ressources –
Comme illustré à la figure 6.1, cette approche fonctionne bien pour les applica-
tions ou les environnements de développement et de test plus petits. Si vous
n’avez pas besoin de partager de grands espaces de réseautage et pouvez gérer
individuellement le stockage, vous pouvez créer toutes les ressources dans un
seul endroit, puis gérer les mises à jour et les modifications de configuration en
une seule opération.

Réseau virtuel

Sous-réseau frontal Sous-réseau d’arrière-plan

NIC 1 NIC 2 NIC 3 NIC 4

Machine Machine Machine Machine


virtuelle 1 virtuelle 2 virtuelle 3 virtuelle 4

Disque du Disque du Disque du Disque du


système Disque de système Disque de système Disque de système Disque de
d’exploita- données d’exploita- données d’exploita- données d’exploita- données
on on on on

Groupe de ressources unique

Figure 6.1 L’une des façons de créer une application dans Azure consiste à
créer et à gérer toutes les ressources associées à ce déploiement d’application
dans le même groupe de ressources et sous la forme d’une entité unique.

 Ressources similaires regroupées par fonction dans le même groupe de ressources – Comme
illustré à la figure 6.2, cette approche est souvent plus fréquente dans les applica-
tions et les environnements plus grands. Votre application peut exister dans un
groupe de ressources avec uniquement les machines virtuelles et les composants
d’application de prise en charge. Les ressources réseau virtuelles et les adresses IP
peuvent exister dans un groupe de ressources distinct, sécurisé et géré par un
groupe différent d’ingénieurs.
Approche Azure Resource Manager 79

Réseau virtuel

Sous-réseau frontal Sous-réseau d’arrière-plan

NIC 1 NIC 2 NIC 3 NIC 4

Groupe de ressources réseau

Machine Machine Machine Machine


virtuelle 1 virtuelle 2 virtuelle 3 virtuelle 4

Disque du Disque Disque du Disque Disque du Disque Disque du Disque


système de système de système de système de
d’ex- données d’exploita- données d’exploita- données d’exploita- données
ploitaon on on on

Groupe de ressources de calcul

Figure 6.2 Une autre approche consiste à créer et à regrouper les ressources en fonction de leur
rôle. Exemple fréquent : toutes les ressources réseau fondamentales se trouvent dans un groupe
de ressources distinct des ressources de calcul de l’application. Les machines virtuelles
comprises dans le groupe de ressources de calcul peuvent accéder aux ressources réseau
du groupe distinct, mais les deux jeux de ressources peuvent être gérés et sécurisés
indépendamment.

Pourquoi deux approches différentes? La réponse ne se limite pas à la sécurité et à ce cloi-


sonnement dans lequel certaines équipes aiment travailler. Il s’agit davantage de la façon
dont vous devez gérer les ressources sous-jacentes. Dans les environnements et les applica-
tions plus petits où toutes les ressources existent dans le même groupe, vous êtes respon-
sable du moindre élément de cet environnement. Cette approche se veut également bien
adaptée aux environnements de développement et de test où tout est rassemblé. Toute
modification apportée au réseau virtuel se répercute uniquement sur votre application et
votre groupe de ressources.
En réalité, les réseaux ne changent pas souvent. Les plages d’adresses sont souvent
bien définies et planifiées afin de pouvoir coexister dans Azure et les bureaux des quatre
coins du monde. Il est plutôt logique de placer les composants réseau dans leur propre
groupe de ressources, puisque le réseau est géré séparément de l’application. Le stockage
peut être géré et mis à jour séparément, de la même façon. La division de ces ressources
n’a rien d’intrinsèquement mauvais, tant que le personnel informatique ne se renferme
pas dans un cloisonnement, entraînant un manque de coopération.
Pour vos applications, la division des ressources peut également constituer en avan-
tage, dans le sens où vous êtes libre d’appliquer les modifications et les mises à jour de
votre choix. C’est justement parce que votre groupe de ressources ne comporte pas de
composants réseau que vous n’avez pas à vous en soucier lorsque vous mettez à jour votre
application.
80 CHAPITRE 6 Azure Resource Manager

6.1.2 Sécurisation et contrôle des ressources


Différentes autorisations de sécurité peuvent être appliquées à chaque ressource. Ces poli-
tiques définissent les personnes autorisées à réaliser certaines actions. Réfléchissez-y : vou-
lez-vous qu’un stagiaire redémarre votre application Web ou supprime les disques de
données de votre machine virtuelle? Et pensez-vous que vos bons copains de l’équipe
réseau souhaitent que vous puissiez créer un nouveau sous-réseau virtuel? Probablement
pas.
Azure définit quatre rôles principaux que vous pouvez attribuer aux ressources, à l’ins-
tar des autorisations de fichiers :
 Propriétaire – Contrôle complet. En d’autres mots, un administrateur.
 Contributeur – Pleine gestion des ressources, à l’exception des modifications appor-
tées aux attributions de sécurité et de rôle.
 Lecteur – Consultation de toutes les informations relatives aux ressources, sans
modification.
 Administrateur à accès utilisateur – Attribution ou suppression de l’accès aux res-
sources.
Le contrôle d’accès en fonction du rôle (RBAC) compte parmi les fonctions majeures des
ressources Azure et s’intègre automatiquement aux comptes utilisateur dans vos abonne-
ments. Pensez aux autorisations de fichiers sur votre ordinateur. Les autorisations de base
concernent la lecture, l’écriture et l’exécution. Une fois combinées, vous pouvez créer dif-
férents jeux d’autorisations pour chaque utilisateur ou groupe sur votre ordinateur.
Lorsque vous travaillez avec des partages de fichiers réseau, les autorisations sont monnaie
courante pour le contrôle des accès. Dans Azure, la fonction RBAC s’aligne sur le contrôle
des accès aux ressources, tout comme les autorisations de fichiers sur votre ordinateur
local ou votre partage réseau (Figure 6.3).

Essayer maintenant
Ouvrez le portail Azure dans un navigateur Web, puis sélectionnez toutes les ressources
dont vous disposez, comme le nuage, l’interpréteur et le stockage. Choisissez le bouton
de contrôle d’accès (IAM), comme illustré à la figure 6.3. Examinez les attributions en
cours. Choisissez le bouton Rôles et explorez toutes les attributions de rôle disponibles.
L’icône d’information pour chaque rôle indique les autorisations qui y sont attribuées.

Figure 6.3 Le contrôle d’accès pour chaque ressource Azure répertorie les attributions
actuelles. Vous pouvez ajouter des attributions ou sélectionner des rôles pour afficher les
informations concernant les jeux d’autorisations disponibles.
Approche Azure Resource Manager 81

À mesure que vous explorez les rôles disponibles, vous pouvez remarquer plusieurs rôles
spécifiques des ressources. Voici quelques exemples de ces nouvelles responsabilités :
 Contributeur de la machine virtuelle
 Contributeur du site Web
 Contributeur du réseau
Pouvez-vous deviner ce que ces rôles impliquent? Ils prennent le rôle de contributeur de
la plateforme et l’appliquent à un type de ressource spécifique. Le cas d’utilisation ici
remonte au concept de gestion des ressources semblables. Vous pourriez recevoir le rôle
de contributeur de la machine virtuelle ou de contributeur du site Web. Toute machine
virtuelle ou application Web créée dans ce groupe de ressources pourrait alors être gérée
par vos soins. Mais vous ne pourriez pas gérer les ressources réseau, qui seraient contenues
dans un groupe de ressources totalement différent.

6.1.3 Protection des ressources avec des verrous


L’approche reposant sur les autorisations du RBAC s’avère utile pour limiter l’accès à cer-
taines fonctions. Cependant, personne n’est à l’abri d’une erreur. Il y a une raison pour
laquelle vous ne vous connectez généralement pas à un serveur en tant qu’utilisateur avec
des autorisations d’administration ou racine. En effet, une mauvaise frappe ou un mauvais
clic de souris, et vous pourriez supprimer des ressources par erreur. Même si vous avez
effectué des sauvegardes (vous avez des sauvegardes, n’est-ce pas? Et vous les testez réguliè-
rement?), ce processus prend du temps et peut impliquer une perte de productivité ou de
revenus pour l’entreprise. Dans le chapitre 13, vous en apprendrez davantage sur les
façons d’utiliser les services de sauvegarde, de récupération et de réplication Azure afin de
protéger vos données.
Les verrous de ressources sont une autre fonction intégrée au modèle Resource Mana-
ger. Un verrou peut être appliqué à chaque ressource afin de limiter l’accès en lecture
seule ou empêcher les opérations de suppression. Le verrou de suppression s’avère parti-
culièrement utile, car il peut être vraiment facile de supprimer le mauvais groupe de res-
sources par accident. Lorsque vous lancez une opération de suppression, il n’y a pas de
retour possible une fois que la plateforme Azure a accepté votre demande.
Au regard des tâches de production, je vous conseille d’appliquer des verrous à vos res-
sources de base en vue d’empêcher toute suppression. Ce verrou se rapporte uniquement
aux niveaux de la plateforme et des ressources Azure, et non aux données comprises dans
vos ressources. Par exemple, vous pourriez supprimer des fichiers dans une machine vir-
tuelle ou retirer un tableau d’une base de données. Les verrous de ressources Azure
s’appliqueraient uniquement si vous tentiez de supprimer toute la base de données de la
machine virtuelle ou SQL Azure. La première fois qu’un verrou s’enclenchera et empê-
chera la suppression du mauvais groupe de ressources, vous me remercierez!

Essayer maintenant
Pour voir les verrous de ressources Azure en action, comme illustré à la figure 6.4, procé-
dez comme décrit ci-dessous.
82 CHAPITRE 6 Azure Resource Manager

Figure 6.4 Créez un verrou de ressources dans le portail Azure.

1 Ouvrez le portail Azure dans un navigateur Web, puis sélectionnez tous les
groupes de ressources dont vous disposez, comme le nuage, l’interpréteur et le
stockage. Choisissez Verrous à gauche dans le portail.
2 Indiquez un nom de verrou, par exemple Protect, puis sélectionnez Supprimer
dans le menu déroulant Type de verrou. Choisissez OK pour afficher votre nou-
veau verrou dans la liste.
3 Sélectionnez Aperçu pour le groupe de ressources, puis tentez de supprimer le
groupe de ressources. Vous devez saisir le nom du groupe de ressources pour
confirmer que vous souhaitez le supprimer (ce qui vous rappelle d’ailleurs que
la ressource concernée est bien celle à supprimer!).
4 Lorsque vous choisissez le bouton Supprimer, examinez le message d’erreur qui
s’affiche pour observer comment votre verrou a empêché Azure de supprimer
la ressource.

6.1.4 Gestion et regroupement des ressources avec des balises


La dernière fonction du modèle Azure Resource Manager que je souhaite vous présenter
sont les balises. Le balisage des ressources dans Azure n’a rien de nouveau ni de spécial,
mais ce concept de gestion est souvent négligé. Vous pouvez appliquer des balises à une
ressource dans Azure qui décrit les propriétés telles que l’application dont elle fait partie,
le service responsable de celle-ci ou encore sa fonction (développement ou production).
Vous pouvez ensuite cibler les ressources en fonction des balises pour appliquer des
verrous ou des rôles RBAC, ou établir des rapports sur les coûts et la consommation des
ressources. Les balises ne sont pas uniques à un groupe de ressources et peuvent être réu-
tilisées dans le cadre de votre abonnement. Jusqu’à 15 balises peuvent être appliquées à
une seule ressource, la façon de baliser, puis de filtrer les ressources balisées se révélant
très flexible.
Modèles Azure Resource Manager 83

Essayer maintenant
Pour afficher les balises de ressources Azure en action, procédez comme décrit ci-des-
sous.

1 Ouvrez le portail Azure dans un navigateur Web, puis sélectionnez toutes les
ressources, comme le nuage, l’interpréteur et le stockage. Choisissez le bouton
Balises, comme illustré à la figure 6.5.
2 Saisissez un nom, par exemple workload, et une valeur, comme development.
3 Sélectionnez Enregistrer, puis ouvrez le Cloud Shell.
4 Pour filtrer les ressources en fonction des balises, utilisez az resource list
avec le paramètre --tag. Utilisez votre propre nom et valeur comme suit :
az resource list --tag workload=development

Figure 6.5 Vous pouvez créer jusqu’à 15 balises nom:valeur pour chaque ressource Azure.

6.2 Modèles Azure Resource Manager


Jusqu’à présent, vous avez créé un petit nombre de ressources Azure à la fois. Pour ce
faire, vous avez utilisé le portail Azure ou l’interface de ligne de commande Azure. Bien
que je ne vous aie pas montré l’outil Azure PowerShell, je l’ai abordé dans le premier cha-
pitre et il est disponible dans le Cloud Shell. Peut-être l’avez-vous essayé sans moi. Ce n’est
pas grave, je ne vous en veux pas! Comme je l’ai indiqué au chapitre 1, Azure dispose
d’outils qui vous permettent de choisir les fonctions adaptées et l’environnement dans
lequel vous travaillez.
L’inconvénient de l’utilisation des commandes du portail, de l’interface de ligne de
commande ou PowerShell est que vous deviez cliquer sur une pléthore de boutons dans le
navigateur Web ou saisir des lignes de commande pour créer votre environnement
d’application. Vous pourriez créer des scripts pour effectuer toutes ces opérations, mais
vous devriez alors mettre au point une logique régissant la façon de créer plusieurs res-
sources en même temps ou l’ordre dans lequel les créer.
Un script qui englobe les commandes de l’interface de ligne de commande Azure ou
PowerShell constitue la clé de la création et du déploiement des environnements d’appli-
cation, et pas seulement dans Azure, mais aussi sur n’importe quelle plateforme. Une ten-
dance à l’infrastructure en tant que code (IaC) se dégage, qui n’a rien de nouveau si vous
84 CHAPITRE 6 Azure Resource Manager

êtes dans l’informatique depuis un certain temps. Par conséquent, vous ne vous fiez pas à
un humain pour saisir des commandes et respecter l’ensemble des étapes... À la place,
vous programmez votre infrastructure à partir d’un ensemble d’instructions. Les déploie-
ments manuels introduisent un élément humain qui peut souvent entraîner des défauts
de configuration et de petites différences dans les machines virtuelles finales, comme illus-
tré à la figure 6.6.

Machine
Scripts virtuelle 1
Différences
Listes de probables dans Machine
Opérateur virtuelle 2
vérificaon les machines
humain
virtuelles
Plusieurs étapes Paquets déployées Machine
et scripts pour d’installa- virtuelle 3
créer des machines teur
virtuelles

Figure 6.6 Les humains commettent des erreurs, telles que la saisie incorrecte d’une commande ou
l’omission d’une étape dans le déploiement. Vous pouvez vous retrouver avec des machines virtuelles
légèrement différentes à la sortie. L’automatisation est souvent utilisée pour retirer l’opérateur humain de
l’équation et créer alors des déploiements identiques et cohérents à chaque fois.

Même avec des scripts, vous avez toujours besoin de quelqu’un pour les écrire, les entrete-
nir et les maintenir à jour à mesure que de nouvelles versions des modules d’interface de
commande Azure ou PowerShell sont lancées. Oui, des changements révolutionnaires
sont parfois apportés aux outils afin de répondre aux nouvelles fonctions, même s’ils se
font rares.

6.2.1 Création et utilisation des modèles


Les modèles Resource Manager peuvent aider à réduire les erreurs humaines et l’utilisa-
tion de scripts écrits à la main. Les modèles sont écrits en JSON, une approche ouverte et
multiplateforme qui permet leur modification dans un éditeur de texte de base. Grâce
aux modèles, vous pouvez créer des déploiements cohérents et reproductibles qui
réduisent les erreurs. Une autre fonction intégrée des modèles implique que la plate-
forme comprend les dépendances et peut créer des ressources en parallèle, si possible,
pour accélérer le temps de déploiement. Par exemple, si vous créez trois machines vir-
tuelles, il n’est pas nécessaire d’attendre la fin du déploiement de la première machine
virtuelle pour créer la deuxième. Resource Manager peut créer les trois machines vir-
tuelles en même temps.
Comme exemple de dépendances, si vous créez une carte réseau virtuelle, vous devez
la connecter à un sous-réseau. Logiquement, le sous-réseau doit exister avant que vous ne
puissiez créer la carte réseau virtuelle. Et le sous-réseau doit faire partie d’un réseau vir-
tuel, de sorte que le réseau doit être créé avant le sous-réseau. La figure 6.7 montre la
chaîne de dépendances en action. Si vous tentez d’écrire un script vous-même, vous devez
soigneusement planifier l’ordre dans lequel les ressources sont créées, et même alors,
vous devez établir une logique afin de déterminer le moment où les ressources associées
sont prêtes, ainsi que le moment où vous pouvez passer aux ressources dépendantes.
Modèles Azure Resource Manager 85

Dépend de Dépend de Réseau


NIC virtuel Sous-réseau
virtuel

Figure 6.7 Azure Resource Manager gère les dépendances pour vous. La
plateforme connaît l’ordre dans lequel créer des ressources et est consciente de
l’état de chaque ressource sans qu’une logique manuscrite ou des boucles comme
celles que vous devez employer dans vos propres scripts ne doivent être utilisées.
Vous voulez savoir quelque chose d’intéressant? Vous avez déjà utilisé des modèles
Resource Manager, tout au long du chapitre 2 et pour la création de votre première
machine virtuelle. Lorsque vous créez une machine virtuelle dans le portail ou l’interface
de ligne de commande Azure, un modèle est automatiquement créé et déployé. Pour-
quoi? Eh bien, pourquoi repartir de zéro et parcourir le processus de construction de toute
cette logique pour les déploiements? Laissez Azure Resource Manager le faire pour vous!
Découvrons ce à quoi ressemble une section d’un modèle Resource Manager. La liste sui-
vante illustre la section qui crée une adresse IP publique, tout comme vous l’avez fait dans
les exemples précédents lorsque vous avez créé une machine virtuelle.

Listing 6.1 Création d’une adresse IP publique dans un modèle Resource Manager
{
"apiVersion": "2017-04-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "publicip",
"location": "eastus",
"properties": {
"publicIPAllocationMethod": "dynamic",
"dnsSettings": {
"domainNameLabel": "azuremol"
}
}
},

Même si vous ne connaissez pas encore JSON, il est écrit dans un format (un peu) lisible
pour l’homme. Vous définissez un type de ressource (dans cet exemple, Micro-
soft.Network/publicIPAddresses). Vous indiquez ensuite un nom, comme publicip,
et un emplacement, comme eastus. Enfin, vous définissez la méthode d’attribution
(dynamic dans cet exemple) et une étiquette de nom DNS, comme azuremol. Ces para-
mètres sont identiques à ceux que vous avez fournis lorsque vous avez utilisé le portail ou
l’interface de ligne de commande Azure. Et si vous utilisez PowerShell, devinez quoi? Les
mêmes paramètres vous seront demandés.
Avec un modèle, la différence est que vous n’avez pas à saisir toutes ces informations.
Elles sont déjà toutes incluses dans le code. « Super », vous dites-vous peut-être, « mais que
dois-je faire si je souhaite utiliser des noms différents à chaque fois? ». Comme avec un
script, vous pouvez les attribuer de façon dynamique à l’aide de paramètres et de
variables :
 Les paramètres désignent les valeurs que vous êtes invité à saisir. Ils sont souvent
utilisés pour les informations d’identification, le nom de la machine virtuelle et
l’étiquette de nom DNS.
 Les variables peuvent déjà posséder une valeur attribuée, mais elles sont égale-
ment ajustées chaque fois que vous déployez le modèle, comme la taille de la
machine virtuelle ou le nom du réseau virtuel.
86 CHAPITRE 6 Azure Resource Manager

Essayer maintenant
Pour voir un modèle Resource Manager complet, ouvrez le référentiel GitHub dans un navi-
gateur Web, à l’adresse http://mng.bz/8jr1. Vous devriez reconnaître toutes les res-
sources et valeurs différentes utilisées dans le modèle : il s’agit de la machine virtuelle
de base que vous avez créée au chapitre 2.

6.2.2 Création de plusieurs types de ressources


Lorsque vous établissez vos modèles, essayez de réfléchir à la façon dont vous devrez peut-
être développer vos applications à l’avenir. Il se peut que vous n’ayez besoin que d’une
seule machine au déploiement initial de votre application, mais que la demande augmen-
tant, vous soyez obligé de créer des instances supplémentaires.
Dans un déploiement de script classique, vous créez une boucle for ou while pour
créer plusieurs types de ressources. Cette fonction est intégrée dans Resource Manager!
Resource Manager propose plus de 50 types de fonctions, tout comme dans la plupart des
langages de script et de programmation. Les fonctions courantes Resource Manager
incluent length, equals, or et trim. Vous contrôlez le nombre d’instances à créer grâce à
la fonction copy.
Lorsque vous utilisez la fonction copy, Resource Manager crée le nombre de res-
sources que vous spécifiez. Chaque fois que Resource Manager exécute l’opération de
création, une valeur numérique est disponible pour que vous nommiez les ressources
dans un certain ordre. Vous accédez à cette valeur avec la fonction copyIndex(). Nous
allons reprendre l’exemple précédent pour créer une adresse IP publique, mais cette fois,
nous créerons deux adresses. Vous utilisez copy pour définir le nombre d’adresses que
vous souhaitez créer et copyIndex() pour nommer les adresses de façon séquentielle.

Listing 6.2 Création de plusieurs adresses IP publiques au moyen de la commande


copy
{
"apiVersion": "2017-04-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat('publicip', copyIndex())]",
"copy": {
"count": 2
}
"location": "eastus",
"properties": {
"publicIPAllocationMethod": "dynamic",
}
},

Vous utilisez également la fonction concat pour combiner le nom de l’adresse IP


publique et la valeur numérique de chaque instance que vous créez. Une fois ce modèle
déployé, vos deux adresses IP publiques seront intitulées publicip0 et publicip1. Même
s’il ne semble pas très descriptif, cet exemple de base démontre le concept de l’utilisation
d’une convention de numérotation à mesure que vous créez plusieurs ressources au
moyen de la fonction copy.
Modèles Azure Resource Manager 87

6.2.3 Outils pour créer vos propres modèles


Oui, je l’avoue. Même si les modèles Resource Manager sont ordonnés et font partie des
principales méthodes que je vous conseille d’utiliser pour concevoir et déployer des appli-
cations dans Azure, vous devez tout de même écrire les modèles. Différents outils vous
simplifient la tâche et des centaines d’exemples de modèles sont disponibles auprès de
Microsoft et de fournisseurs tiers. En réalité, l’une des meilleures façons d’apprendre à
créer et à utiliser les modèles consiste à examiner les modèles rapides proposés par Micro-
soft dans ses référentiels, à l’adresse https://github.com/ Azure/azure-quickstart-tem-
plates.
Si vous souhaitez retrousser vos manches et commencer à rédiger vos propres
modèles, je vous recommande deux outils. Le premier, Visual Studio Code, est un éditeur
multiplateforme gratuit en code source libre (https://code.visualstudio.com). Avec cer-
taines fonctions intégrées comme le contrôle de code source et l’intégration GitHub, des
extensions disponibles peuvent automatiquement concevoir les différentes sections, ou
fournisseurs, pour les ressources permettant de construire un modèle comme illustré à la
figure 6.8. Si vous téléchargez et installez VS Code, accédez à Affichage > Extensions, puis
recherchez Azure.

Figure 6.8 De nombreuses extensions sont disponibles dans Visual Studio Code en vue d’améliorer et de
simplifier la méthode de création et d’utilisation des modèles Azure Resource Manager.

Une conception plus graphique des modèles Azure Resource Manager implique d’utiliser
l’éditeur Visual Studio complet, comme illustré à la figure 6.9. Il existe des versions pour
Windows comme pour MacOS, mais vous avez besoin d’une licence distincte pour l’utili-
ser. Une édition communautaire est également disponible, mais faites attention si vous
créez des modèles au sein de votre entreprise. En effet, vous avez généralement besoin
d’une version sous licence, alors consultez vos experts en la matière, car Visual Studio est
destiné aux développeurs d’applications.
Vous pouvez, bien évidemment, utiliser un éditeur de texte de base. Si les modèles
Azure Resource Manager sont rédigés en JSON, c’est en partie parce que ce langage rend
inutile tout outil particulier. Le langage JSON implique une courbe d’apprentissage, c’est
pourquoi je vous recommande de découvrir les modèles rapides proposés dans le référen-
tiel Azure. Faites attention à l’indentation, aux virgules en fin de ligne, ainsi qu’à l’utilisa-
tion des parenthèses et des accolades!
88 CHAPITRE 6 Azure Resource Manager

Figure 6.9 Avec Visual Studio, vous pouvez créer graphiquement des modèles et explorer les
ressources JSON.

La vie sur Mars


Des outils tiers et d’autres techniques existent pour utiliser les modèles dans Azure.
Hashicorp fournit de nombreux outils et solutions de code source libre pour les services
infonuagiques, dont l’un est Terraform. Avec Terraform, vous définissez toutes les res-
sources que vous souhaitez générer de la même façon que vous créez un modèle Azure
Resource Manager en mode natif. En outre, vous pouvez définir des dépendances et uti-
liser des variables. La différence est que Terraform est, techniquement, un fournisseur
polyvalent. Les mêmes concepts et la même approche de modèle peuvent être utilisés
dans Azure, Google Cloud, AWS et vSphere, par exemple. Les fournisseurs que vous uti-
lisez pour chaque ressource sont simplement différents.
Cette approche implique-t-elle vraiment un modèle unique pour n’importe quel fournis-
seur? Non, pas du tout. Terraform est également une application qui analyse votre
modèle, puis communique avec le fournisseur de nuage pertinent, comme Azure. Vous ne
disposez d’aucune capacité de modification, et encore moins d’outils graphiques pour
construire votre modèle. Vous choisissez un éditeur et écrivez le modèle à la main. Encore
une fois, la meilleure façon d’apprendre à connaître Terraform consiste à parcourir la
documentation et les exemples de modèles connexes.
La raison pour laquelle j’en parle se rapporte à la notion de choix dans Azure. Si vous esti-
mez que les modèles Azure Resource Manager rédigés en JSON sont trop fastidieux, envi-
sagez une solution comme Terraform. N’abandonnez pas pour autant les déploiements
Resource Manager pilotés par des modèles. Pour obtenir ces déploiements reproduc-
tibles et cohérents à l’échelle, les modèles constituent la meilleure approche, alors tentez
de trouver celle qui convient dans votre cas.
Exercice : déploiement de ressources Azure à partir d’un modèle 89

6.2.4 Stockage et utilisation des modèles


Ainsi, vous aimez l’idée des modèles Azure Resource Manager et vous avez installé Visual
Studio ou Code pour écrire vos propres modèles. Comment les stockez-vous et les
déployez-vous? Dans l’exercice à la fin du chapitre, vous déployez un modèle à partir du
référentiel Azure sur GitHub. Comme il s’agit d’un référentiel public, peut-être n’avez-
vous pas envie que vos modèles d’application soient visibles par le monde entier.
Quelques principes fréquents permettent de conserver les modèles Resource Manager
en privé :
 Utiliser un référentiel privé ou un partage de fichiers réseau au sein de votre
entreprise.
 Utiliser Azure Storage pour stocker et sécuriser de façon centralisée les
modèles de déploiement.
Aucune méthode de stockage et de déploiement des modèles n’est bonne ni mauvaise.
Vous profitez de la flexibilité nécessaire pour utiliser les outils et les ressources déjà en
place. L’avantage lié à l’utilisation d’un référentiel est que vous bénéficiez généralement
d’une certaine forme de contrôle sur la version et pouvez ainsi assurer des déploiements
cohérents, en plus de consulter l’historique de vos modèles, si nécessaire. La seule
contrainte porte sur les informations d’identification qui doivent être appropriées pour
accéder à l’emplacement partagé lorsque vous déployez le modèle. Ce processus
d’authentification peut varier (nom d’utilisateur ou jeton d’accès dans l’URL vers un
modèle repris dans un référentiel ou jeton de signature d’accès partagé (SAS) si vous utili-
sez le service Azure Storage).
Les référentiels publics tels que GitHub représentent également une excellente
méthode d’apprentissage et de partage. Je vous conseille de conserver vos modèles de pro-
duction dans un emplacement privé. Mais si vous créez un modèle vierge pour un exer-
cice ou souhaitez tester de nouvelles fonctions, partagez-le sur GitHub afin d’en faire
profiter la communauté informatique et de peut-être aider d’autres personnes qui souhai-
teraient exécuter les mêmes déploiements. Et lorsque vous commencez à établir vos
propres modèles, veillez à ce que les modèles existent déjà afin de ne pas devoir repartir
de zéro à chaque fois!

6.3 Exercice : déploiement de ressources Azure à partir


d’un modèle
Toute cette théorie relative aux modèles et aux approches de déploiement est bien vaste,
mais vous allez bientôt (et heureusement!) constater les avantages et l’efficacité engen-
drés par l’utilisation de ces modèles :
1 Accédez aux exemples rapides Azure sur GitHub (https://github.com/Azure/
azure-quickstart-templates) et trouvez celui qui vous intéresse. Une simple
machine virtuelle Linux ou Windows constitue un excellent point de départ.
2 Des boutons permettant le déploiement direct dans Azure sont intégrés aux
exemples GitHub. Une fois que vous avez trouvé un modèle qui vous convient,
sélectionnez Déployer sur Azure, comme illustré à la figure 6.10, et respectez
les étapes du portail. La procédure est quasiment identique à celle de la créa-
tion d’une machine virtuelle, seules quelques invites supplémentaires sont
nécessaires pour configurer les paramètres requis. Toutes les autres ressources
sont créées pour vous.
3 L’étape finale visant à déployer votre modèle consiste à accepter le contrat de
licence affiché, puis à sélectionner Acheter. Vous créez des ressources Azure
lorsque vous déployez un modèle, donc le bouton Acheter signifie que vous
acceptez d’assumer les coûts de ces ressources Azure.
90 CHAPITRE 6 Azure Resource Manager

L’un des modèles de base, tels qu’une simple machine virtuelle Linux ou Win-
dows, coûte environ le même prix que toutes les autres machines virtuelles que
vous avez créées jusqu’ici. Assurez-vous de supprimer le groupe de ressources
une fois votre déploiement terminé, comme dans le cadre de n’importe quel
nettoyage après un exercice.

Figure 6.10 Chaque modèle Resource Manager du référentiel GitHub s’accompagne d’un bouton
Déployer sur Azure. Si vous sélectionnez ce bouton, le portail Azure se charge et le modèle est lui aussi
chargé. Vous êtes ensuite invité à saisir certains paramètres de base, alors que le reste du
déploiement est géré par le modèle.

Paramètres des modèles


Comme indiqué à la section 6.2.1, vous pouvez utiliser des paramètres et des variables
dans vos modèles. Rappel : les paramètres désignent des valeurs que vous êtes invité à
saisir alors que les variables sont des valeurs dynamiques qui peuvent être appliquées
dans un modèle. Les valeurs que vous êtes invité à saisir (paramètres) varient d’un
modèle à l’autre. Par conséquent, en fonction du modèle rapide que vous sélectionnez,
vous pouvez être invité à saisir une ou deux valeurs, voire sept ou huit.
Lorsque vous concevez vos modèles, essayez d’anticiper la façon dont d’autres utilisa-
teurs et vous voudrez peut-être réutiliser le modèle à mesure que vous déployez des appli-
cations. Vous pouvez fournir une valeur par défaut et limiter les valeurs autorisées. Faites
attention à ces valeurs par défaut et autorisées, vous risqueriez d’appliquer des
contraintes excessives aux utilisateurs et de les forcer à créer leurs propres modèles.
Dans la mesure du possible, essayez de créer des modèles de base réutilisables qui
assurent une certaine flexibilité.

4 Une fois que votre modèle a été déployé, revenez sur GitHub et examinez le
fichier azuredeploy.json. Ce dernier est le modèle Azure Resource Manager qui
a été utilisé pour créer et déployer l’exemple. Voyez si vous pouvez comprendre
les différents types de ressources et configurations qui sont appliqués. À mesure
que vous travaillez avec davantage de types de ressources et de modèles Azure,
le format JSON devient plus facile, c’est promis!
Haute disponibilité et redondance

J’ai perdu le compte du nombre de fois où j’ai été confronté à des problèmes informa-
tiques. J’ai eu une panne de disque dur sur un ordinateur portable la veille d’une
conférence, une alimentation électrique fumante sur un serveur de messagerie et une
défaillance d’interfaces réseau sur un routeur principal. Et mieux vaut ne pas me lan-
cer sur le sujet des mises à jour de systèmes d’exploitation, de pilotes ou de micropro-
grammes! Je suis sûr que tous ceux qui travaillent dans le domaine de l’informatique
aimeraient se confier sur des situations horribles auxquelles ils ont dû faire face : géné-
ralement des problèmes qui se sont produits au milieu de la nuit ou à un moment cri-
tique pour l’entreprise. Existe-t-il seulement une bonne panne arrivant au bon
moment?
En informatique, si vous anticipez les problèmes, vous apprenez à planifier et à
concevoir des applications qui en tiennent compte. Dans ce chapitre, vous apprendrez
à utiliser les fonctions de haute disponibilité et de redondance d’Azure pour réduire
les perturbations causées par les mises à jour de maintenance et les pannes. Ce chapitre
jette les bases des deux ou trois chapitres à venir, tandis que vous commencez à passer
d’une application qui s’exécute sur une application Web ou une machine virtuelle
unique, à une application capable d’évoluer et d’être distribuée à l’échelle mondiale.

7.1 Le besoin de redondance


Si vous voulez que les clients vous confient leur important commerce de pizza, ils
doivent pouvoir accéder aux applications que vous fournissez dès qu’ils en ont besoin.
La plupart des clients ne chercheront pas des « heures d’ouverture » sur un site Web,
surtout si vous travaillez dans un environnement international où les clients peuvent
venir du monde entier. Quand ils ont faim, ils veulent manger! La figure 7.1 illustre un
exemple basique d’application s’exécutant sur une seule machine virtuelle. Malheu-
reusement, cette application crée un point de défaillance unique. Si cette machine vir-
tuelle n’est pas disponible, l’application n’est pas non plus disponible. Le client en sera
mécontent et restera sur sa faim.

91
92 CHAPITRE 7 Haute disponibilité et redondance

à l’applicaon à l’applicaon

Machine Macchine
Machine
virtuelle v rtuellee
vi
virtuelle
unique uniq
que
unique

Figure 7.1 Si votre application s’exécute sur une


seule machine virtuelle, toute panne survenant sur
Réponse de Applicaon non celle-ci rend l’application inaccessible. Cela
l’applicaon accessible pourrait conduire vos clients à s’adresser ailleurs
retournée ou, au minimum, à être insatisfaits de votre service.
Lorsque vous conduisez une voiture, vous disposez normalement d’une roue de secours
en cas de crevaison. Si vous utilisez un ordinateur portable ou une tablette, il y a de fortes
probabilités que vous branchiez l’appareil à un chargeur au cas où la batterie s’épuiserait
en cours de session. À la maison ou dans votre appartement, avez-vous des ampoules de
rechange au cas où? Ou encore une lampe de poche ou des bougies en cas de panne de
courant?
La plupart des gens aiment avoir une certaine forme de redondance ou de plan de
secours, dans la vie quotidienne, mais aussi et surtout, en informatique. Si vous êtes paré
pour remplacer une roue ou une ampoule sur le champ, vous pouvez gérer les pannes et
les défaillances moyennant une interruption minimale. Si vous concevez et construisez vos
applications dans une optique de redondance, vous fournissez à vos clients un niveau
élevé de disponibilité qui réduit ou même dissimule les interruptions que l’application
rencontre.
Tous les centres de données Azure sont conçus pour une haute disponibilité. Unités
d’alimentation de secours, connexions réseau multiples ou encore baies de stockage avec
disques de rechange, sont quelques exemples, parmi d’autres, de concepts essentiels de
redondance qu’Azure fournit et gère pour vous. Toute la redondance fournie par Azure
pourrait s’avérer inutile si vous exécutez votre application sur une seule machine virtuelle.
Pour vous donner de la souplesse et du contrôle sur la façon de rendre votre application
hautement disponible, deux fonctions principales pour les charges de travail IaaS sont
disponibles :
 Groupe de disponibilité : : vous permet de regrouper logiquement les machines
virtuelles pour les distribuer dans un centre de données Azure unique et ainsi
minimiser les interruptions liées à des pannes ou des mises à jour de mainte-
nance.
 Zone de disponibilité : vous permet de distribuer des machines virtuelles sur des
segments physiquement isolés d’une région Azure pour optimiser davantage la
redondance de votre application. Les zones peuvent également fournir une
haute disponibilité aux ressources réseau telles que les adresses IP publiques et
les équilibreurs de charge.
Pour la plupart des déploiements de nouvelles applications dans Azure, je vous suggère de
prévoir d’utiliser des zones de disponibilité. Cette approche offre de la souplesse dans la
façon de distribuer votre application. De plus, elle fournit de la redondance aux res-
sources réseau qui occupent souvent une place centrale dans la façon dont les clients
accèdent finalement aux machines virtuelles sous-jacentes. Pour voir comment chacune
de ces approches fonctionne, abordons-les plus en détail.
Redondance des machines virtuelles avec des groupes de disponibilité 93

Comme une avant-première au cinéma


Azure fournit souvent l’accès aux fonctions et services en version d’évaluation. La tech-
nologie à l’œuvre dans ces programmes d’évaluation est conçue pour permettre aux
clients d’essayer les dernières fonctions et celles à venir afin d’améliorer la performance
et la convivialité.
Une assistance est généralement fournie sur les fonctions d’évaluation; cela ne signifie
pas pour autant que vous deviez traiter toutes vos charges de travail de production vous-
même. N’hésitez pas à utiliser les fonctions d’évaluation pour les charges de travail de
développement et de test ou les charges de travail de production de faible priorité. Sachez
cependant que vous pouvez obtenir de temps en temps des résultats inattendus.
Les programmes d’évaluation sont un excellent moyen de prendre connaissance des nou-
veautés d’Azure. Si vous utilisez une fonction d’évaluation, essayez de prendre le temps
de fournir des commentaires qui peuvent aider à perfectionner le produit avant sa com-
mercialisation définitive.
Entre le moment où j’ai écrit cet ouvrage et celui où vous le lirez, les limitations des zones
de disponibilité et la liste des ressources prises en charge peuvent avoir changé. Vous
pouvez consulter les dernières informations sur les régions et les services pris en charge
à l’adresse http://mng.bz/6k72. Même si une région est disponible en version d’évalua-
tion, les zones de disponibilité offrent de nombreux avantages qui fournissent de la redon-
dance à toute votre application, et pas seulement aux machines virtuelles. Les groupes
de disponibilité ne vont pas disparaître de sitôt, mais comme vous déployez des charges
de travail dans Azure, je vous suggère de privilégier les zones de disponibilité pour péren-
niser votre activité et protéger une plus grande part de votre environnement d’application.

7.2 Redondance des machines virtuelles avec des groupes


de disponibilité
Si vous voulez simplement assurer une redondance pour les machines virtuelles, les
groupes de disponibilité sont la solution. Ils ont fait leurs preuves, sont fiables et dispo-
nibles dans toutes les régions. Les groupes de disponibilité contiennent un groupe
logique de machine virtuelle qui indiquent à la plate-forme Azure que le matériel sous-
jacent sur lequel les machines virtuelles fonctionnent doit être soigneusement sélec-
tionné. Si vous créez deux machines virtuelles qui s’exécutent sur le même serveur phy-
sique et que le serveur connaît une défaillance, ces deux machines virtuelles tombent en
panne. Il est très improbable que ces deux machines virtuelles se trouvent sur le même
serveur, puisqu’un centre de données Azure contient potentiellement plusieurs dizaines
de milliers de serveurs physiques, voire plus, mais c’est possible! Il peut ne pas s’agir d’une
défaillance, mais d’une mise à jour de maintenance qui entraîne une courte indisponibi-
lité du serveur physique.
Que faire si vos machines virtuelles fonctionnent dans la même baie et sont associées
aux mêmes dispositifs de stockage et de mise en réseau? Vous êtes de nouveau confronté
au point de défaillance unique discuté au début du chapitre.
Les groupes de disponibilité permettent à la plate-forme Azure de créer vos machines
virtuelles dans des groupes logiques appelés domaines d’erreur et domaines de mise à jour. Ces
domaines logiques permettent à la plate-forme Azure de comprendre les limites phy-
siques des groupes matériels pour s’assurer que vos machines virtuelles sont réparties uni-
formément entre eux. Si un composant matériel a un problème, seules quelques
machines virtuelles de votre groupe de disponibilité sont concernées. Ou si des mises à
jour de maintenance doivent être appliquées au matériel physique, cela concerne seule-
ment quelques-unes de vos machines virtuelles. La relation du matériel physique avec les
domaines logiques d’erreur et de mise à jour à l’intérieur d’un groupe de disponibilité est
illustrée dans la figure 7.2.
94 CHAPITRE 7 Haute disponibilité et redondance

Groupe à haute disponibilité


Support de serveurs Support de serveurs Domaine de défaillance Domaine de défaillance

Serveur physique Serveur physique Mise à jour de Mise à jour de


domaine domaine
MV MV MV MV

Serveur physique Serveur physique Mise à jour de Mise à jour de


domaine domaine
MV MV MV MV

Figure 7.2 Dans un centre de données Azure, le matériel est logiquement divisé en domaines de mise à jour et
en domaines d’erreur. Ces domaines logiques permettent à la plate-forme Azure de comprendre comment
distribuer vos machines virtuelles sur le matériel sous-jacent pour répondre à vos exigences de redondance. Il
s’agit d’un exemple basique : un domaine de mise à jour contient probablement plusieurs serveurs physiques.

7.2.1 Domaines d’erreur


Un domaine d’erreur est un groupe logique de matériels dans un centre de données Azure.
Il contient du matériel qui partage l’équipement d’alimentation électrique ou de réseau.
Vous ne contrôlez pas ce que sont ces domaines d’erreur et il n’y a rien que vous puissiez
configurer au niveau de la machine virtuelle. La plate-forme Azure repère dans quels
domaines d’erreurs vos machines virtuelles sont placées et répartit les nouvelles machines
virtuelles entre ces domaines d’erreur afin que vous disposiez toujours de machines vir-
tuelles disponibles si l’alimentation ou un commutateur réseau tombe en panne.
Les machines virtuelles qui utilisent des disques gérés (rappelez-vous que, toutes vos
machines virtuelles devraient utiliser des disques gérés!) respectent également la distribu-
tion et les limites des domaines d’erreurs logiques. La plate-forme Azure attribue logique-
ment des grappes de stockage aux domaines d’erreur afin de s’assurer que lorsque vos
machines virtuelles sont réparties entre les groupes matériels, les disques gérés sont égale-
ment distribués sur le matériel de stockage. Il n’y aurait aucun intérêt à la redondance des
machines virtuelles sur le matériel serveur si tous les disques gérés pouvaient potentielle-
ment se retrouver dans une seule grappe de stockage!

7.2.2 Domaines de mise à jour


Les domaines d’erreur assurent une protection contre les pannes matérielles en créant un
groupe logique de matériel, tandis que les domaines de mises à jour offrent une protec-
tion dans le cadre de la maintenance de routine. Pour ce faire, un domaine d’erreur est
lui-même divisé logiquement en domaines de mise à jour. Encore une fois, il n’y a rien
que vous puissiez configurer ici. La plate-forme Azure se sert des domaines de mise à jour
pour comprendre comment elle doit répartir les machines virtuelles dans votre groupe de
disponibilité.
Les ingénieurs Azure effectuent (principalement de manière automatisée) la mainte-
nance et installent des mises à jour sur l’ensemble du matériel physique d’un domaine de
mise à jour, puis effectuent la même maintenance sur tout le matériel du domaine de
mise à jour suivant. Ce travail de maintenance est échelonné sur les domaines de mise à
jour, pour s’assurer que les machines virtuelles d’un groupe de disponibilité ne fonc-
tionnent pas toutes en même temps sur le matériel qui fait l’objet de la maintenance.
Redondance des machines virtuelles avec des groupes de disponibilité 95

Il n’y a pas de relation entre les domaines répartis dans plusieurs groupes de disponibi-
lité. Il est possible que les ressources physiques composant les domaines d’erreur et de
mise à jour dans un groupe de disponibilité ne soient pas les mêmes pour un deuxième
groupe de disponibilité. En d’autres termes, si vous créez plusieurs groupes de disponibi-
lité et répartissez vos machines virtuelles entre ces derniers, le domaine d’erreur 1, par
exemple, ne contient pas toujours le même matériel physique.

7.2.3 Distribution des machines virtuelles dans un groupe de disponibilité


Avançons pas à pas et voyons comment les machines virtuelles sont distribuées dans les
domaines logiques d’erreur et de mise à jour constituant un groupe de disponibilité. De
cette façon, vous avez plusieurs machines virtuelles qui peuvent faire fonctionner votre
pizzeria et les clients ne resteront pas sur leur faim!

Essayer maintenant
Pour voir les groupes de disponibilité à l’œuvre, procédez comme suit afin de déployer un
modèle Ressource Manager, comme le montre la figure 7.3.

1 Ouvrez un navigateur Web et accédez à un modèle Ressource Manager dans le


référentiel d’exemples GitHub à l’adresse http://mng.bz/o92f, puis sélection-
nez le bouton Deploy to Azure (Déployer dans Azure). Vous utilisez un modèle
dans cet exercice afin de pouvoir déployer rapidement des ordinateurs virtuels.
Cela vous permet d’explorer la façon dont ces machines virtuelles sont distri-
buées dans le groupe de disponibilité.
2 Le portail Azure s’ouvre et vous invite à saisir quelques paramètres. Choisissez
Create New Resource Group (Créer un groupe de ressources), puis indiquez
un nom, par exemple azuremolchapter7. Sélectionnez une région, puis saisis-
sez les données de votre clé SSH (vous pouvez l’obtenir dans ce Cloud Shell
avec la commande cat ~/.ssh/id_rsa.pub).
Le modèle crée un groupe de disponibilité contenant trois machines virtuelles. Ces
machines virtuelles sont distribuées dans les domaines logiques d’erreur et de mise
à jour. À partir du chapitre précédent sur Resource Manager, le modèle utilise la
fonction copyIndex() pour créer des machines virtuelles et des NIC multiples.
3 Pour reconnaître que vous souhaitez créer les ressources précisées dans le
modèle, cochez la case « I agree to the terms and conditions stated above »
(J’accepte les termes et conditions mentionnés ci-dessus), puis sélectionnez
Purchase (Achat).
La création des trois machines virtuelles dans le groupe de disponibilité prend quelques
minutes. Laissez le déploiement se poursuivre sur le portail pendant que vous lisez le reste
de cette section.
Lorsque le modèle commence à se déployer, un groupe de disponibilité est créé et le
nombre de domaines de mise à jour et d’erreur que vous avez demandés est assigné. Les
propriétés suivantes ont été définies dans l’exemple de modèle :
"properties": {
"platformFaultDomainCount": "2",
"platformUpdateDomainCount": "5",
"managed": "true"
}
96 CHAPITRE 7 Haute disponibilité et redondance

Figure 7.3 Le modèle dans GitHub pour cet exercice est chargé dans le portail Azure
et vous invite à saisir quelques paramètres. Indiquez un nom de groupe de ressources,
un emplacement et une clé SSH, puis déployez le modèle pour créer vos ressources.

Ces propriétés permettent de créer un groupe de disponibilité comportant deux


domaines d’erreur et cinq domaines de mise à jour (comme le montre la figure 7.4) et
indiquent que les machines virtuelles doivent utiliser des disques gérés; honorez donc la
distribution du disque en conséquence. La région que vous sélectionnez pour le groupe
de disponibilité détermine le nombre maximal de domaines d’erreur et de mise à jour.
Les régions prennent en charge deux ou trois domaines d’erreur, et jusqu’à 20 domaines
de mise à jour.
Au fur et à mesure que vous créez davantage de machines virtuelles dans un groupe de
disponibilité, vous devez déterminer le nombre de domaines de mise à jour à utiliser. Par
exemple, s’il y a cinq domaines de mise à jour, cela signifie que jusqu’à 20 % de vos
machines virtuelles peuvent être indisponibles pour cause de maintenance.
 Supposons que vous ayez dix machines virtuelles dans votre groupe de disponi-
bilité. Cela signifie que deux de ces machines virtuelles peuvent faire l’objet
d’une maintenance simultanément. Si vous voulez qu’une seule machine vir-
tuelle à la fois puisse faire l’objet d’une maintenance, vous devez créer dix
domaines de mise à jour.
Redondance des machines virtuelles avec des groupes de disponibilité 97

 Plus vous créez de domaines de mise à jour, plus la période pendant laquelle
votre application est potentiellement en état de maintenance est longue.

Groupe à haute disponibilité

Domaine de défaillance 0 Domaine de défaillance 1


Domaine de mise Domaine de mise
à jour 0 à jour 1 Figure 7.4 Le groupe de
disponibilité que votre exemple
Domaine de mise Domaine de mise de modèle déploie contient deux
à jour 2 à jour 3 domaines d’erreur et cinq
domaines de mise à jour. Le
système de numérotation
Domaine de mise démarre à zéro. Les domaines de
à jour 4
mise à jour sont créés de manière
séquentielle dans les domaines
d’erreur.

Lorsque la première machine virtuelle est créée, la plate-forme Azure cherche à voir où se
trouve la première position de déploiement disponible. Il s’agit du domaine d’erreur 0 et
du domaine de mise à jour 0, comme le montre la figure 7.5.

Groupe à haute disponibilité


Domaine de défaillance 0
Domaine de
mise à jour 0
Machine
virtuelle 0

Figure 7.5 La première machine virtuelle est


créée dans le domaine d’erreur 0 et le domaine
de mise à jour 0.

Lorsque la deuxième VM est créée, la plate-forme Azure cherche à voir où se trouve la


position de déploiement disponible suivante. Il s’agit maintenant du domaine d’erreur 1
et du domaine de mise à jour 1, comme le montre la figure 7.6.
Votre modèle crée trois machines virtuelles, alors que se passe-t-il ensuite selon vous?
La plate-forme Azure cherche de nouveau à voir où se trouve la position de déploiement
disponible suivante. Vous n’avez créé que deux domaines d’erreur, de sorte que la
machine virtuelle est créée de nouveau dans le domaine d’erreur 0. Mais la machine vir-
tuelle est créée dans un domaine de mise à jour différent de la première machine vir-
tuelle. La troisième machine virtuelle est créée dans le domaine de mise à jour 2, comme
le montre la figure 7.7.
Les machines virtuelles 0 et 2 se trouvant dans le même domaine d’erreur, une défaillance
matérielle pourrait donc potentiellement avoir un impact sur les deux machines. Mais la
98 CHAPITRE 7 Haute disponibilité et redondance

Groupe à haute disponibilité


Figure 7.6 Avec une seconde
Domaine de défaillance 0 Domaine de défaillance 1 machine virtuelle créée, les
machines virtuelles sont
Domaine de mise Domaine de mise maintenant réparties
à jour 0 à jour 1
uniformément entre les
Machine Machine domaines d’erreur et de mise à
virtuelle 0 virtuelle 1 jour. Cela est souvent considéré
comme la quantité de
redondance minimale pour
protéger vos applications.

Groupe à haute disponibilité


Domaine de défaillance 0 Domaine de défaillance 1
Domaine de mise Domaine de mise
à jour 0 à jour 1
Figure 7.7 La troisième machine
Machine Machine virtuelle est créée dans le
virtuelle 0 virtuelle 1
domaine d’erreur 0, mais dans le
domaine de mise à jour 2. Bien
que les machines virtuelles 0 et 2
Domaine de mise
à jour 2 partagent potentiellement le
même risque de défaillance
Machine matérielle, elles se trouvent dans
virtuelle 2
différents domaines de mise à jour
et ne feront donc pas l’objet de
maintenances régulières
simultanément.

maintenance de routine n’affecte qu’une seule de ces machines virtuelles à la fois, car
elles sont réparties dans plusieurs domaines de mise à jour. Si vous poursuivez et créez
d’autres machines virtuelles, la plate-forme Azure va continuer à les distribuer dans des
domaines d’erreur et de mise à jour différents. Lorsque les cinq domaines de mise à jour
sont utilisés, la sixième machine virtuelle est créée dans le domaine de mise à jour 0, et le
cycle se poursuit.

7.2.4 Affichage de la distribution des machines virtuelles dans un


groupe de disponibilité
Maintenant que vous comprenez en théorie la répartition des machines virtuelles dans les
domaines d’erreur et de mise à jour dans un groupe de disponibilité, vérifions ce qui est
arrivé au modèle Ressource Manager que vous avez déployé.
Redondance des machines virtuelles avec des groupes de disponibilité 99

Essayer maintenant
Pour voir comment vos machines virtuelles sont distribuées dans un groupe de disponibi-
lité, procédez comme suit.

1 Accédez à la barre de navigation sur le côté gauche du portail Azure et sélec-


tionnez Groupe de ressources. Choisissez le groupe de ressources que vous avez
créé pour votre modèle de déploiement, par exemple azuremolchapter7.
2 Sélectionnez votre groupe de disponibilité dans la liste des ressources, par
exemple azuremolavailabilityset.
3 La fenêtre Overview (Vue d’ensemble) contient une liste des machines vir-
tuelles et des domaines d’erreur et de mise à jour qui leurs sont associés,
comme le montre la figure 7.8.

Figure 7.8 Le groupe de disponibilité répertorie les machines virtuelles qu’il


contient et affiche pour chaque machine virtuelle le domaine d’erreur et le
domaine de mise à jour. Ce tableau vous permet de visualiser comment les
machines virtuelles sont réparties dans les domaines logiques.

Si vous êtes particulièrement attentif, vous avez peut-être remarqué que les machines vir-
tuelles ne correspondent pas parfaitement avec l’ordre des domaines d’erreur et de mise
à jour attendu. Y a-t-il un bogue? Probablement pas. Si vous examinez l’exemple présenté
dans la figure 7.8 et le comparez à ce que vous avez appris des concepts précédents, vous
vous attendez à ce que les machines virtuelles soient distribuées comme illustré dans le
tableau 7.1.

Table 7.1 Distribution logique des machines virtuelles à


laquelle vous vous attendez dans un groupe de disponibilité.
Les machines virtuelles sont créées séquentiellement et
distribuées entre les domaines selon un schéma clair.

Domaine de Mise à jour de


Nom
défaillance domaine

vm0 0 0

vm1 1 1

vm2 0 2

Alors, qu’est-ce qui a mal tourné? Rien. Repensez à la façon dont Resource Manager crée
des ressources à partir d’un modèle. La plate-forme Azure n’attend pas que la première
machine virtuelle soit créée avant que la seconde puisse l’être. Les trois machines vir-
100 CHAPITRE 7 Haute disponibilité et redondance

tuelles sont créées en même temps. Ainsi, il peut y avoir quelques fractions de seconde de
différence durant lesquelles une machine virtuelle est associée en premier à un groupe de
disponibilité. Peu importe l’ordre, puisque vous ne contrôlez pas ce que les domaines
d’erreur et de mise à jour sous-jacents représentent. Tout dépend de la plate-forme Azure.
Vous avez uniquement besoin de vérifier que vos machines virtuelles sont distribuées, pas
où elles le sont.

J’aime que tout soit en ordre.


Si la façon dont les machines virtuelles sont générées en série vous dérange et vous
devez distribuer les machines virtuelles de façon bien ordonnée, vous pouvez indiquer à
Resource Manager qu’il crée les machines virtuelles en série, et non en parallèle. Dans
ce mode, les machines virtuelles sont créées l’une après l’autre, le temps de déploie-
ment est donc plus long. Pour activer ce comportement en série, utilisez la commande
« mode »: « Serial » dans vos modèles dans le cadre de la fonction copyIndex().
Cette commande devrait distribuer les machines virtuelles de manière séquentielle et
logique.

7.3 Redondance des infrastructures avec zones de disponibilité


Les groupes de disponibilité fonctionnent uniquement avec les machines virtuelles. Cette
limitation rend difficiles la conception et la création d’applications susceptibles de rester
disponibles même quand une partie d’un centre de données rencontre un problème. Il
est possible qu’une panne majeure puisse causer des difficultés dans l’ensemble d’un
centre de données Azure. Qu’advient-il alors des ressources réseau telles que les adresses
IP publiques et les équilibreurs de charge? Comment les clients peuvent-ils commander
leur pizza si vos ressources réseau ne sont pas redondantes?
Les zones de disponibilité sont des centres de données physiquement distincts
exploitant des ressources essentielles indépendantes, telles que l’alimentation et la
connectivité réseau. Chaque région Azure prenant en charge des zones de disponibilité
en fournit trois. Vous créez vos ressources dans et parmi ces zones. La figure 7.9 illustre
la manière dont les ressources Azure peuvent être réparties entre les zones de disponi-
bilité.

Europe de l’Ouest
Adresse IP publique

Équilibreur de charge

Zones de disponibilité 1 Zones de disponibilité 2 Zones de disponibilité 3

Machine Machine Machine


virtuelle 1 virtuelle 2 virtuelle 3

Figure 7.9 Une région Azure peut contenir plusieurs zones de disponibilité : des centres de données
physiquement isolés qui utilisent une alimentation, un réseau et un système de refroidissement
indépendants. Les ressources réseau virtuelles Azure telles que les adresses IP publiques et les
équilibreurs de charge peuvent couvrir toutes les zones d’une région pour fournir une redondance qui va
au-delà des seules machines virtuelles.
Redondance des infrastructures avec zones de disponibilité 101

Grâce aux zones de disponibilité, vos applications peuvent tolérer que l’intégralité d’un
centre de données Azure soit déconnecté. Bien sûr, il faudrait un événement majeur pour
que cela arrive, mais ce n’est pas impossible!
Pour les déploiements d’applications d’envergure, vous pouvez créer plusieurs
machines virtuelles dans chaque zone de disponibilité. Les machines virtuelles multiples
ne suivent pas tout à fait la même distribution méthodique, entre les domaines de mise à
jour et d’erreur, dans une zone de disponibilité que dans les groupes de disponibilité.
Étant donné que les zones de disponibilité fournissent une redondance entre les zones, le
besoin de recourir à des domaines d’erreur et de mise à jour est réduit : vous n’avez plus à
vous soucier de la distribution individuelle du centre de données. Même si une mise à
jour de maintenance ou une panne d’équipement à l’intérieur d’une zone devait avoir un
impact sur toutes les machines virtuelles qui s’exécutent dans cette zone, n’oubliez pas
que les zones sont physiquement isolées les unes des autres : les machines virtuelles pré-
sentes dans une autre zone continueront à fonctionner.
Si vous êtes né sous une mauvaise étoile, est-ce que les machines virtuelles réparties
dans les différentes zones pourraient toutes subir des mises à jour de maintenance en
même temps? Oui, mais c’est improbable. Les zones d’une région ont des cycles de mise à
jour décalés, tout comme les domaines de mise à jour dans les groupes de disponibilité.
Les mises à jour sont effectuées dans une zone; une fois qu’elles sont terminées, les mises
à jour sont effectuées dans la zone suivante. Encore une fois, même si les machines vir-
tuelles d’une zone ne sont techniquement pas distribuées dans le même concept de
domaines de mise à jour, elles n’ont pas besoin de l’être. Les zones de disponibilité four-
nissent un niveau d’abstraction et de redondance plus élevé; vous devez donc examiner
votre application sur l’ensemble du déploiement, pas seulement là où se trouvent les
machines virtuelles d’une zone.
L’inclusion des ressources réseau virtuelles dans les zones de disponibilité est beau-
coup plus importante que ce qu’on pourrait penser à première vue. La figure 7.10 illustre
ce qui se passerait si le centre de données devenait indisponible pour les ressources
réseau, telles qu’une adresse IP publique ou un équilibreur de charge, qui s’exécutent
dans les zones de disponibilité.

Europe de l’Ouest

ZZones
one
ne
es de disponibilité
disponibil
biliillité
b
bi ité 1 Zones de disponibilité 2 Zones de disponibilité 3
Adresse
Adress
se IIP
Pppublique
ublique
Machine Machine
Équilibreur de charge
virtuelle 2 virtuelle 3

Machine
virtuelle
vir
rtu
tue
ueellllle
u le 1

Figure 7.10 Lorsque les ressources réseau sont associées à une seule zone ou à
un seul centre de données Azure, une panne dans cette installation rend l’intégralité
de l’application inaccessible au client. Peu importe si les autres machines virtuelles
continuent de fonctionner dans d’autres zones. Sans la connectivité réseau pour
distribuer le trafic de vos clients, l’application entière est indisponible.
102 CHAPITRE 7 Haute disponibilité et redondance

Je reviendrai plus en détail sur les équilibreurs de charge au chapitre suivant, mais
pour l’instant, tout ce que vous devez comprendre, c’est que l’équilibreur de charge
distribue le trafic sur toutes les machines virtuelles disponibles qui lui sont associées.
Les machines virtuelles signalent leur état d’intégrité à intervalles définis et l’équi-
libreur de charge arrête de distribuer le trafic à une machine virtuelle qui signale
qu’elle n’est pas disponible. Avec un équilibreur de charge qui fonctionne dans les
zones de disponibilité, une panne dans un centre de données Azure rend ces machines
virtuelles indisponibles; elles ne font donc plus partie de la rotation de l’équilibreur de
charge.
Une adresse IP publique qui couvre les zones de disponibilité fournit un point
d’entrée unique aux clients pour atteindre votre équilibreur de charge, puis être distri-
buée vers une machine virtuelle disponible. Dans un déploiement d’application où cette
adresse IP publique réside dans un seul centre de données Azure, si ce centre de données
rencontre un problème, aucun client ne peut accéder à l’adresse IP publique. Le client ne
peut plus utiliser votre application, même si des machines virtuelles sont disponibles pour
répondre aux demandes des clients.

Régions prises en charge pour les zones de disponibilité


Au moment où vous lisez cet ouvrage, certaines régions de zone de disponibilité peuvent
être en cours d’évaluation, de sorte que seul un nombre restreint de régions, de res-
sources et même de tailles de machines virtuelles peut être utilisable. Ces limites sont
susceptibles de varier au fil du temps : consultez http://mng.bz/6k72 pour obtenir les
informations les plus récentes concernant les régions et les ressources prises en charge.
Ce chapitre s’intéresse principalement aux machines virtuelles, aux adresses IP
publiques et aux équilibreurs de charge, mais vous devez vous attendre à ce que la liste
des ressources Azure prises en charge s’allonge. Par exemple, des VMSS, que nous abor-
derons au chapitre 9, peuvent également être créés dans les zones de disponibilité.
Pour la plupart des exemples présentés dans ce livre, vous pouvez sélectionner n’importe
quelle région de votre choix pour vos ressources. Pour ces exercices sur les zones de dis-
ponibilité, vous devez créer des ressources dans l’une des régions prises en charge. Uti-
lisez la région par défaut spécifiée dans l’exercice ou reportez-vous à la liste des régions
prises en charge et assurez-vous que vous utilisez l’une d’entre elles.

7.3.1 Création de ressources réseau dans une zone de disponibilité


Les adresses IP publiques et les équilibreurs de charges peuvent être créés à l’un des deux
niveaux disponibles : de base et standard. La principale différence réside dans le fait que le
niveau standard permet à la ressource réseau d’utiliser des zones de disponibilité. Par
défaut, un équilibreur de charge ou une adresse IP publique standard présente automati-
quement une redondance entre les zones. Aucune autre configuration n’est nécessaire.
La plate-forme Azure stocke de manière centralisée les métadonnées de la ressource dans
la région que vous indiquez et s’assure que la ressource continue à fonctionner si une
zone devient indisponible.
Pour le moment, ne vous préoccupez pas trop de ce qui se passe concernant l’équi-
libreur de charge et les ressources réseau. Rappelez-vous ce que j’ai évoqué au début : ces
deux ou trois prochains chapitres sont interdépendants. Au chapitre suivant, nous allons
nous intéresser aux équilibreurs de charge et tout cela devrait commencer à avoir plus de
sens.
Redondance des infrastructures avec zones de disponibilité 103

Essayer maintenant
Pour créer des ressources réseau redondantes dans les zones de disponibilité, procédez
comme suit.

1 Sélectionnez l’icône Cloud Shell en haut du tableau de bord du portail Azure.


Créez un groupe de ressources, par exemple azuremolchapter7az :
az group create --name azuremolchapter7az --location westeurope
2 Créez une adresse IP publique standard dans votre groupe de ressources. Par
défaut, une adresse IP publique de base serait créée et affectée uniquement à
une seule zone. Le paramètre --sku standard indique à Azure qu’il doit créer
une ressource redondante entre les zones :
az network public-ip create \
--resource-group azuremolchapter7az \
--name azpublicip \
--sku standard
3 Créez un équilibreur de charge qui couvre les zones de disponibilité. Là
encore, un équilibreur de charge de base serait créé par défaut et affecté à une
seule zone, ce qui ne correspond pas à la conception à haute disponibilité que
vous voulez pour vos applications. Indiquez une référence (SKU) de charge-
ment standard pour créer un équilibreur de charge redondant entre les zones,
comme suit :
az network lb create \
--resource-group azuremolchapter7az \
--name azloadbalancer \
--public-ip-address azpublicip \
--frontend-ip-name frontendpool \
--backend-pool-name backendpool \
--sku standard

7.3.2 Création de machines virtuelles dans une zone de disponibilité


Pour créer une machine virtuelle dans une zone de disponibilité, vous indiquez la zone
dans laquelle la machine virtuelle doit être exécutée. Dans l’idéal, pour déployer de nom-
breuses machines virtuelles, vous créez et utilisez un modèle. Le modèle définit et distri-
bue les zones pour chaque machines virtuelles. Au fur et à mesure que la demande des
clients pour votre pizzeria en ligne augmente, vous pouvez également mettre à jour le
modèle avec le nombre de machines virtuelles que vous voulez alors, puis redéployer le
modèle. Les nouvelles machines virtuelles sont distribuées automatiquement entre les
zones et il n’est pas nécessaire d’effectuer un suivi manuel des zones dans lesquelles les
machines virtuelles s’exécutent. Dans l’exercice pratique présenté à la fin du chapitre,
vous utiliserez un modèle pour créer et distribuer automatiquement plusieurs machines
virtuelles. Pour voir le processus logique afin de spécifier une zone pour une machine vir-
tuelle, nous allons créer une machine virtuelle et spécifier manuellement la zone.

Essayer maintenant
Pour créer une machine virtuelle dans une zone de disponibilité, procédez comme suit.
104 CHAPITRE 7 Haute disponibilité et redondance

1 Dans le portail Azure, sélectionnez l’icône Cloud Shell en haut du tableau de


bord.
2 Créez une machine virtuelle avec la commande az vm create que vous avez uti-
lisée dans les chapitres précédents. Utilisez le paramètre --zone pour spécifier
la zone 1, 2 ou 3 dans laquelle la machine virtuelle doit s’exécuter. Dans
l’exemple suivant, une machine virtuelle nommée zonedvm est créée dans la
zone 3 :
az vm create \
--resource-group azuremolchapter7az \
--name zonedvm \
--image ubuntults \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys \
--zone 3

La création de la machine virtuelle prend quelques minutes. Lorsque vous avez terminé,
la sortie de la commande indique la zone dans laquelle s’exécute la machine virtuelle.
Vous pouvez également afficher cette information avec la commande az vm show :
az vm show \
--resource-group azuremolchapter7az \
--name zonedvm \
--query zones

REMARQUE Les exemples présentés dans les exercices « Essayer


maintenant » sont simples, mais ils visent à vous montrer que les zones néces-
sitent peu de configuration. Vous n’avez pas intégré la machine virtuelle et
l’équilibreur de charge redondant entre les zones, mais au chapitre suivant,
vous allez construire un environnement d’application réparti entre les zones
de disponibilité et plus exploitable. L’objectif ici est de vous montrer que la
plate-forme Azure gère la redondance et la distribution des ressources, afin
que vous puissiez vous concentrer sur l’application proprement dite.

7.4 Exercice pratique : déploiement de machines


virtuelles hautement disponibles à partir d’un modèle
Cet exercice pratique combine et renforce ce que vous avez appris au chapitre précédent
sur Azure Resource Manager et les modèles, avec les zones de disponibilité. Prenez le
temps d’examiner le modèle de démarrage rapide donné en exemple dans cet exercice
pour voir comment vous pouvez utiliser la logique et les fonctions pour distribuer plu-
sieurs machines virtuelles entre les zones. Ne vous contentez pas de déployer le modèle et
de passer à la suite : regardez comment le modèle s’appuie sur les fonctions introduites au
chapitre précédent!

Qu’est-ce qu’un quota?


Dans Azure, les quotas par défaut de votre abonnement vous empêchent de déployer acci-
dentellement des ressources et de les oublier, ce qui vous coûterait beaucoup d’argent.
Ces quotas varient généralement selon les types de ressource et d’abonnement et sont
appliqués au niveau de la région. La liste complète des quotas peut être consultée à
l’adresse http://mng.bz/ddcx.
Lorsque vous commencerez à créer plusieurs machines virtuelles dans les prochains cha-
pitres, vous pourriez rencontrer des problèmes de quotas. Vous pouvez également ren-
contrer des problèmes de quotas si vous n’avez pas supprimé les ressources
Exercice pratique : déploiement de machines virtuelles hautement disponibles à partir d’un 105

utilisées dans les chapitres et les exercices précédents. Les quotas constituent un sys-
tème efficace qui vous tient informé de l’usage que vous faites des ressources. Il est pos-
sible que les messages d’erreur ne soient pas clairs, mais si vous voyez un message
d’erreur du type :
Operation results in exceeding quota limits of Core.
Maximum allowed: 4, Current in use: 4, Additional requested: 2. (
(L’opération entraîne le dépassement des limites de quota du
cœur. Maximum autorisé : 4, Actuellement utilisé : 4,
Supplément demandé : 2.)

Il est alors souhaitable de demander une augmentation de vos quotas. Il n’y a rien de
compliqué et ce n’est pas exclusif à Azure. Vous pouvez afficher votre quota actuel pour
une région donnée avec la commande suivante :
az vm list-usage --location eastus

Si cet exercice vous pose problème, supprimez les deux premiers groupes de ressources
créés dans ce chapitre, par exemple azuremolchapter7 et azuremolchapter7az. Si vos
quotas par défaut sont faibles, les quatre machines virtuelles de ces groupes de res-
sources peuvent vous empêcher d’aller jusqu’au bout de cet exercice.
Pour demander une augmentation de vos quotas pour une région, procédez comme décrit
dans la page http://mng.bz/Xq2f.

3 Examinons et déployons un modèle incluant plusieurs machines virtuelles dans


les zones de disponibilité. Dans un navigateur Web, ouvrez le fichier JSON à
l’adresse http://mng.bz/8Oys et recherchez le texte suivant :
Microsoft.Compute/virtualMachines
La section des machines virtuelles ressemble à ce que vous avez utilisé au cha-
pitre précédent, mais notez la valeur de propriété de zones. Cette section com-
bine plusieurs fonctions différentes, disponibles dans les modèles, pour
sélectionner la zone 1, 2 ou 3, pendant la création de la machine virtuelle. De
cette façon, vous n’avez pas besoin de suivre manuellement dans quelle zone
s’exécute chaque machine virtuelle ni la manière dont vous devez ensuite
déployer des machines virtuelles supplémentaires.
4 Dans votre navigateur Web, recherchez chacun des éléments suivants pour affi-
cher les sections concernant l’adresse IP publique et l’équilibreur de charge :
Microsoft.Network/publicIPAddresses
Microsoft.Network/loadBalancers
Les deux ressources utilisent la référence (SKU) standard, qui fournit par
défaut la redondance de zone. Aucune configuration supplémentaire n’est
nécessaire pour accomplir cette tâche!
5 Voyons ce qui se passe! Dans votre navigateur Web, ouvrez le modèle de démar-
rage rapide disponible à l’adresse http://mng.bz/O69a, puis sélectionnez le
bouton Deploy to Azure (Déployer dans Azure).
6 Créez ou sélectionnez un groupe de ressources, puis indiquez un nom d’utilisa-
teur et un mot de passe pour les machines virtuelles. Saisissez un nom DNS
unique, par exemple azuremol.
7 Choisissez de créer des machines virtuelles Windows ou Linux. La création de
machines virtuelles Windows prend un peu plus de temps. Indiquez ensuite le
nombre de machines virtuelles à créer, par exemple 3.
8 Cochez la case pour accepter les conditions générales du déploiement du
modèle, puis sélectionnez Purchase (Achat), comme le montre la figure 7.11.
106 CHAPITRE 7 Haute disponibilité et redondance

Figure 7.11 Pour déployer le modèle de zone de disponibilité dans le portail Azure, indiquez un
groupe de ressources, un nom d’utilisateur et un mot de passe, puis le type de système
d’exploitation et le nombre de machines virtuelles que vous souhaitez créer. Le modèle utilise des
boucles, copyIndex(), dependsOn, des variables et des paramètres comme nous l’avons vu au
chapitre précédent concernant Resource Manager.
Exercice pratique : déploiement de machines virtuelles hautement disponibles à partir d’un 107

Une fois les machines virtuelles créées, utilisez le portail Azure ou la commande az vm
show pour voir comment les machines virtuelles ont été distribuées entre les zones. Si vous
êtes curieux de savoir ce que le reste du modèle fait avec les ressources de réseau, le pro-
chain chapitre vous permettra de découvrir les équilibreurs de charge.

Nettoyage de l’allée 3
Vous rappelez-vous quand, au début du livre, je vous ai dit de vous assurer de tout net-
toyer après votre passage pour minimiser l’impact sur vos crédits Azure gratuits? Je vous
conseille vivement de supprimer les groupes de ressources que vous avez créés au cours
de ce chapitre. Dans les deux prochains chapitres, vous continuerez à créer de multiples
machines virtuelles et instances d’application Web, alors assurez-vous de garder les
coûts et les quotas sous contrôle.
Chaque fois que vous vous connectez au portail Azure, vous devriez recevoir une notifica-
tion contextuelle vous informant sur l’état de vos crédits Azure. Si vous voyez que votre
crédit disponible est sérieusement amputé de jour en jour, cherchez les groupes de res-
sources que vous avez peut-être oublié de supprimer!
Applications d’équilibrage
de charge

Une composante essentielle des applications hautement disponibles est la méthode uti-
lisée pour distribuer le trafic entre toutes vos machines virtuelles. Dans le chapitre pré-
cédent, vous avez découvert ce qui différencie les groupes de haute disponibilité des
zones de disponibilité et vous avez appris à créer plusieurs machines virtuelles dans des
centres de données ou des régions Azure pour fournir une redondance d’application.
Même si toutes ces machines virtuelles sont hautement disponibles et distribuées, cela
ne sert à rien si une seule de ces machines reçoit tout le trafic des clients.
Les équilibreurs de charge sont des ressources réseau qui reçoivent le trafic d’applica-
tion entrant provenant de vos clients, examinent le trafic pour appliquer des filtres et
des règles d’équilibrage de charge, puis distribuent les requêtes sur un lot de machines
virtuelles exécutant votre application. Dans Azure, différentes méthodes sont à votre
disposition pour équilibrer la charge du trafic, par exemple si vous devez effectuer un
déchargement SSL sur des applications volumineuses qui utilisent le trafic réseau
crypté. Dans ce chapitre, vous découvrirez les différents composants des équilibreurs
de charge et vous apprendrez à configurer des règles et des filtres de trafic ainsi qu’à
distribuer le trafic vers des machines virtuelles. Vous utiliserez les composants à haute
disponibilité étudiés dans le chapitre précédent, et vous vous préparez pour le chapitre
suivant, qui explique comment faire évoluer les ressources.

8.1 Composants de l’équilibreur de charge Azure


Les équilibreurs de charge disponibles dans Azure peuvent fonctionner à deux niveaux
différents : la couche 4, où seul le trafic réseau est examiné et distribué (il s’agit en fait
de la couche transport), et la couche 7, où les données d’application du trafic réseau
sont connues, permettant ainsi de déterminer la distribution des données. Ces deux
niveaux des équilibreurs de charge fonctionnent de la même façon, comme le montre
la figure 8.1.
108
Composants de l’équilibreur de charge Azure 109

Internet

Équilibreur de charge

Adresse IP publique
Lot IP frontal

Sonde de santé
Sonde de parcours pour vérifier health.html
on sur les machines virtuelles d’arrière-plan
Règles d’équilibreur de charge
Autoriser le port TCP 80 entrant->
port TCP 80 sur le lot dorsal

Lot IP dorsal
NIC NIC NIC
virtuel virtuel virtuel

MV MV MV

Figure 8.1 Le trafic provenant d’Internet pénètre dans l’équilibreur de charge via une adresse IP
publique qui est associée à un lot IP frontal. Le trafic est traité par des règles d’équilibrage de
charge qui déterminent comment et où il doit être transmis. Les sondes d’intégrité associées aux
règles garantissent que le trafic est distribué uniquement sur des nœuds sains. Un lot dorsal de
cartes réseau virtuelles connectées aux machines virtuelles reçoit ensuite le trafic distribué par
les règles d’équilibrage de charge.

Les principaux composants d’un équilibreur de charge sont les suivants :


 Lot IP frontal : point d’entrée dans l’équilibreur de charge. Pour permettre
l’accès à partir d’Internet, une adresse IP publique peut être associée au lot IP
frontal. Il est possible d’associer des adresses IP privées pour les équilibreurs de
charge internes.
 Sondes d’intégrités : surveillent l’état des machines virtuelles associées. Pour garantir
que le trafic est distribué uniquement sur des machines virtuelles saines et réactives,
des contrôles sont réalisés de façon régulière pour vérifier qu’une machine vir-
tuelle répond correctement au trafic.
 Règles d’équilibrage de charge : distribuent le trafic vers les machines virtuelles. Chaque
paquet entrant est comparé aux règles, qui définissent les protocoles et ports
entrants, puis distribué sur un ensemble de machine virtuelles associées. Si aucune
règle ne correspond au trafic entrant, le trafic est refusé.
 Règles de traduction d’adresse réseau (NAT) : permettent d’acheminer le trafic directe-
ment vers des machines virtuelles spécifiques. Par exemple, si vous souhaitez four-
nir un accès distant par SSH ou RDP, vous pouvez définir des règles NAT pour
transférer le trafic d’un port externe vers une seule machine virtuelle.
 Lot IP dorsal : emplacement où les machines virtuelles exécutant votre applica-
tion sont associées. Les règles d’équilibrage de charge sont associées aux lots
dorsaux. Vous pouvez créer différents lots dorsaux pour différentes parties de
vos applications.
110 CHAPITRE 8 Applications d’équilibrage de charge

Application Gateway : équilibrage de charge avancé


Les équilibreurs de charge Azure peuvent fonctionner au niveau de la couche réseau ou
de la couche application. Ce chapitre se concentre sur l’équilibreur de charge standard
Azure, qui fonctionne au niveau de la couche réseau (couche 4 ou protocole de transport).
Au niveau de cette couche, le trafic est examiné et distribué, mais l’équilibreur de charge
ne dispose d’aucun contexte sur le trafic ou les applications que vous exécutez.
Azure Application Gateway est un équilibreur de charge qui fonctionne au niveau de la
couche application (couche 7). Application Gateway obtient des informations sur l’appli-
cation qui s’exécute sur la machine virtuelle et peut utiliser des méthodes plus perfection-
nées pour gérer les flux de trafic. L’un des principaux avantages d’Application Gateway
est la possibilité de gérer le trafic Web HTTPS chiffré.
Lorsque vous équilibrez la charge de sites Web avec des certificats SSL, vous pouvez
décharger le processus qui vérifie et déchiffre le trafic en provenance des serveurs Web.
Sur les sites Web connaissant un trafic SSL important, le processus permettant de vérifier
et déchiffrer le trafic peut consommer une grande partie du temps de calcul sur les
machines virtuelles ou les applications Web. Application Gateway peut vérifier et déchif-
frer le trafic, transmettre la requête Web aux serveurs Web, puis rechiffrer le trafic reçu
des serveurs Web et le renvoyer au client.
Application Gateway offre d’autres fonctions d’équilibrage de charge plus avancées,
comme la possibilité de distribuer le trafic sur n’importe quel point de terminaison IP plu-
tôt que seulement sur une machine virtuelle Azure. Ces règles de distribution avancées
peuvent vous être utiles lorsque vous créez des applications qui n’utilisent pas que des
machines virtuelles. Les mêmes concepts clés que ceux qui régissent un équilibreur de
charge standard s’appliquent, et c’est ce que nous allons voir dans ce chapitre pour vous
aider à comprendre comment tout cela fonctionne dans Azure.

8.1.1 Création d’un lot IP frontal


Dans les chapitres précédents, vous avez créé des machines virtuelles auxquelles une
adresse IP avait été directement affectée. Vous avez utilisé cette adresse IP publique pour
accéder ensuite à la machine virtuelle avec une connexion à distance telle que SSH ou
RDP, ou utilisé un navigateur Web pour accéder à un site Web exécuté sur la machine vir-
tuelle. Lorsque vous utilisez un équilibreur de charge, vous ne vous connectez plus direc-
tement aux machines virtuelles. Au lieu de cela, pour autoriser le trafic à atteindre votre
équilibreur de charge et à être distribué sur vos machines virtuelles, une ou plusieurs
adresses IP doivent être affectées à l’interface externe d’un équilibreur de charge.
Les équilibreurs de charge peuvent fonctionner dans deux modes différents :
 1531Équilibreur de charge Internet : a une ou plusieurs adresses IP publiques
connectées au lot IP frontal. Un équilibreur de charge Internet reçoit directe-
ment le trafic provenant d’Internet et le distribue vers les machines virtuelles
d’arrière-plan. Un exemple courant de ce cas de figure est celui des serveurs
Web frontaux auxquels les clients accèdent directement sur Internet.
 Équilibreur de charge Interne : équilibreur ayant une ou plusieurs adresses IP pri-
vées connectées au lot IP frontal. Un équilibreur de charge interne fonctionne
dans un réseau virtuel Azure, par exemple des machines virtuelles de base de
données en arrière-plan. En général, vous n’exposez pas les bases de données
en arrière-plan ni les couches application au monde extérieur. Au lieu de cela,
des serveurs Web frontaux se connectent à un équilibreur de charge interne,
lequel distribue le trafic sans aucun accès public direct. La figure 8.2 montre
comment un équilibreur de charge interne peut distribuer le trafic sur les
Composants de l’équilibreur de charge Azure 111

machines virtuelles d’arrière-plan qui se trouvent derrière un équilibreur de


charge public et les machines virtuelles Web frontales.

Machines Machines
virtuelles virtuelles
d’arrière-plan
frontales

Équilibreur Machines Équilibrage Machines


Internet de charge virtuelles de charge virtuelles
frontales d’arrière-plan
Internet interne
Machines Machines
virtuelles virtuelles
frontales d’arrière-plan

Figure 8.2 Un équilibreur de charge Internet peut être utilisé pour distribuer le trafic vers les
machines virtuelles frontales exécutant votre site Web, qui se connectent ensuite à un équilibreur
de charge interne pour distribuer le trafic vers des machines virtuelles, à un niveau base de données.
L’équilibreur de charge interne n’est pas public et n’est accessible qu’aux machines virtuelles
frontales connectées au réseau virtuel Azure.

Le mode dans lequel fonctionne votre équilibreur de charge n’a aucune incidence sur le
comportement du lot IP frontal. Vous affectez une ou plusieurs adresses IP qui sont utili-
sées en cas de demande d’accès à l’équilibreur de charge. Les adresses IPv4 et IPv6
peuvent être configurées pour le lot IP frontal. Cela vous permet de configurer des com-
munications IPv6 de bout en bout entre les clients et vos machines virtuelles lorsque le tra-
fic entre et sort de l’équilibreur de charge.

Essayer maintenant
Pour comprendre comment les composants de l’équilibreur de charge fonctionnent
ensemble, procédez comme suit pour créer un équilibreur de charge et un lot IP frontal.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Créez un groupe de ressources avec la commande az group create. Indiquez
un nom de groupe de ressources, par exemple azuremolchapter8, et un
emplacement :
az group create --name azuremolchapter8 --location westeurope
Si vous continuez à vous appuyer sur le chapitre précédent et souhaitez utiliser
des zones de visibilité, veillez à sélectionner la région appropriée pour vous
assurer que la prise en charge de la zone de disponibilité est disponible.
3 Créez une adresse IP publique avec la commande az network public-ip
create. Dans le chapitre 7, vous avez appris que les zones de disponibilité
offrent une redondance aux ressources réseau. Je vous propose donc de créer
une adresse IP publique standard redondante entre les zones. Indiquez un
nom, par exemple publicip :
az network public-ip create \
--resource-group azuremolchapter8 \
112 CHAPITRE 8 Applications d’équilibrage de charge

--name publicip \
--sku standard
Pour créer une adresse IP publique IPv6, vous pouvez ajouter --version IPv6
à la commande précédente. Pour ces exercices, vous pouvez utiliser des
adresses IPv4.
4 Créez l’équilibreur de charge et attribuez l’adresse IP publique au lot IP fron-
tal. Pour ajouter l’adresse IP publique, indiquez le paramètre --public-ip-
address. Si vous souhaitiez créer un équilibreur de charge interne, utilisez plu-
tôt le paramètre --private-ip-address. Comme avec l’adresse IP publique,
créez un équilibreur de charge standard, redondant entre les zones, qui fonc-
tionne dans les zones de disponibilité :
az network lb create \
--resource-group azuremolchapter8 \
--name loadbalancer \
--public-ip-address publicip \
--frontend-ip-name frontendpool \
--backend-pool-name backendpool \
--sku standard
Nous verrons plus en détail ce qu’est le lot dorsal dans quelques.

8.1.2 Création et configuration de sondes d’intégrité


Si l’une des machines virtuelles qui exécutent votre application rencontre un problème,
pensez-vous que l’équilibreur de charge devrait continuer à distribuer le trafic vers cette
machine virtuelle? Un client qui tente d’accéder à votre pizzeria en ligne pourrait alors
être redirigé vers cette machine virtuelle, ce qui l’empêcherait de commander quoi que
ce soit! Un équilibreur de charge surveille l’état des machines virtuelles et peut supprimer
celles qui rencontrent des problèmes. L’équilibreur de charge continue à surveiller l’inté-
grité, et il ajoute de nouveau la machine virtuelle au lot à des fins de distribution du trafic
lorsqu’il est démontré que celle-ci répond de nouveau correctement.
Une sonde d’intégrité peut fonctionner dans deux modes différents :
 Basé sur les ports : l’équilibreur de charge recherche une réponse de la machine
virtuelle sur un port et un protocole spécifiques, par exemple le port TCP 80.
Tant que la machine virtuelle répond à la sonde d’intégrité sur le port TCP 80,
elle reste dans la distribution du trafic de l’équilibreur de charge. Dans le cas
contraire, la machine virtuelle est supprimée de la distribution du trafic de
l’équilibreur de charge, comme le montre la figure 8.3. Ce mode ne garantit
pas que la machine virtuelle fournit le trafic comme attendu, mais uniquement
que le service de connectivité réseau et de destination renvoie une réponse.
 Basé sur les chemins d’accès HTTP : une page personnalisée, par exemple
health.html, est écrite et placée sur chaque machine virtuelle. Ce contrôle
d’intégrité personnalisé peut être utilisé pour vérifier l’accès à un magasin
d’images ou une connexion de base de données. Dans ce mode, la machine vir-
tuelle reste dans la distribution du trafic de l’équilibreur de charge uniquement
si la page de contrôle de l’intégrité renvoie une réponse HTTP code 200,
comme le montre la figure 8.4. Avec une sonde d’intégrité basée sur les ports,
le serveur Web réel peut s’exécuter mais n’a pas de connexion de base de don-
nées. Avec une page de contrôle d’intégrité personnalisée, l’équilibreur de
charge peut vérifier que la machine virtuelle est en mesure de fournir un trafic
réel au client.
Composants de l’équilibreur de charge Azure 113

Vérifie la réponse
Équilibreur de sur le port TCP 80
charge
Internet MV
Sonde de santé
Supprimé de la distribuon
de l’équilibreur de charge si
aucune réponse

Figure 8.3 Une sonde d’intégrité d’équilibreur de charge basée sur les ports recherche une réponse
de la machine virtuelle sur un port et un protocole définis. Si la réponse de la machine virtuelle n’est
pas conforme à un seuil donné, la machine virtuelle est supprimée de la distribution du trafic de
l’équilibreur de charge. Lorsque la machine virtuelle commence de nouveau à répondre
correctement, la sonde d’intégrité le détecte et ajoute de nouveau la machine virtuelle à la
distribution du trafic de l’équilibreur de charge.

Vérifie la réponse du code MV


Équilibreur de HTTP 200 (OK) de Health.html
charge Serveur Web
Internet
Sonde de santé
health.html
Supprimé de la distribuon
de l’équilibreur de charge si
HTTP 200 (OK) n’est pas
retourné
Figure 8.4 Une machine virtuelle qui exécute un serveur Web et dispose d’une page
health.html personnalisée reste dans la distribution du trafic de l’équilibreur de charge, à
condition que la sonde d’intégrité reçoive une réponse HTTP code 200 (OK). Si le processus
du serveur Web rencontre un problème et ne peut pas renvoyer les pages demandées, elles
sont supprimées de la distribution du trafic de l’équilibreur de charge. Nous obtenons ainsi
un contrôle plus approfondi de l’état du serveur Web qu’avec les sondes d’intégrité basées
sur les ports.
La création de la page de contrôle d’intégrité demande un surcroît d’efforts, mais cela en
vaut la peine, car l’expérience des clients en est améliorée. La page de contrôle d’intégrité
ne doit pas nécessairement être complexe. Il peut s’agir d’une page HTML de base per-
mettant de vérifier que le serveur Web lui-même peut fournir des pages. Sans la page de
contrôle d’intégrité, si le processus du serveur Web rencontrait un problème, la machine
virtuelle serait toujours disponible sur le port TCP 80, de sorte que la sonde d’intégrité
basée sur les ports croirait que la machine virtuelle est saine. Une sonde d’intégrité basée
sur les chemins d’accès HTTP requiert que le serveur Web renvoie correctement une
réponse HTTP. Si le processus du serveur Web se bloque ou échoue, aucune réponse
HTTP n’est envoyée, de sorte que la machine virtuelle est supprimée de la distribution du
trafic de l’équilibreur de charge.
Deux paramètres sont également à votre disposition pour configurer la fréquence à
laquelle la sonde d’intégrité contrôle la machine, ainsi que la réponse attendue :
 Interval(Intervalle) : définit la fréquence à laquelle la sonde d’intégrité
contrôle l’état de la machine virtuelle. Par défaut, la sonde d’intégrité contrôle
l’état toutes les 15 secondes.
 Threshold (Seuil) : définit le nombre d’échecs de réponse consécutifs que la
sonde d’intégrité reçoit avant que la machine virtuelle ne soit supprimée de la
distribution du trafic de l’équilibreur de charge. Par défaut, la sonde d’intégrité
tolère deux échecs consécutifs avant que la machine virtuelle ne soit supprimée
de la distribution du trafic de l’équilibreur de charge.
114 CHAPITRE 8 Applications d’équilibrage de charge

Essayer maintenant
Pour créer une sonde d’intégrité pour votre équilibreur de charge, comme vous venez de
le voir dans la figure 8.4, procédez comme suit.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Indiquez le nom de la sonde d’intégrité, par exemple healthprobe. Pour confi-
gurer la sonde d’intégrité pour un serveur Web, indiquez le port 80 pour
HTTP, puis définissez une page de contrôle d’intégrité personnalisée nommée
health.html. Plus tard dans ce chapitre, vous créerez cette page de contrôle
d’intégrité sur vos machines virtuelles. Pour montrer comment configurer les
valeurs d’intervalle et de seuil de la sonde d’intégrité, définissez un intervalle
de 10 secondes et un seuil de trois échecs consécutifs :
az network lb probe create \
--resource-group azuremolchapter8 \
--lb-name loadbalancer \
--name healthprobe \
--protocol http \
--port 80 \
--path health.html \
--interval 10 \
--threshold 3

Une fois que la sonde d’intégrité est créée, comment faites-vous pour contrôler l’état de
vos machines virtuelles? Les sondes d’intégrité sont associées à des règles d’équilibrage de
charge. La même sonde d’intégrité peut être utilisée avec plusieurs règles d’équilibrage
de charge différentes. Vous souvenez-vous du chapitre 5, dans lequel vous avez créé des
groupes de sécurité réseau (NSG, Network Security Group) et des règles? Ces groupes de
sécurité réseau peuvent être associés à plusieurs machines virtuelles ou à plusieurs sous-
réseaux virtuels différents. Une relation un-à-plusieurs similaire s’applique aux sondes
d’intégrité. Voyons maintenant comment faire fonctionner votre sonde d’intégrité et
créer des règles d’équilibrage de charge.

8.1.3 Définition de la distribution du trafic avec des règles d’équilibrage de charge


Lorsque le trafic est dirigé via l’équilibreur de charge vers les machines virtuelles dorsales,
vous pouvez définir les conditions à satisfaire pour que l’utilisateur soit dirigé vers la
même machine virtuelle. Vous souhaiterez peut-être que l’utilisateur conserve une
connexion à la même machine virtuelle pendant la durée d’une session unique ou qu’il
puisse revenir et conserver son affinité de machine virtuelle en fonction de l’adresse IP
source. La figure 8.5 illustre un exemple du mode d’affinité de session par défaut.
En mode d’affinité de session, le flux du trafic est traité par 5 hachages utilisant
l’adresse IP source, le port source, l’adresse IP de destination, le port de destination et le
type de protocole. Fondamentalement, pour chaque requête envoyée par un utilisateur à
votre serveur Web sur le port TCP 80, cet utilisateur est dirigé vers la même machine vir-
tuelle dorsale pendant toute la durée de cette session.
Composants de l’équilibreur de charge Azure 115

Équilibreur de charge

Lot dorsal

Machine
Règle d’équilibreur de charge
Session 1 virtuelle 1
Mode d’affinité de session
(par défaut)
Session 1 5 hachages :
• IP source Machine
Internet Session 2 • Port source virtuelle 2
• IP de desnaon
• Port de desnaon
• Type de protocole
Session 2 Machine
virtuelle 3

Figure 8.5 Avec le mode d’affinité de session, l’utilisateur se connecte à la même machine
virtuelle dorsale uniquement pendant la durée de sa session.
Que se passe-t-il si le client ferme sa session de navigateur? La prochaine fois qu’il se
connectera, une nouvelle session sera démarrée. Étant donné que l’équilibreur de charge
distribue le trafic entre toutes les machines virtuelles saines dans le lot IP dorsal, il est pos-
sible que l’utilisateur se connecte de nouveau à la même machine virtuelle; mais plus le lot
IP dorsal contient de machines virtuelles, plus l’utilisateur a de chance de se connecter à
une autre machine virtuelle.
En tant que propriétaire et développeur de l’application, il peut y avoir des cas de figure
où vous souhaitez que l’utilisateur se connecte à la même machine virtuelle que la fois
précédente quand il démarre une autre session. Par exemple, si votre application gère des
transferts de fichiers ou utilise UDP plutôt que TCP, vous souhaiterez probablement que
la même machine virtuelle continue à traiter ses requêtes. Dans ces cas, vous pouvez confi-
gurer les règles d’équilibrage de charge pour l’affinité IP source. La figure 8.6 illustre un
exemple de mode d’affinité IP source.
Équilibreur de charge

Lot dorsal

Règle d’équilibreur de charge Machine


Session 1 virtuelle 1
Mode d’affinité de l’IP source Session 2
Session 1 2 hachages : 3 hachages :
• IP source • IP source Machine
Internet Session 2 • IP de desnaon • IP de desnaon virtuelle 2
• Protocole

Machine
virtuelle 3

Figure 8.6 Lorsque vous configurez les règles d’équilibrage de charge pour utiliser le mode d’affinité
IP source, l’utilisateur peut fermer, puis démarrer une nouvelle session tout en continuant à se
connecter à la même machine virtuelle dorsale. Le mode d’affinité IP source peut exécuter 2 hachages
utilisant l’adresse IP source et de destination ou 3 hachages utilisant également le protocole.
116 CHAPITRE 8 Applications d’équilibrage de charge

Essayer maintenant
Pour créer une règle d’équilibrage de charge qui utilise une sonde d’intégrité, procédez
comme suit.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Pour créer une règle d’équilibrage de charge, indiquez le nom de la règle, par
exemple httprule. Indiquez le port externe sur lequel le trafic est reçu et le
port interne auquel le trafic doit être distribué. Dans cet exemple simple, le tra-
fic est reçu sur le port 80, puis distribué sur le port 80 :
az network lb rule create \
--resource-group azuremolchapter8 \
--lb-name loadbalancer \
--name httprule \
--protocol tcp \
--frontend-port 80 \
--backend-port 80 \
--frontend-ip-name frontendpool \
--backend-pool-name backendpool \
--probe-name healthprobe
Si vous exécutez plusieurs sites Web sur une machine virtuelle répondant sur
différents ports, vous pouvez utiliser une règle donnée pour diriger le trafic
vers un site Web spécifique de la machine virtuelle.

8.1.4 Routage du trafic direct avec des règles de traduction d’adresses réseau
Les règles d’équilibrage de charge distribuent le trafic entre les lots dorsaux de machines
virtuelles, vous n’avez donc aucune garantie de pouvoir vous connecter à une machine vir-
tuelle donnée à des fins de maintenance ou de gestion. Comment pouvez-vous vous
connecter à une machine virtuelle spécifique située derrière un équilibreur de charge? La
configuration de l’équilibreur de charge comporte une dernière partie à laquelle nous
allons maintenant nous intéresser : les règles de traduction d’adresse réseau (NAT). Ces
règles vous permettent de contrôler le flux d’un trafic spécifique pour le diriger vers une
seule machine virtuelle. La figure 8.7 montre comment les règles NAT acheminent un tra-
fic spécifique vers des machines virtuelles individuelles.
Les règles NAT fonctionnent aux côtés des règles NSG. La machine virtuelle ne peut
recevoir le trafic que s’il existe une règle NSG qui autorise le même trafic que la règle
NAT de l’équilibreur de charge.
Pourquoi créer des règles NAT? Imaginons que vous souhaitiez utiliser SSH ou RDP
pour vous connecter à une machine virtuelle spécifique ou utiliser des outils de gestion
pour vous connecter à un serveur de base de données dorsal. Si l’équilibreur de charge
distribue le trafic entre les machines virtuelles dorsales, il vous faudra essayer encore et
encore de vous connecter, sans aucune garantie de pouvoir vous connecter à la machine
virtuelle souhaitée.
Composants de l’équilibreur de charge Azure 117

Internet

Équilibreur de charge

Règles de traducon d’adresses réseau


• Trafic direct : port TCP 5000 externe->
port TCP 22 interne

Groupe de sécurité réseau


Figure 8.7 Le trafic dans l’équilibreur de charge
Règles de groupe de sécurité réseau est traité par les règles NAT. Si un protocole et un
port correspondent à une règle, le trafic est ensuite
• Autoriser le port TCP 22 externe->
transmis à la machine virtuelle dorsale définie.
port TCP 22 interne
Aucune sonde d’intégrité n’est associée,
l’équilibreur de charge ne vérifie donc pas si la
machine virtuelle est en mesure de répondre avant
de transférer le trafic. Le trafic quitte l’équilibreur
de charge et est ensuite traité par les règles NSG.
MV Si le trafic est autorisé, il est transmis à la machine
virtuelle.

Priorité à la sécurité
Nous abordons quelques thèmes liés à la sécurité dans la partie 3 de cet ouvrage, mais
vous devez toujours garder la question de la sécurité à l’esprit lorsque vous créez et exé-
cutez des applications dans Azure. La sécurité ne doit pas être une question secondaire,
qui sera traitée ultérieurement. Avec l’essor de l’infonuagique et des machines virtuelles
et applications Web « jetables », il devient facile d’oublier certaines pratiques de sécurité
de base. En particulier si vous travaillez dans Azure dans le cadre d’un abonnement
d’entreprise, assurez-vous que les ressources que vous créez n’offrent pas, involontaire-
ment, un moyen pour les pirates d’accéder à votre infrastructure.
Quelles pratiques faut-il éviter? En fait, des tâches que vous avez déjà effectuées dans le
cadre de cet ouvrage! Les ports de gestion à distance pour SSH et RDP ne doivent pas
être ouverts à l’Internet public comme vous avez pu le faire ou à tout le moins, vous devez
restreindre l’accès à une plage d’adresses IP spécifiques.
La meilleure pratique consisterait à créer une machine virtuelle sécurisée pour laquelle la
gestion à distance est disponible. Selon les besoins, vous vous connectez à cette
machine virtuelle sécurisée, puis vous vous connectez sur le réseau virtuel Azure à des
machines virtuelles supplémentaires. Vous avez utilisé cette approche simple de machine
virtuelle par boîte de saut au chapitre 5. Elle permet de limiter la surface d’attaque et
réduit la nécessité de recourir à des règles NSG et des règles NAT d’équilibrage de
charge. Le chapitre 16 présente le Centre de sécurité Azure et explique comment vous
pouvez formuler dynamiquement des requêtes et ouvrir des ports de gestion à distance
pendant une période spécifique, ce qui constitue la meilleure solution.
118 CHAPITRE 8 Applications d’équilibrage de charge

(suite)
Même si vous travaillez dans le cadre d’un abonnement Azure privé sans aucun lien avec
d’autres abonnements Azure (éducatifs ou professionnels), essayez de limiter la connec-
tivité à distance fournie.

Essayer maintenant
Pour créer une règle NAT d’équilibrage de charge, procédez comme suit.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Pour créer une règle NAT d’équilibrage de charge, définissez un nom, par
exemple natrulessh, ainsi que le lot IP frontal à utiliser. La règle NAT examine
le trafic sur un protocole et un port donnés, par exemple le port TCP 50001.
S’il y a correspondance avec la règle, le trafic est transféré vers le port 22
dorsal :
az network lb inbound-nat-rule create \
--resource-group azuremolchapter8 \
--lb-name loadbalancer \
--name natrulessh \
--protocol tcp \
--frontend-port 50001 \
--backend-port 22 \
--frontend-ip-name frontendpool
3 À ce stade, vous avez créé un équilibreur de charge de base. Examinez com-
ment les différents composants de l’équilibreur de charge ont été regroupés :
az network lb show \
--resource-group azuremolchapter8 \
--name loadbalancer

Une adresse IP publique a été affectée au lot IP frontal et vous avez créé une sonde d’inté-
grité afin de contrôler l’état dans une page de contrôle d’intégrité personnalisée pour un
serveur Web. Une règle d’équilibrage de charge a été créée pour distribuer le trafic Web
provenant de vos clients vers un lot dorsal, et elle utilise la sonde d’intégrité. Vous avez
également une règle NAT d’équilibrage de charge qui autorise le trafic SSH. Mais il n’y a
pas encore de machine virtuelle pour recevoir ce trafic. Pour ne pas faire attendre plus
longtemps les clients de votre pizzeria, je vous propose de créer des machines virtuelles
capables d’exécuter votre application Web et auxquelles l’équilibreur de charge peut dis-
tribuer le trafic!
Composants de l’équilibreur de charge Azure 119

Équilibreur de charge
Lot dorsal : machines virtuelles à couche d’applicaon

Machine Machine Machine


virtuelle 1 virtuelle 2 virtuelle 3
Règles
Lot IP d’équilibreur
Internet de charge
frontal
Sondes de Lot dorsal : machines virtuelles mulmédias
santé
Machine Machine Machine
virtuelle 1 virtuelle 2 virtuelle 3

Figure 8.8 Il est possible de créer un ou plusieurs lots dorsaux dans un équilibreur de charge.
Chaque lot dorsal contient une ou plusieurs machines virtuelles exécutant le même composant
d’application. Dans cet exemple, un lot dorsal contient les machines virtuelles qui exécutent la
couche application Web, et l’autre lot dorsal contient les machines virtuelles qui fournissent les
contenus multimédias, par exemple les images et la vidéo.

8.1.5 Affectation de groupes de machines virtuelles à des lots dorsaux


La dernière partie de la configuration de l’équilibreur de charge consiste à définir des
lots dorsaux contenant une ou plusieurs machines virtuelles. Ces lots dorsaux
contiennent des machines virtuelles qui exécutent les mêmes composants d’application,
ce qui permet à l’équilibreur de charge de distribuer le trafic vers un lot dorsal spéci-
fique en ayant la certitude que n’importe laquelle des machines virtuelles dans ce pool
pourra répondre correctement à la requête des clients. La figure 8.8 décrit en détail
comment les lots dorsaux regroupent logiquement les machines virtuelles exécutant les
mêmes applications.
Vous créez et utilisez un équilibreur de charge avec des machines virtuelles, mais tout
se passe au niveau du réseau virtuel. Le lot IP frontal utilise des adresses IP publiques ou
privées. La sonde d’intégrité examine les réponses au niveau d’un port ou d’un protocole
donné. Même en cas d’utilisation d’une sonde HTTP, l’équilibreur de charge recherche
une réponse positive du réseau. Les règles d’équilibrage de charge mettent l’accent sur la
méthode utilisée pour distribuer le trafic à partir d’un port externe du lot frontal vers un
port du lot dorsal.
Lorsque vous affectez des machines virtuelles au lot dorsal qui reçoit le trafic distribué
par l’équilibreur de charge, c’est la carte réseau virtuelle qui se connecte à l’équilibreur
de charge. Il arrive que les machines virtuelles se connectent à la carte réseau virtuelle. Si
vous repensez au chapitre 5, cette séparation entre les machines virtuelles et la carte
réseau virtuelle est logique en termes de gestion des ressources. Les règles NSG contrôlent
le trafic autorisé à circuler vers la machine virtuelle, mais elles sont appliquées à un sous-
réseau virtuel ou à une carte réseau virtuelle, et non à la machine virtuelle.
Quelles sont les implications pour la configuration des lots IP dorsaux? Vous devez
créer vos autres ressources réseau virtuelles avant de pouvoir connecter une machine vir-
tuelle à l’équilibreur de charge. La procédure de création des ressources réseau devrait
vous rappeler ce que vous avez déjà appris dans un précédent chapitre, alors voyons main-
tenant ce que vous avez retenu!
120 CHAPITRE 8 Applications d’équilibrage de charge

Essayer maintenant
Pour créer les ressources réseau supplémentaires comme le montre la figure 8.9, procé-
dez comme suit.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Créez un réseau virtuel et un sous-réseau :
az network vnet create \
--resource-group azuremolchapter8 \
--name vnetmol \
--address-prefixes 10.0.0.0/16 \
--subnet-name subnetmol \
--subnet-prefix 10.0.1.0/24
Dans la pratique, il y a de fortes chances que ces ressources réseau existent déjà.
Les noms et les plages d’adresses IP sont également les mêmes que ceux que
vous avez utilisés au chapitre 5. Étant donné que vous devez supprimer les res-
sources Azure à la fin de chaque chapitre, cette réutilisation des plages
d’adresses IP ne devrait pas poser problème. N’oubliez pas que, généralement,
vous n’avez pas à créer un réseau virtuel et un sous-réseau chaque fois que vous
créez un équilibreur de charge. Vous pouvez plutôt utiliser les ressources
réseau virtuelles existantes.
3 Créez un groupe NSG :
az network nsg create \
--resource-group azuremolchapter8 \
--name webnsg

Réseau virtuel

Sous-réseau

Groupe de sécurité réseau


Autoriser le port TCP 80 (HTTP)
Autoriser le port TCP 22 (SSH)

NIC 1 NIC 2
virtuel virtuel

Figure 8.9 Pour préparer le réseau virtuel, dans cet exercice, vous allez
créer un réseau, un sous-réseau et des cartes réseau virtuelles protégés par
un groupe NSG. Les règles associées au groupe NSG autorisent le trafic
HTTP et SSH.
Composants de l’équilibreur de charge Azure 121

4 Créez une règle NSG qui autorise le trafic provenant du port TCP 80 à atteindre
vos machines virtuelles. Cette règle est nécessaire pour que les machines vir-
tuelles de serveur Web puissent recevoir le trafic client et y répondre :
az network nsg rule create \
--resource-group azuremolchapter8 \
--nsg-name webnsg \
--name allowhttp \
--priority 100 \
--protocol tcp \
--destination-port-range 80 \
--access allow
5 Ajoutez une autre règle afin d’autoriser le trafic SSH pour la gestion à distance.
Cette règle NSG fonctionne avec la règle NAT d’équilibrage de charge créée
dans la section précédente pour l’une de vos machines virtuelles :
az network nsg rule create \
--resource-group azuremolchapter8 \
--nsg-name webnsg \
--name allowssh \
--priority 101 \
--protocol tcp \
--destination-port-range 22 \
--access allow
6 Associez le groupe NSG au sous-réseau créé à l’étape 2. Les règles NSG sont
appliquées à toutes les machines virtuelles qui se connectent à ce sous-réseau :
az network vnet subnet update \
--resource-group azuremolchapter8 \
--vnet-name vnetmol \
--name subnetmol \
--network-security-group webnsg
7 Étant donné que l’équilibreur de charge fonctionne avec des cartes réseau vir-
tuelles, créez deux cartes réseau virtuelles et connectez-les au sous-réseau vir-
tuel. Indiquez également le nom de l’équilibreur de charge et le lot d’adresses
dorsal auquel se connectent les cartes réseau virtuelles. La règle NAT d’équi-
librage de charge n’est associée qu’à la première carte réseau virtuelle qui est
créée :
az network nic create \
--resource-group azuremolchapter8 \
--name webnic1 \
--vnet-name vnetmol \
--subnet subnetmol \
--lb-name loadbalancer \
--lb-address-pools backendpool \
--lb-inbound-nat-rules natrulessh
8 Procédez de la même façon pour créer la deuxième carte réseau, mais sans la
règle NAT :
az network nic create \
--resource-group azuremolchapter8 \
--name webnic2 \
--vnet-name vnetmol \
--subnet subnetmol \
--lb-name loadbalancer \
--lb-address-pools backendpool
122 CHAPITRE 8 Applications d’équilibrage de charge

8.2 Création et configuration de machines virtuelles avec


l’équilibreur de charge
Faisons maintenant une pause pour examiner ce que vous avez créé jusqu’à présent. La
figure 8.10 montre, dans les grandes lignes, à quoi ressemblent vos ressources réseau et
votre équilibreur de charge. Notez à quel point ces ressources sont intégrées. L’équi-
libreur de charge ne peut pas exister par lui-même. Pour permettre la distribution du tra-
fic, les cartes réseau virtuelles doivent être connectées à l’équilibreur de charge. Ces cartes
réseau virtuelles ont besoin d’un réseau virtuel et d’un sous-réseau et, dans l’idéal, elles
doivent être protégées par un groupe NSG. Les machines virtuelles qui exécutent alors
votre application n’ont presque rien à voir avec les étapes à suivre pour créer et configurer
l’équilibreur de charge!

Internet

Équilibreur de charge

Adresse IP publique
Lot IP frontal

Sonde de santé
Sonde de parcours pour vérifier health.html
on sur les machines virtuelles d’arrière-plan
Règles d’équilibreur de charge
Autoriser le port TCP 80 entrant-> port
TCP 80 sur le lot dorsal

Lot IP dorsal

NIC NIC NIC


virtuel virtuel virtuel
Groupe de sécurité réseau
Sous-réseau de réseau virtuel
Réseau virtuel

Figure 8.10 Aucune machine virtuelle n’a été créée ici : la


configuration de l’équilibreur de charge implique des ressources réseau
virtuelles. Il existe une relation étroite entre l’équilibreur de charge et
les ressources réseau virtuelles.

Vous avez créé de nombreuses ressources réseau et configuré plusieurs parties de l’équi-
libreur de charge. L’adresse IP publique et l’équilibreur de charge ont été créés dans une
zone de disponibilité en tant que ressources redondantes entre les zones, je vous propose
donc de créer deux machines virtuelles dans des zones différentes pour multiplier les
chances que les zones de disponibilité améliorent la haute disponibilité de vos applica-
tions.
Si vous utilisez des groupes de disponibilité plutôt que des zones de disponibilité, c’est
à ce stade que vous créez un groupe de disponibilité et y ajoutez vos machines virtuelles.
La plate-forme Azure distribue ensuite les machines virtuelles entre les domaines d’erreur
et de mise à jour. Puisque vous souhaitez optimiser l’utilisation des fonctionnalités de
haute disponibilité d’Azure pour votre pizzeria, utilisez des zones de disponibilité.
Création et configuration de machines virtuelles avec l’équilibreur de charge 123

Essayer maintenant
Pour créer les machines virtuelles et les associer à l’équilibreur de charge, procédez
comme suit.

1 Créez la première machine virtuelle, puis affectez-la à une zone de disponibilité


avec la commande --zone 1. Associez la première carte réseau virtuelle créée
dans l’exercice précédent avec la commande --nics webnic1. N’oubliez pas
que l’équilibreur de charge ne dispose d’informations que sur la carte réseau
virtuelle. Une machine virtuelle vient d’être connectée à cette carte réseau
virtuelle :
az vm create \
--resource-group azuremolchapter8 \
--name webvm1 \
--image ubuntults \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys \
--zone 1 \
--nics webnic1
2 Créez la deuxième machine virtuelle, puis affectez-la à la zone de
disponibilité 2. Associez la deuxième carte réseau virtuelle que vous avez créée
plus tôt, avec la commande --nics webnic2 :
az vm create \
--resource-group azuremolchapter8 \
--name webvm2 \
--image ubuntults \
--size Standard_B1ms \
--admin-username azuremol \
--generate-ssh-keys \
--zone 2 \
--nics webnic2

8.2.1 Connexion aux machines virtuelles et observation de l’équilibreur


de charge en action
Pour observer l’équilibreur de charge en action, vous devez installer un serveur Web de
base, comme vous l’avez fait au chapitre 2. Vous pouvez également tester la règle NAT
d’équilibrage de charge. Vous commencez maintenant à voir en quoi tous ces composants
dans Azure sont liés et interdépendants?

Essayer maintenant
Pour installer un serveur Web sur vos machines virtuelles, procédez comme suit.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Dans le chapitre 5, nous avons discuté de l’agent SSH. L’agent SSH vous per-
met de transférer une clé SSH d’une machine virtuelle à la suivante. Dans la
mesure où seule la machine virtuelle 1 est associée à une règle NAT d’équi-
librage de charge, vous devez donc utiliser l’agent pour vous connecter à la
machine virtuelle 2.
124 CHAPITRE 8 Applications d’équilibrage de charge

Démarrez l’agent SSH, puis ajoutez votre clé SSH afin de pouvoir vous
connecter aux deux machines virtuelles :
eval $(ssh-agent) && ssh-add
3 Obtenez l’adresse IP publique associée au lot IP frontal de l’équilibreur de
charge. Cette méthode est la seule qui permette d’acheminer le trafic via les
machines virtuelles :
az network public-ip show \
--resource-group azuremolchapter8 \
--name publicip \
--query ipAddress \
--output tsv
4 Connexion SSH vers la machine virtuelle 1. Indiquez l’adresse IP publique de
l’équilibreur de charge et le port utilisé avec la règle NAT d’équilibrage de
charge, par exemple 50001. Le paramètre -A utilise l’agent SSH pour franchir
vos clés SSH :
ssh -A azuremol@ipAddress -p 50001
5 Au chapitre 2, vous avez utilisé apt-get pour installer la totalité de la pile
LAMP qui contenait le serveur Web Apache. Voyons quelque chose d’un peu
différent du serveur Web Apache, avec le serveur Web autonome, mais puissant,
NGINX. Sur une machine virtuelle Windows, c’est généralement là que vous
installez IIS :
sudo apt-get install -y nginx
6 Le référentiel d’exemples GitHub que vous avez utilisé dans les chapitres précé-
dents contient une page Web HTML de base et une page de contrôle d’inté-
grité pour la sonde d’intégrité de l’équilibreur de charge. Clonez ces exemples
sur la machine virtuelle :
git clone https://github.com/fouldsy/azure-mol-samples.git
7 Copiez les exemples de page HTML et de page de contrôle d’intégrité dans le
répertoire du serveur Web :
sudo cp azure-mol-samples/8/webvm1/* /var/www/html/
8 Répétez cette opération pour la deuxième machine virtuelle. Vous souvenez-
vous de l’agent SSH? Vous devriez être en mesure de vous connecter en SSH de
la machine virtuelle 1 vers la machine virtuelle 2 via l’adresse IP privée interne :
ssh 10.0.1.5
Installez le serveur Web Nginx :
sudo apt-get install -y nginx
Clonez les exemples GitHub sur la machine virtuelle :
git clone https://github.com/fouldsy/azure-mol-samples.git
9 Copiez ensuite les exemples de page HTML et de page de contrôle d’intégrité
dans le répertoire du serveur Web :
sudo cp azure-mol-samples/8/webvm2/* /var/www/html/

Ouvrez un navigateur Web, puis connectez-vous à l’adresse IP publique de votre équi-


libreur de charge. La page Web de base se charge et indique que votre pizzeria compte
maintenant des machines virtuelles redondantes s’exécutant derrière un équilibreur de
charge dans les zones de disponibilité, comme le montre la figure 8.11. Il se peut que vous
deviez forcer l’actualisation de votre navigateur Web pour vérifier que les machines
virtuelles 1 et 2 répondent quand l’équilibreur de charge distribue le trafic entre elles.
Exercice pratique : consultation de modèles de déploiements existants 125

Figure 8.11 Lorsque vous ouvrez l’adresse IP publique de l’équilibreur de charge


dans un navigateur Web, le trafic est distribué sur l’une des machines virtuelles qui
exécutent votre site Web de base. La sonde d’intégrité de l’équilibreur de charge
utilise la page health.html pour confirmer les réponses du serveur Web avec un code
HTTP 200 (OK). La machine virtuelle devient ensuite disponible dans le cadre de la
distribution du trafic de l’équilibreur de charge.

8.3 Exercice pratique : consultation de modèles de


déploiements existants
Ce chapitre revient sur ce que vous avez appris dans plusieurs chapitres précédents. Vous
avez créé des ressources réseau, comme au chapitre 5. Vous avez rendu l’équilibreur de
charge et les machines virtuelles hautement disponibles à l’aide des zones de disponibi-
lité, comme au chapitre 7. Vous avez aussi installé un serveur Web et déployé des fichiers
d’exemple, comme au chapitre 2. Votre pizzéria a bien changé depuis le début de cet
ouvrage, où elle consistait en une simple page Web déployée sur une seule machine vir-
tuelle!
Pour faire le lien avec un autre thème abordé dans un chapitre précédent, dans cet
exercice pratique, je vais vous demander d’explorer toutes les ressources qui constituent
l’équilibreur de charge. Pour ce faire, vous allez examiner le modèle Resource Manager,
comme vous l’avez appris au chapitre 6. L’objectif de cet exercice pratique est de voir
comment, avec un seul modèle, vous pouvez créer et configurer la même chose qu’avec
de nombreuses pages d’instructions et plusieurs commandes CLI. Et croyez-moi, avec
PowerShell, cela demanderait encore plus de commandes! Procédez comme suit :
1 Ouvrez le portail Azure. Accédez à l’option Resource Group (Groupe de res-
sources) et sélectionnez-la dans la barre de navigation à gauche du portail.
Choisissez votre groupe de ressources, par exemple azuremolchapter8.
2 Choisissez Automation Script (Script d’automatisation) dans la barre à gauche,
comme le montre la figure 8.
3 Pour afficher la partie pertinente du modèle, sélectionnez chacune des res-
sources répertoriées dans la liste. Prenez quelques minutes pour explorer ce
modèle. Comme vous pouvez le voir, l’ensemble des ressources et des compo-
sants que vous avez configurés dans Azure CLI sont présents.
126 CHAPITRE 8 Applications d’équilibrage de charge

Figure 8.12 Dans le portail Azure, sélectionnez le groupe de ressources de votre équilibreur de charge et
affichez le modèle Resource Manager.

L’utilisation d’un modèle simplifie considérablement le déploiement d’un environne-


ment d’application hautement disponible, redondant et à charge équilibrée. Vous pouvez
modifier le nom, les règles et le mode de distribution de l’équilibreur de charge, et laisser
le modèle déployer et configurer la totalité de l’environnement d’application à votre
place.
N’oubliez pas de supprimer ce groupe de ressources pour tirer le meilleur parti de vos
crédits Azure gratuits!
Applications évolutives

Dans les deux chapitres précédents, nous avons vu comment créer des applications
hautement disponibles et utiliser des équilibreurs de charge pour distribuer le trafic
entre plusieurs machines virtuelles exécutant votre application. Mais comment pouvez-
vous exécuter et gérer efficacement plusieurs machines virtuelles et exécuter le
nombre adéquat d’instances de machine virtuelle lorsque vos clients en ont le plus
besoin? Lorsque la demande des clients s’accentue, vous voulez augmenter automati-
quement le dimensionnement de votre application pour faire face à cette demande.
En revanche, lorsque la demande diminue, par exemple au milieu de la nuit, quand la
plupart des gens sans jeunes enfants dorment, vous souhaitez réduire le dimensionne-
ment de l’application pour réaliser quelques économies.
Dans Azure, vous pouvez automatiquement dimensionner vos ressources IaaS à
votre convenance à l’aide de groupes de machines virtuelles identiques (VMSS, Virtual
Machine Scale Sets). Ces VMSS exécutent des machines virtuelles identiques, générale-
ment distribuées derrière un équilibreur de charge ou une passerelle d’application.
Vous définissez des règles de mise à l’échelle automatique qui augmentent ou dimi-
nuent le nombre d’instances de machines virtuelle en fonction de la demande des
clients. L’équilibreur de charge ou la passerelle d’application distribue automatique-
ment le trafic entre les nouvelles instances de machines virtuelles, vous permettant
ainsi de vous concentrer sur le développement et l’exécution optimaux de vos applica-
tions. Les groupes VMSS vous donnent les moyens de contrôler vos ressources IaaS
avec certains des avantages du PaaS en termes d’élasticité. Les applications Web, que
nous n’avons pas beaucoup abordées dans les deux derniers chapitres, reviennent
désormais en force avec leur propre capacité à évoluer en fonction de la demande.
Dans ce chapitre, nous allons voir comment concevoir et créer des applications à
même d’évoluer automatiquement. Nous verrons pourquoi cette capacité d’adaptation
à la demande vous aide à exécuter des applications efficaces, et nous explorerons diffé-
rentes manières de faire évoluer une application en fonction de différentes métriques.

127
128 CHAPITRE 9 Applications évolutives

9.1 Pourquoi créer des applications évolutives et fiables?


Quel est l’intérêt de créer des applications qui se mettent à l’échelle? Ces applications
sont capables de s’adapter à la demande des clients quand la charge de travail augmente,
même en votre absence. En d’autres termes, vous n’avez plus à payer pour un tas de res-
sources supplémentaires que vous n’utilisez pas et, surtout, vous n’avez plus à craindre le
plantage de votre application du fait d’un manque de ressources. Le schéma idéal pour
les applications et les ressources dont elles ont besoin est rarement statique. Générale-
ment, les demandes des applications fluctuent tout au long de la journée et de la nuit,
ainsi qu’entre les jours de la semaine et le weekend.
La mise à l’échelle des ressources peut s’effectuer de deux manières différentes,
comme le montre la figure 9.1 : verticalement ou horizontalement. Les VMSS et les appli-
cations Web peuvent évoluer verticalement ou horizontalement.

vCPU vCPU vCPU


Monter en puissance
vRAM vRAM vRAM vRAM vRAM
Augmenter les
vRAM vRAM ressources affectées vRAM vRAM vRAM

vCPU Monter en charge vCPU vCPU

vRAM vRAM vRAM vRAM vRAM vRAM


Augmenter le
vRAM vRAM nombre d’instances vRAM vRAM vRAM vRAM

Figure 9.1 Vous pouvez adapter vos applications à la hausse ou à la baisse ou vers l’intérieur
et l’extérieur. La méthode utilisée dépend de la façon dont l’application est conçue pour gérer
la mise à l’échelle. Une mise à l’échelle verticale ajuste les ressources affectées à la machine
virtuelle ou à l’application Web, notamment le nombre de cœurs d’UC ou la quantité de
mémoire dont elle dispose. Cette méthode de mise à l’échelle de l’application fonctionne bien
si l’application n’exécute qu’une seule instance. Une mise à l’échelle horizontale modifie le
nombre d’instances exécutant votre application et contribue à accroître sa disponibilité et sa
résilience.
L’évolutivité des applications est un facteur essentiel pour leur haute disponibilité. Aux
chapitres 7 et 8, nous avons consacré un certain temps aux groupes à haute disponibilité
et aux zones de disponibilité, et nous avons vu comment configurer des équilibreurs de
charge. Ces deux chapitres soulignaient la nécessité d’exécuter plusieurs machines vir-
tuelles. Lorsque l’application peut s’adapter automatiquement, sa disponibilité s’accroît
également avec la distribution de ces machines virtuelles entre des groupes ou des zones
de disponibilité. Tout cela est positif. La puissance d’Azure réside dans le fait que vous
n’avez pas à vous soucier de la façon d’ajouter d’autres instances d’application, de les pro-
pager sur le matériel de votre centre de données, voire de différents centres de données,
avant de mettre à jour les ressources réseau pour distribuer le trafic aux nouvelles ins-
tances d’application.
Pourquoi créer des applications évolutives et fiables? 129

9.1.1 Mise à l’échelle verticale des machines virtuelles


La première méthode de mise à l’échelle des ressources n’a rien d’original, et c’est sans
doute ainsi que vous avez procédé vous-même par le passé. Si votre application commence
à fonctionner lentement au fur et à mesure qu’augmente le nombre de clients qui l’uti-
lisent, que feriez-vous normalement? Vous augmentez la quantité d’UC ou de mémoire,
n’est-ce pas? Vous augmentez la puissance de la ressource en réponse à la demande.
L’une des utilisations les plus courantes de la mise à l’échelle verticale concerne les ser-
veurs de base de données. Les bases de données sont notoirement gourmandes en res-
sources informatiques, plus encore que les clients de votre pizzéria! Les serveurs de bases
de données consomment souvent toutes les ressources fournies à une machine virtuelle,
même s’ils ne les utilisent pas immédiatement. Dans ces conditions, il peut s’avérer diffi-
cile de suivre la demande réelle sur le système et de savoir quand une mise à l’échelle ver-
ticale s’impose pour fournir plus de ressources. La figure 9.2 illustre la manière dont la
mise à l’échelle verticale répond généralement à un serveur de bases de données nécessi-
tant davantage de ressources.

vCPU vCPU Augmenter le traitement (vCPU) vCPU vCPU vCPU vCPU

vCPU vCPU vCPU vCPU vCPU vCPU

vRAM vRAM Augmenter la mémoire (vRAM) vRAM vRAM vRAM vRAM

vRAM vRAM vRAM vRAM vRAM vRAM

vRAM vRAM vRAM

Figure 9.2 Au fur et à mesure qu’une base de données croît, elle a besoin de plus de ressources
pour stocker et traiter les données en mémoire. Pour une mise à l’échelle verticale dans ce
scénario, vous allez ajouter plus d’UC et de mémoire.

Vous pouvez avoir besoin d’une mise à l’échelle sur d’autres paramètres que la capacité
d’UC et de mémoire. Prenons le cas d’un site Web qui diffuse un grand nombre d’images
ou de vidéos. Il est possible que les exigences en termes de puissance de calcul ne soient
pas énormes, mais la demande de bande passante peut être élevée. Pour augmenter la
bande passante disponible, vous pouvez augmenter le nombre de cartes réseau sur votre
machine virtuelle. Par ailleurs, si vous devez stocker davantage d’images et de vidéos, vous
ajouterez du stockage. Vous pouvez ajouter ou supprimer des ressources telles que des
cartes réseau virtuelles et du stockage pendant que la machine virtuelle s’exécute.
REDIMENSIONNEMENT DES MACHINES VIRTUELLES
Dans Azure, vous pouvez augmenter la taille d’une machine virtuelle (montée en puis-
sance) si vous avez besoin de plus de ressources de calcul pour votre application. Au
chapitre 2, vous avez créé une machine virtuelle de base. Sa taille était Standard_D2s_v3.
Ce nom ne vous renseigne pas beaucoup sur les ressources de calcul affectées à une
machine virtuelle pour déterminer s’il est souhaitable d’augmenter la capacité d’UC ou la
mémoire. Pour effectuer une mise à l’échelle verticale, vous devez savoir quelles sont les
options disponibles.
130 CHAPITRE 9 Applications évolutives

Essayer maintenant
Suivez les instructions fournies pour déterminer la taille et les ressources de calcul des
machines virtuelles disponibles.

1 Ouvrez le portail Azure dans un navigateur Web, puis ouvrez le Cloud Shell.
2 Entrez la commande Azure CLI suivante pour déterminer les tailles des
machines virtuelles disponibles et les ressources de calcul qu’elles fournissent :
az vm list-sizes --location eastus --output table

La liste az vm list-sizes résultante varie d’une région à l’autre et évolue au fur et à


mesure qu’Azure adapte ses gammes de machines virtuelles. Voici un exemple condensé
de sortie générée par la commande, indiquant la capacité de mémoire (MemoryInMb) et
le nombre de cœurs (NumberOfCores) associés à chaque taille de machine virtuelle :
MaxDataDiskCount MemoryInMb Name NumberOfCores
------------------ ------------ ---------------------- ---------------
4 8192 Standard_D2s_v3 2
8 16384 Standard_D4s_v3 4
16 32768 Standard_D8s_v3 8
32 65536 Standard_D16s_v3 16
8 4096 Standard_F2s 2
16 8192 Standard_F4s 4
32 16384 Standard_F8s 8
2 2048 Standard_B1ms 1
2 1024 Standard_B1s 1
4 8192 Standard_B2ms 2
4 4096 Standard_B2s 2

Ainsi, votre machine virtuelle Standard_D2s_v3 vous fournit deux cœurs d’UC et 8 Go de
mémoire. C’est plus que suffisant pour une machine virtuelle de base exécutant un ser-
veur Web. Supposons que les prises de commande de votre pizzeria en ligne se mettent à
exploser et que vous souhaitiez réaliser une mise à l’échelle verticale; il vous suffit d’utili-
ser az vm resize pour choisir une autre taille. Vous spécifiez la taille de machine vir-
tuelle qui offre le nombre de cœurs d’UC et la quantité de mémoire dont votre
application a besoin.
La capacité d’UC et de mémoire supplémentaire n’apparaît pas pour autant comme
par magie sur votre machine virtuelle. Le comportement peut être quelque peu différent
de celui que vous observez avec Hyper-V ou VMware dans le contexte de ressources sur
place. Dans des limites raisonnables, vous pouvez ajouter ou supprimer des ressources de
calcul de base dans un environnement sur place sans interrompre l’exécution de la
machine virtuelle. Dans Azure, le redémarrage de la machine virtuelle est actuellement
nécessaire lorsque vous la redimensionnez pour enregistrer les nouvelles ressources de
calcul et déclencher les règles de facturation appropriées. Lorsque vous souhaitez effec-
tuer une mise à l’échelle verticale, prévoyez un certain temps d’arrêt pour le redémarrage
de la machine virtuelle.
BAISSE DE PUISSANCE
Et si votre machine virtuelle disposait de plus de ressources qu’il ne lui en faut? Ce scéna-
rio est souvent plus courant que celui d’une machine virtuelle qui n’a pas assez de res-
sources. Les propriétaires d’applications choisissent parfois une taille de machine virtuelle
sensiblement supérieure à ce dont ils ont besoin, pour s’assurer du bon fonctionnement
de leur application. Toutes ces ressources gaspillées coûtent de l’argent et leur coût passe
facilement inaperçu jusqu’à ce qu’arrive la facture à la fin du mois.
Pourquoi créer des applications évolutives et fiables? 131

La mise à l’échelle des ressources est possible dans les deux sens. Nous avons beau-
coup parlé de la montée en puissance des ressources, mais les mêmes principes
s’appliquent pour la baisse de puissance des ressources. Il est important de déterminer les
tailles de machine virtuelle utilisées et le poids de la demande des applications sur ces
ressources. Vous pouvez ensuite utiliser la commande az vm resize pour choisir une
taille de machine virtuelle avec moins de cœurs et de mémoire. Ici aussi, comme pour
toute opération de redimensionnement, le redémarrage de la machine virtuelle est
nécessaire.

9.1.2 Mise à l’échelle verticale des applications Web


Les applications Web peuvent être mises à l’échelle à a hausse ou à la baisse en fonction
des ressources requises de la même manière que les machines virtuelles. Lorsque vous
avez créé une application Web au chapitre 3, la taille S1 Standard par défaut vous a fourni
un cœur d’UC et 1,75 Go de RAM. Chaque niveau et chaque taille d’application Web
fournit une quantité définie de
ressources, dont des cœurs
d’UC, de la mémoire et des
emplacements de préproduc-
tion. Le principe reste le même
si la taille ou l’allocation de res-
sources par défaut change ou si
vous choisissez une autre taille
d’application Web.
Si, après avoir créé votre
application Web, vous vous
apercevez que l’application
requiert plus de ressources que
ce que prévoit le plan de ser-
vice, vous pouvez changer de
niveau, comme le montre la
figure 9.3. Il en va de même si
vous constatez que vous avez
trop de ressources par rapport
à ce dont vous avez besoin. En
procédant manuellement de
cette façon, vous pouvez ainsi
augmenter ou baisser la puis-
sance de votre application Web
en fonction de vos besoins.
Figure 9.3 Pour procéder
manuellement à la mise à l’échelle
verticale d’une application Web, vous
modifiez le niveau de tarification (taille)
du plan de service d’application sous-
jacent. Le plan de service d’application
définit la quantité de ressources
affectées à votre application Web. Si
votre application nécessite une quantité
de stockage, un nombre d’UC ou des
emplacements de déploiement
différents, vous pouvez changer de
niveau pour adapter les ressources
affectées à la demande de l’application.
132 CHAPITRE 9 Applications évolutives

9.1.3 Mise à l’échelle horizontale des ressources


Une autre approche permettant de suivre la demande consiste en une mise à l’échelle
horizontale. Pour une mise à l’échelle verticale, vous augmentez la quantité d’UC et de
mémoire attribuée à une même ressource, telle qu’une machine virtuelle. Pour une mise
à l’échelle horizontale, vous augmentez le nombre de machines virtuelles, comme le
montre la figure 9.4.

Pour une mise à l’échelle


vCPU horizontale, vous vCPU vCPU vCPU
augmentez le nombre de
vRAM vRAM machines virtuelles qui vRAM vRAM vRAM vRAM vRAM vRAM
exécutent votre applicaon.
vRAM vRAM vRAM vRAM vRAM vRAM vRAM vRAM

Figure 9.4 Pour faire face à une augmentation de la demande de votre application, vous pouvez augmenter
le nombre de machines virtuelles exécutant l’application. La charge est ainsi répartie entre plusieurs
machines virtuelles, plutôt que de se concentrer sur des machines virtuelles à instance unique toujours plus
grandes.

Pour la mise à l’échelle horizontale, l’application doit avoir conscience de cette possibilité
et doit être à même de traiter les données sans conflit. Cette approche est particulière-
ment pertinente pour les applications Web dans la mesure où l’application peut générale-
ment traiter les données par elle-même.
Lorsque vous créez des applications complexes, vous pouvez subdiviser votre applica-
tion en composants individuels de plus petite taille. Si vous repensez aux files d’attente
Azure Storage évoquées au chapitre 4, vous pouvez avoir un composant d’application des-
tiné à recevoir les commandes Web frontales, et un autre chargé de traiter ces com-
mandes et de les transmettre à la pizzeria. L’utilisation de files d’attente de messages est
une approche de la conception et de l’écriture d’applications à même de fonctionner
dans un environnement à évolutivité horizontale. Cette approche vous permet également
de mettre à l’échelle chaque composant d’application séparément et d’utiliser différentes
tailles de machine virtuelle ou d’application Web pour optimiser l’efficacité et réduire
votre facture mensuelle.
La mise à l’échelle verticale était l’option privilégiée traditionnellement, car il était
plus facile de donner davantage de ressources de calcul à une application en espérant
qu’elle s’en satisfasse. La mise en place d’une grappe de ressources et la mise à l’échelle
horizontale d’une application étaient souvent complexes dans le monde physique. Grâce
à l’infonuagique et à la virtualisation, les difficultés liées à la mise à l’échelle horizontale
ont été réduites au point que vous pouvez souvent mettre une application à l’échelle plus
rapidement à l’horizontale qu’à la verticale, et sans temps d’arrêt.
Vous vous rappelez de la commande az vm resize abordée à la section précédente?
Que se passe-t-il à l’issue de l’opération de redimensionnement de la machine virtuelle?
La machine virtuelle redémarre. S’il s’agit de la seule instance de votre application, per-
sonne ne peut plus y accéder jusqu’à ce qu’elle soit de nouveau en ligne. Dans le cas
d’une mise à l’échelle horizontale, il n’y a pas de temps d’arrêt lorsque vous ajoutez des
instances de machine virtuelle; lorsque les nouvelles machines virtuelles sont prêtes, elles
prennent automatiquement en charge une partie des demandes de l’application. Les
sondes d’intégrité de l’équilibreur évoquées au chapitre 8 détectent automatiquement la
Jeux de mise à l’échelle de machine virtuelle 133

présence dans le lot dorsal de toute nouvelle machine virtuelle prête à participer au traite-
ment des demandes des clients et le trafic commence à être acheminé vers cette machine.
Azure est conçu pour vous offrir le maximum de souplesse et de choix en termes
d’évolutivité. Si vous concevez un nouvel environnement applicatif, je vous suggère
d’opter pour une mise à l’échelle horizontale. Les machines virtuelles ont une extension
conviviale dans Azure qui peut vous être utile dans ce cas : les VMSS (ou Virtual Machine
Scale Sets).

9.2 Jeux de mise à l’échelle de machine virtuelle


Les machines virtuelles sont l’une des charges de travail les plus courantes dans Azure, et
ce pour une bonne raison. La courbe d’apprentissage pour créer et exécuter une
machine virtuelle est plate, car la plupart de vos connaissances existantes sont directement
transposables dans Azure. Les serveurs Web sont l’une des charges de travail les plus cou-
rantes pour une machine virtuelle, ce qui là aussi est intéressant puisque vous n’avez pas à
acquérir de nouvelles compétences pour transposer vos connaissances sur la façon d’exé-
cuter Apache, IIS ou NGINX dans le contexte d’une machine virtuelle Azure.
Et si vous pouviez disposer d’une grappe de machines virtuelles exécutant votre ser-
veur Web? Comment la géreriez-vous dans votre environnement habituel sur place? De
nombreuses solutions de grappe sont possibles pour une telle implémentation. Qu’en est-
il des mises à jour de vos serveurs physiques ou de vos machines virtuelles? Comment les
géreriez-vous? Et que faire pour augmenter ou réduire automatiquement le nombre d’ins-
tances dans votre grappe? Auriez-vous besoin d’un autre outil pour cela? Le principe d’un
VMSS est illustré dans la figure 9.5.
Jeu de mise à l’échelle
de machine virtuelle
Zones de disponibilité 1
Machine
virtuelle 1

Zones de disponibilité 2
Internet Équilibreur
Machine
de charge virtuelle 2

Zones de disponibilité 3
Machine
virtuelle 3

Figure 9.5 Un VMSS est un groupe logique de machines virtuelles. Chaque machine virtuelle est
identique et peut être gérée, mise à jour et mise à l’échelle de manière centralisée. Vous pouvez
définir des métriques qui augmentent ou diminuent automatiquement le nombre de machines
virtuelles présentes dans le groupe VMSS en fonction de la charge de votre application.

Un VMSS simplifie l’exécution et la gestion de plusieurs machines virtuelles pour fournir


une application hautement disponible et à charge équilibrée. Vous indiquez à Azure
quelle taille de machine virtuelle vous souhaitez utiliser, vous spécifiez une image de base
pour la machine virtuelle et le nombre d’instances de votre choix. Vous pouvez ensuite
définir des seuils de capacité d’UC ou de mémoire pour augmenter ou diminuer automa-
tiquement le nombre d’instances en fonction de la charge de l’application ou en fonction
des pics d’utilisation des clients planifiés. Les VMSS tirent profit à la fois du modèle IaaS
134 CHAPITRE 9 Applications évolutives

des machines virtuelles et des avantages qu’offrent les fonctions PaaS en termes de mise à
l’échelle, de redondance, d’automatisation et de gestion centralisée des ressources.

Un VMSS pour une seule machine virtuelle?


Si vous créez des applications sur des machines virtuelles, le mieux est d’utiliser un
VMSS, même si vous n’avez besoin que d’une seule machine virtuelle. Pourquoi? Un
VMSS est extensible à tout moment et il crée automatiquement les connexions voulues
à un équilibreur de charge ou à une passerelle d’application. Si la demande sur votre
application augmente soudainement au bout de deux mois, vous pourrez indiquer au
VMSS de créer une ou deux instances de machines virtuelles supplémentaires.
Avec une machine virtuelle ordinaire et autonome pour opérer une extension, vous devrez
ajouter cette machine virtuelle à un équilibreur de charge; en outre, si vous n’avez pas
initialement placé la machine virtuelle dans un groupe ou une zone de disponibilité, il vous
faudra alors prévoir comment rendre vos machines virtuelles hautement disponibles. En
créant un VMSS dès le départ, même si vous n’avez besoin que d’une seule machine vir-
tuelle, vous assurerez la pérennité de votre application en minimisant le travail supplé-
mentaire nécessaire par la suite.

9.2.1 Création d’un VMSS


Bien qu’un VMSS simplifie la création et l’exécution d’applications hautement dispo-
nibles, il implique la création et la configuration de quelques composants additionnels.
Ceci étant dit, deux commandes seulement sont nécessaires pour le déploiement d’un
VMSS avec Azure CLI.

Essayer maintenant
Pour créer un VMSS avec Azure CLI, procédez comme indiqué ci-après.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Créez un groupe de ressources avec la commande az group create. Indiquez
un nom de groupe de ressources, par exemple azuremolchapter9, et un
emplacement :
az group create --name azuremolchapter9 --location westeurope
Les VMSS peuvent utiliser des zones de disponibilité; assurez-vous par consé-
quent de sélectionner une région où le support est disponible.
3 Pour créer un VMSS, indiquez le nombre d’instances de machine virtuelle sou-
haitées et la façon dont ces instances doivent gérer les mises à jour de leur
configuration. Lorsque vous apportez une modification aux machines vir-
tuelles, par exemple pour l’installation d’une application ou l’implémentation
d’une mise à jour du système d’exploitation invité, elles peuvent se mettre à
jour automatiquement dès qu’elles détectent la modification. Ou bien vous
pouvez définir la stratégie de mise à niveau sur manual et appliquer les mises à
jour au meilleur moment, à votre convenance. Les autres paramètres sont les
mêmes que pour la création d’une machine virtuelle unique, que vous connais-
sez.
az vmss create \
--resource-group azuremolchapter9 \
--name scalesetmol \
Jeux de mise à l’échelle de machine virtuelle 135

--image UbuntuLTS \
--admin-username azuremol \
--generate-ssh-keys \
--instance-count 2 \
--vm-sku Standard_B1ms \
--upgrade-policy-mode automatic \
--lb-sku standard \
--zones 1 2 3

Et voilà! Vous avez créé plusieurs machines virtuelles dans une zone de disponibilité pou-
vant évoluer. Et maintenant, voici la surprise que vous réserve le VMSS que vous venez de
créer avec Azure CLI. Vous vous souvenez du chapitre précédent sur les équilibreurs de
charge, de toutes ces commandes CLI que vous avez dû utiliser et de ce que nous avons vu
sur les modèles pour simplifier la création d’un équilibreur de charge? Cette commande
az vmss create a créé et configuré un équilibreur de charge à votre place!

N’oubliez pas vos limites de quota.


Nous avons déjà vu cela dans un chapitre précédent, mais il me semble opportun d’y reve-
nir au cas où vous rencontriez des problèmes. Dans Azure, les quotas par défaut sur votre
abonnement vous empêchent de déployer accidentellement des ressources et de les
oublier, ce qui vous coûterait de l’argent! Vous pouvez consulter la liste des quotas à
l’adresse http://mng.bz/ddcx.
Lorsque vous créez plusieurs machines virtuelles, vous pouvez rencontrer des problèmes
de quotas. La non suppression des ressources aux chapitres et dans les exercices pré-
cédents peut également entraîner des problèmes. Si vous voyez un message d’erreur du
type :
Operation results in exceeding quota limits of Core.
Maximum allowed: 4, Current in use: 4, Additional requested: 2. (
(L’opération entraîne le dépassement des limites de quota du
cœur. Maximum autorisé : 4, Actuellement utilisé : 4,
Supplément demandé : 2.)

cela indique que vous devez demander une augmentation de vos quotas. Vous pouvez affi-
cher votre quota actuel pour une région donnée avec la commande suivante :
az vm list-usage --location westeurope

Pour demander une augmentation de vos quotas pour une région, procédez comme décrit
dans la page http://mng.bz/Xq2f.

Azure CLI vous permet de créer un VMSS en un minimum de temps. Un équilibreur de


charge a été créé et configuré, une adresse IP publique a été attribuée et les instances de
machine virtuelle du VMSS ont été ajoutées au lot dorsal d’adresses IP.

Essayer maintenant
Vérifiez les ressources créées avec votre VMSS, comme décrit ci-après.

Pour voir les ressources qui ont été créées avec votre VMSS, exécutez la commande
suivante :
az resource list \
--resource-group azuremolchapter9 \
--output table
136 CHAPITRE 9 Applications évolutives

Le résultat est similaire à celui présenté dans l’exemple ci-dessous : La colonne Type
confirme qu’un réseau virtuel, une adresse IP publique et un équilibreur de charge ont
été créés :
Name ResourceGroup Type
------ ---------------- ----------------------------------
mol azuremolchapter9 Microsoft.Compute/virtualMachineScaleSets
molLB azuremolchapter9 Microsoft.Network/loadBalancers
molLBIP azuremolchapter9 Microsoft.Network/publicIPAddresses
molVNET azuremolchapter9 Microsoft.Network/virtualNetworks

Que signifie toute cette magie? Lorsque vous créez un VMSS avec Azure CLI, un équi-
libreur de charge à redondance de zone et une adresse IP publique sont automatique-
ment créés. Les machines virtuelles sont créées et ajoutées à un lot dorsal d’adresses IP sur
l’équilibreur de charge. Des règles NAT sont créées pour vous permettre de vous connec-
ter aux instances de machines virtuelles. La seule chose qui manque, ce sont les règles de
l’équilibreur de charge, car celles-ci varient en fonction des applications que vous souhai-
tez exécuter. Lorsque vous ajoutez ou supprimez des machines virtuelles dans le VMSS, la
configuration de l’équilibreur de charge se met automatiquement à jour pour permettre
la distribution du trafic vers les nouvelles instances. Cette magie ne se limite pas à Azure
CLI : si vous utilisez Azure PowerShell ou le portail Azure, ces ressources réseau de prise
en charge sont automatiquement créées et connectées pour opérer ensemble.

Essayer maintenant
Votre VMSS a été créé avec deux instances. Vous pouvez mettre manuellement à l’échelle
le nombre d’instances de machines virtuelles de votre VMSS. Dans ce cas, l’équilibreur
de charge met automatiquement à jour la configuration du lot dorsal d’adresses IP. Défi-
nissez le paramètre --new-capacity du VMSS sur quatre instances comme suit :
az vmss scale \
--resource-group azuremolchapter9 \
--name scalesetmol \
--new-capacity 4

9.2.2 Création de règles de mise à l’échelle automatique


Lorsque vous avez créé votre groupe VMSS, un nombre fixe d’instances ont été déployées.
L’une des fonctions les plus intéressantes des VMSS réside dans leur capacité à augmenter
ou diminuer automatiquement le nombre d’instances de machines virtuelles qu’ils exé-
cutent.
Comme le montre la figure 9.6, lorsque la charge de l’application s’accroît, le VMSS
peut augmenter automatiquement son nombre d’instances exécutées. Pensez à une appli-
cation professionnelle type dans votre environnement. Au début de la journée de travail,
les utilisateurs commencent à accéder à l’application, ce qui entraîne un accroissement de
la charge qui pèse sur les ressources de ces instances de machines virtuelles. Pour garantir
à l’application des performances optimales, le VMSS augmente alors automatiquement
son nombre d’instances de machines virtuelles. L’équilibreur de charge commence auto-
matiquement à distribuer le trafic aux nouvelles instances. Plus tard dans la journée,
lorsque les utilisateurs rentrent chez eux, la demande pesant sur l’application décroît. Les
instances de machines virtuelles utilisent moins de ressources, de sorte que le VMSS sup-
prime alors automatiquement certaines de ces instances pour réduire les ressources inu-
tiles et baisser les coûts.
Jeux de mise à l’échelle de machine virtuelle 137

Jeu de mise à l’échelle


Jeu de mise à l’échelle de machine virtuelle Jeu de mise à l’échelle
de machine virtuelle Machine Machine Machine de machine virtuelle
virtuelle 1 virtuelle 2 virtuelle 3
Machine Machine Machine La charge La charge Machine Machine
virtuelle 1 virtuelle 2 virtuelle 3 virtuelle 1 virtuelle 2
aug- Machine Machine diminue
mente virtuelle 4 virtuelle 5
Mise à l’échelle automaque pour
Mise à l’échelle automaquement réduire le nombre d’instances de
pour augmenter le nombre machines virtuelles
d’instances de machines virtuelles
Figure 9.6 Les VMSS peuvent se mettre automatiquement à l’échelle en augmentant ou en diminuant leur nombre
d’instances. Au moyen de règles que vous définissez, vous surveillez certaines métriques qui déclenchent au moment
opportun l’augmentation ou la diminution des instances de machines virtuelles exécutées. Le nombre d’instances de
machines virtuelles s’ajuste ainsi au niveau de la demande sur votre application. Vous assurez ainsi des performances
et une disponibilité optimales de votre application, tout en éliminant les coûts superflus lorsque la charge diminue.

Vous pouvez baser les règles applicables à votre VMSS sur différentes métriques. Vous pou-
vez examiner les métriques de l’hôte pour suivre la consommation des ressources de base,
configurer la collecte de métriques au niveau de la machine virtuelle invitée pour l’ana-
lyse de compteurs de performance spécifiques pour l’application ou utiliser Azure Appli-
cation Insights pour surveiller en détail le code de l’application.
Une planification peut également être utilisée pour imposer la présence dans le VMSS
d’un certain nombre d’instances de machines virtuelles dans un intervalle de temps
donné. Pour reprendre l’exemple précédent, dans le cas d’une application profession-
nelle classique connaissant une demande plus forte aux heures de bureau qu’en soirée,
vous définirez un nombre fixe plus élevé d’instances à exécuter aux heures de bureau. En
soirée, vous définirez par contre un nombre fixe moins important d’instances à exécuter.
Avec des règles de mise à l’échelle automatique basées sur des métriques, les perfor-
mances seront scrutées pendant un intervalle de temps défini, par exemple 5 minutes, et
quelques minutes pourront encore être nécessaires pour lancer les nouvelles instances de
machines virtuelles et les configurer en vue de leur utilisation par l’application. Avec une
planification fixe de l’ajustement automatique du nombre d’instances de machines vir-
tuelles dans votre VMSS, les ressources supplémentaires sont déjà en cours d’utilisation et
l’équilibreur de charge leur distribue le trafic tout au long de la journée.
L’utilisation d’une planification nécessite de définir une référence concernant la
demande typique pesant sur l’application et ne tient pas compte des augmentations et des
baisses de la demande ici ou là sur le compte de l’entreprise ou pendant le cycle de vente.
Vous pouvez donc vous retrouver avec plus de ressources qu’il ne vous en faut à certains
moments, et donc payer parfois plus que nécessaire. Il peut aussi y avoir des moments où
la charge de l’application est trop forte pour le nombre d’instances de machines virtuelles
que le VMSS est en mesure de mobiliser.

Essayer maintenant
Pour créer des règles de mise à l’échelle automatique pour un VMSS, procédez comme
suit.

1 Accédez à la barre de navigation sur le côté gauche du portail Azure et sélec-


tionnez Groupe de ressources. Choisissez le groupe de ressources que vous avez
créé pour votre modèle de déploiement, par exemple azuremolchapter9.
138 CHAPITRE 9 Applications évolutives

2 Sélectionnez votre VMSS dans la liste des ressources, dans cet exemple
scalesetmol.
3 Sous Settings (Paramètres) à gauche de la fenêtre du VMSS, choisissez Scaling
(Mise à l’échelle). Cliquez sur le bouton Enable Autoscale (Activer la mise à
l’échelle automatique).
4 Entrez un nom, par exemple autoScale, puis définissez un nombre d’instances
minimal, maximal et par défaut. Pour cet exercice, réglez le minimum sur 2, le
maximum sur 10 et le nombre par défaut sur 2.
5 Choisissez Add a Rule (Ajouter une règle), puis passez en revue les paramètres
de règle disponibles, présentés à la figure 9.7.
Les paramètres par défaut surveillent la consommation moyenne de l’UC.
La règle se déclenche lorsque la charge
dépasse les 70 % sur une période de
10 minutes. Une instance de machine vir-
tuelle est ajoutée dans le groupe VMSS, et
un délai de 5 minutes s’écoule avant que la
surveillance ne reprenne et que la règle
suivante ne puisse être déclenchée.
Ce délai d’attente (« refroidissement »)
donne aux nouvelles instances de
machines virtuelles le temps de se déployer
et de commencer à recevoir du trafic de la
part de l’équilibreur de charge, de manière
à ce que la charge globale de l’application
dans le VMSS puisse diminuer. Sans ce
délai de refroidissement, les règles pour-
raient déclencher l’ajout d’une nouvelle
instance de machine virtuelle avant même
que la première instance ajoutée n’ait eu le
temps de recevoir du trafic. Pour créer la
règle, cliquez sur Add (Ajouter).
6 Choisissez de nouveau Add a Rule (Ajouter
une règle). Cette fois, configurez la règle
pour que le nombre d’instances baisse
d’une unité lorsque la charge d’UC
moyenne est inférieure à 30 % pendant
une période de 10 minutes. Pour créer la
règle, cliquez sur Add (Ajouter).
7 Comme illustré dans la figure 9.8, vérifiez
vos règles, puis sélectionnez Save (Enregis-
trer).

Figure 9.7 Lorsque vous ajoutez une


règle de mise à l’échelle automatique,
vous définissez le comportement exact
requis pour que la règle se déclenche.
Mise à l’échelle d’une application Web 139

Figure 9.8 Vous devriez à présent avoir une règle qui augmente le nombre d’instances d’une unité lorsque la
charge d’UC moyenne dépasse les 70 % et une autre règle qui diminue ce nombre d’une unité lorsque la charge
d’UC moyenne tombe en dessous de 30 %.

Vous pouvez également configurer des règles de mise à l’échelle automatique avec Azure
CLI, Azure PowerShell ou dans des modèles. Le portail offre une interface commode
pour la revue des règles et l’affichage des options disponibles pour chaque paramètre.
Pour les règles complexes, les modèles vous permettent de créer des VMSS avec le même
jeu de règles de manière reproductible.

9.3 Mise à l’échelle d’une application Web


Si les thèmes relatifs aux applications Web que nous avons abordés au chapitre 3 vous ont
énormément intéressé, de même que les contenus sur les tables et les files d’attente Azure
présentés au chapitre 4, ces trois derniers chapitres riches en informations sur les
machines virtuelles IaaS vous ont peut-être laissé perplexe. Le nuage n’était-il pas censé
être plus simple? Pour les composants PaaS comme les applications Web, c’est effective-
ment le cas!
Je ne veux pas que les prochaines pages vous donnent le sentiment que j’aborde un
peu vite la procédure à suivre pour apporter aux applications Web la même haute disponi-
bilité et les mêmes capacités de mise à l’échelle. Le fait est que c’est beaucoup plus simple!
Le choix entre IaaS et PaaS s’inscrit dans la recherche d’un équilibre entre flexibilité et
facilité de gestion. Une grande partie de la redondance sous-jacente est abstraite dans les
services PaaS tels que les applications Web. Il n’est donc pas utile de consacrer toute une
section à la haute disponibilité et une autre encore aux équilibreurs de charge.
140 CHAPITRE 9 Applications évolutives

Le choix de l’IaaS pour générer et exécuter vos propres machines virtuelles ou


groupes VMSS avec des équilibreurs de charge et des zones de disponibilité peut tenir à
un besoin ou à une restriction de l’entreprise. Il est possible que les développeurs, les
ingénieurs en charge des opérations ou les outils et les flux de travail ne soient pas prêts à
adopter totalement les applications Web. Cela dit, je vous encourage vivement à envisager
cette option pour le déploiement de vos nouvelles applications. L’utilisation de compo-
sants PaaS, tels que des applications Web, vous permet de vous concentrer davantage sur
vos applications et vos clients en évitant de perdre du temps sur l’infrastructure et l’admi-
nistration.

Essayer maintenant
Pour créer une application Web avec Azure CLI, procédez comme suit.

1 Au chapitre 3, vous avez créé une application Web dans le portail Azure.
Comme pour la plupart des ressources, il est souvent plus rapide et plus facile
d’utiliser Azure CLI. Ouvrez le Cloud Shell dans le portail Azure.
2 Créez un plan de service d’application de taille Standard S1. Cette taille vous
permet d’ajouter jusqu’à 10 instances de votre application Web pour sa mise à
l’échelle automatique :
az appservice plan create \
--name appservicemol \
--resource-group azuremolchapter9 \
--sku s1
3 Créez une application Web utilisant un référentiel Git local pour le déploie-
ment, comme vous l’avez fait au chapitre 3 :
az webapp create \
--name webappmol \
--resource-group azuremolchapter9 \
--plan appservicemol \
--deployment-local-git
Tous les concepts et les scénarios évoqués à la section précédente autour des
règles et planifications de mise à l’échelle automatique pour les VMSS
s’appliquent aux applications Web. En résumé, voici quelques scénarios cou-
rants de mise à l’échelle automatique d’une application Web :
– Augmentation ou diminution automatique du nombre d’instances de
l’application Web compte tenu de métriques de performance, pour s’adap-
ter à la demande pesant sur l’application tout au long de la journée de tra-
vail.
– Planification déclenchant automatiquement une augmentation du nombre
d’instances de l’application Web au début de la journée de travail, puis une
diminution du nombre d’instances à la fin de la journée.
Dans le cas de notre pizzeria, l’application Web peut voir sa charge de trafic augmenter
plus tard dans la journée et tout au long de la soirée, le jeu de règles de mise à l’échelle
automatique doit donc être adapté en fonction de la situation. Encore une fois, vous
devez étudier les performances de votre application pour comprendre son fonctionne-
Mise à l’échelle d’une application Web 141

ment dans des conditions d’utilisation normales et pour déterminer la métrique de per-
formance la plus pertinente pour le déclenchement d’une augmentation ou d’une
réduction de son nombre d’instances. Même dans le cas d’une mise à l’échelle automa-
tique basée sur une planification, un suivi s’impose pour déterminer quand surviennent
les pics de demande sur votre application et créer les règles appropriées pour prendre en
charge ce modèle d’utilisation.

Essayer maintenant
Pour créer des règles de mise à l’échelle automatique pour une application Web, procédez
comme suit.

1 Accédez à la barre de navigation sur le côté gauche du portail Azure et sélec-


tionnez Groupe de ressources. Choisissez le groupe de ressources que vous avez
créé pour votre application Web, dans cet exemple azuremolchapter9.
2 Sélectionnez votre application Web dans la liste des ressources, dans cet
exemple webappmol.
3 Sous Settings (Paramètres), à gauche de la fenêtre de l’application Web, choi-
sissez Scale Out (App Service Plan) [Monter en charge (plan de service d’appli-
cation)]. Cliquez sur le bouton Enable Autoscale (Activer la mise à l’échelle
automatique).
4 Saisissez un nom, par exemple autoscalewebapp, puis définissez un nombre
d’instances minimal, maximal et par défaut. Pour cet exercice, réglez le mini-
mum sur 2, le maximum sur 5 et le nombre par défaut sur 2.
5 Choisissez Add a Rule (Ajouter une règle), puis passez en revue les paramètres
de règle disponibles. Cette fenêtre est identique à celle des règles de mise à
l’échelle automatique des VMSS. Les paramètres par défaut surveillent la
consommation moyenne de la capacité d’UC et entraînent le déclenchement
de l’action prévue lorsque la charge dépasse les 70 % pendant une période de
10 minutes. Une instance de l’application Web est ajoutée et un délai d’attente
de 5 minutes s’écoule avant que la surveillance ne reprenne et que la règle sui-
vante ne puisse être déclenchée. Pour créer la règle, cliquez sur Add (Ajouter).
6 Choisissez de nouveau Add a Rule (Ajouter une règle). Cette fois, configurez la
règle pour que le nombre d’instances baisse d’une unité lorsque la charge
d’UC moyenne est inférieure à 30 % pendant une période de 10 minutes. Pour
créer la règle, cliquez sur Add (Ajouter).
7 Comme illustré dans la figure 9.9, vérifiez vos règles, puis sélectionnez Save
(Enregistrer).
Lorsque vos règles de mise à l’échelle automatique déclenchent une augmentation ou
une diminution du nombre d’instances de votre application Web, la plate-forme Azure
met à jour la distribution du trafic en fonction des instances disponibles. Il n’y a aucun
équilibreur de charge, à la différence de ce que nous avons vu avec les VMSS. Le concept
est similaire, mais il est cette fois totalement transparent pour vous. C’est là l’un des avan-
tages de l’approche PaaS, qui vous soulage de cet aspect!
Autant les VMSS que les applications Web vous permettent de créer des règles qui
dimensionnent automatiquement le nombre d’instances exécutant vos applications. En
142 CHAPITRE 9 Applications évolutives

Figure 9.9 Vous devriez à présent avoir une règle qui augmente le nombre d’instances d’une unité lorsque la
charge d’UC moyenne dépasse les 70 % et une autre règle qui diminue ce nombre d’une unité lorsque la charge
d’UC moyenne tombe en dessous de 30 %.

disposant de plusieurs instances pour exécuter votre application, vous augmentez égale-
ment la disponibilité de votre application. Les VMSS sont un bon compromis entre les
développeurs et les décisionnaires qui souhaitent, ou doivent, créer des applications sur
des machines virtuelles d’un côté et cherchent d’un autre côté à tirer parti de fonctions
telles que PaaS pour la mise à l’échelle automatique et la reconfiguration du flux du trafic
des clients.

9.4 Exercice pratique : installation d’une application sur


votre VMSS ou application Web
Nous avons abordé de nombreux sujets dans ce chapitre; je vous propose donc mainte-
nant un petit exercice final sur les VMSS ou les applications Web. Ou bien, si vous souhai-
tez prolonger votre pause déjeuner, faites les deux!
Exercice pratique : installation d’une application sur votre VMSS ou application Web 143

9.4.1 Jeux de mise à l’échelle de machine virtuelle


Votre VMSS inclut plusieurs instances de machines virtuelles, mais elles ne font pas grand-
chose pour le moment. Pour obtenir une vue d’ensemble des différentes façons d’instal-
ler des applications sur les instances de machines virtuelles d’un VMSS, consultez la page
http://mng.bz/9Ocx. Dans la pratique, vous utiliseriez l’une de ces méthodes de
déploiement automatique; mais pour l’instant, vous allez installer manuellement un ser-
veur Web sur vos instances de machines virtuelles, comme vous l’avez fait au chapitre 8 :
1 Vous vous souvenez des règles NAT d’équilibrage de charge? Par défaut,
chaque instance de machine virtuelle d’un VMSS possède une règle NAT qui
permet de s’y connecter directement en SSH. Les ports ne sont pas définis sur
le port TCP standard 22. Vous pouvez afficher la liste des instances de machines
virtuelles d’un VMSS avec leur numéro de port avec la commande suivante :
az vmss list-instance-connection-info \
--resource-group azuremolchapter9 \
--name scalesetmol
2 Pour vous connecter à un port spécifique par SSH, utilisez le paramètre -p
comme suit (indiquez vos propres adresse IP publique et numéros de port) :
ssh azuremol@40.114.3.147 -p 50003
3 Installez un serveur Web NGINX de base sur chaque instance de machine vir-
tuelle avec apt install. Repensez à la façon dont vous avez procédé au
chapitre 8.
4 Pour voir le VMSS en action, ouvrez l’adresse IP publique de l’équilibreur de
charge du VMSS dans un navigateur Web.

9.4.2 Web Apps


Pour déployer votre application sur une application Web exécutant plusieurs instances,
nous allons procéder comme nous l’avons vu au chapitre 3 pour une application Web
unique. Vous allez faire pousser l’application vers le référentiel Git local pour l’application
Web et, grâce à la puissance du PaaS, la plate-forme Azure déploiera cette base de code
unique sur les différentes instances de l’application Web :
1 Initialisez un référentiel Git dans azure-mol-samples/9, puis ajoutez et validez
les fichiers d’exemple comme vous l’avez fait au chapitre 3 :
cd azure-mol-samples/9
git init && git add . && git commit -m “Pizza”
2 Votre application Web dispose d’un référentiel Git local. Ajoutez un lien distant
pour votre application Web de la même manière que vous l’avez fait au
chapitre 3 :
git remote add webappmolscale <your-git-clone-url>
3 Poussez cet exemple vers votre application Web. Vous validez ainsi ce code
unique, mais votre application est ensuite distribuée sur les différentes ins-
tances de l’application Web :
git push webappmolscale master
Bases de données
mondiales avec Cosmos DB

Les données. On ne peut plus s’en passer. Presque toutes les applications que vous
développez et exécutez créent, traitent ou récupèrent des données. Ces données sont
généralement stockées dans une base de données structurée telles que MySQL, Micro-
soft SQL ou PostgreSQL. Ces bases de données structurées et volumineuses sont bien
connues et bien établies, bénéficient d’une importante documentation et de nom-
breux didacticiels, et elles sont accessibles au moyen de la plupart des principaux lan-
gages de programmation.
Un pouvoir important impliquant de grandes responsabilités, de nombreux frais
d’infrastructure et un gros travail de gestion accompagnent généralement ces bases de
données structurées traditionnelles. Cela ne signifie pas que vous ne devriez pas les uti-
liser, loin de là. Mais lorsqu’il s’agit d’applications exécutées à l’échelle mondiale, il
n’est pas facile de créer également des grappes de serveurs de base de données qui
répliquent vos données et acheminent intelligemment les clients vers votre instance la
plus proche.
C’est là qu’Azure Cosmos DB devient votre allié. Vous n’avez pas besoin de vous
soucier de la façon de répliquer vos données, d’assurer la cohérence et de distribuer les
demandes des clients. Au lieu de cela, vous ajoutez des données dans l’un des nom-
breux modèles à votre disposition, puis vous choisissez l’endroit où vous voulez que vos
données soient disponibles. Dans ce chapitre, vous allez découvrir les modèles de bases
de données non structurées dans Cosmos DB et vous allez apprendre à créer et à confi-
gurer votre base de données en vue de sa distribution mondiale, et à développer des
applications Web utilisant votre instance Cosmos DB hautement évolutive et redon-
dante.

144
Qu’est-ce que Cosmos DB? 145

10.1 Qu’est-ce que Cosmos DB?


Dans le chapitre 4, nous avons commencé à découvrir les bases de données non structu-
rées avec les tables Azure Storage. L’exemple présenté était élémentaire, mais les concepts
constituent les fondements de Cosmos DB. Tout d’abord, prenons un peu de recul et
déterminons ce que l’on entend par bases de données structurées et non structurées.

10.1.1 Bases de données structurées (SQL)


Les bases de données structurées représentent une approche plus traditionnelle du stoc-
kage de données. Une structure, ou un schéma, d’une base de données définit la façon dont
sont représentées les données. Les données sont stockées dans des tables : chaque ligne
correspond à un élément ainsi qu’à un ensemble fixe de valeurs qui lui est affecté. Repre-
nons l’exemple de la pizzeria : dans la table qui stocke les différentes sortes de pizza,
chaque ligne pourrait indiquer le nom de la pizza, sa taille et son prix. Une base de don-
nées SQL basique est illustrée dans la figure 10.1.

Base de données structurée


Figure 10.1 Dans une
Tableau
base de données structurée,
id nomPizza taille coût les données sont stockées
dans les lignes et les
1 Pepperoni 16” $18
colonnes d’une table.
2 Végétarien 16” $15 Chaque ligne contient un
3 Hawaïen 16” $12 nombre fixe de colonnes
représentant le schéma de
la base de données.

Dans les bases de données structurées, chaque serveur doit généralement contenir la base
de données complète afin que les requêtes et la récupération des données fonctionnent.
Les données sont jointes à partir de différentes tables dans des requêtes sur la base des cri-
tères définis par le développeur dans le cadre de la requête structurée. C’est de là que
vient le terme Langage de requête structurée ou SQL (Structured Query Language). Au fur et
à mesure que les bases de données deviennent volumineuses et gagnent en complexité,
les serveurs qui les exécutent doivent être suffisamment importants pour gérer ces don-
nées en mémoire. Avec les très gros ensembles de données, cela s’avère difficile et coû-
teux. Ces ensembles de données nécessitant une structure, il est aussi compliqué d’ajouter
des propriétés et de modifier la structure plus tard.

10.1.2 Bases de données non structurées (NoSQL)


Dans les bases de données NoSQL, les données non structurées ne sont pas stockées dans
des tables composées de lignes et de colonnes; elles sont stockées dans des tableaux dyna-
miques qui permettent d’ajouter de nouvelles propriétés pour un élément, selon vos
besoins. Un des avantages majeurs de cette approche est qu’elle offre la possibilité d’ajou-
ter rapidement un nouveau type de pizza ou une garniture spécifique sans avoir à modi-
fier la structure sous-jacente de la base de données. Dans une base de données structurée,
vous devriez ajouter une nouvelle colonne à une table, puis mettre à jour l’application
afin de gérer la colonne supplémentaire. Dans les bases de données NoSQL, vous ajoutez
une propriété supplémentaire à une entrée donnée à partir de votre code; reportez-vous à
la figure 10.2.
146 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

Base de données non


structurée
{
« coût » : « 18 »,
« descripon » : « pepperoni »
}
{
« coût » : « 15 »,
« descripon » : « végétarien »,
« gluten » : « sans »
}
{ Figure 10.2 Dans une base de données non
« coût » : « 12 », structurée, les données sont stockées sans
« Descripon » : « hawaïen », mappages fixes de colonnes à une ligne d’une
« garnitures » : « jambon, ananas » table. Par exemple, vous pouvez ajouter des
} garnitures à une seule pizza, sans avoir à mettre
à jour le schéma complet et d’autres
enregistrements.

Les bases de données NoSQL proposent également différents modèles de bases de don-
nées. Ces modèles fournissent une indication sur la façon dont sont stockées et récupé-
rées les données dans la base de données. Le modèle que vous utilisez dépend de la taille
et du format de vos données, et de la façon dont vous souhaitez les présenter dans votre
application. Ces modèles incluent des documents, ses graphiques et des tableaux. Ne vous
tracassez pas trop avec les modèles pour l’instant; différents modèles conviennent mieux à
différents ensembles de données non structurées, selon la manière dont vous voulez lier
et interroger les données. Le principal point à retenir est que les bases de données non
structurées NoSQL reposent sur un concept sous-jacent différent concernant le mode de
stockage et de récupération des données, ce que vous pouvez mettre à profit lorsque vous
développez et exécutez des applications infonuagiques dans Azure.

10.1.3 Mise à l’échelle de bases de données


Souvenez-vous que j’ai précisé qu’une base de données structurée doit exister intégrale-
ment sur chaque serveur. Lorsque vous commencez à travailler avec des bases de données
très volumineuses, vous avez besoin de serveurs toujours plus importants pour les exécu-
ter. Il est possible que vous ne travailliez jamais avec des bases de données qui atteignent
une taille de plusieurs milliers de gigaoctets, voire de téraoctets, mais les bases de données
NoSQL évoluent et s’adaptent différemment par rapport aux bases de données SQL. La
différence réside dans le fait que les bases de données NoSQL évoluent généralement de
façon horizontale et non verticale.
La mise à l’échelle verticale d’une machine virtuelle est limitée par la mémoire et le
processeur. Lorsque vous atteignez la limite en matière de débit de stockage et de bande
passante réseau, vous commencez à rencontrer des problèmes de performances dans
d’autres parties de la pile de calculs. Sans compter le mal que cela fera à votre portefeuille
(ou celui de votre patron) quand vous recevrez la facture pour des machines virtuelles
aussi volumineuses. À titre de récapitulatif du chapitre 9, la figure 10.3 illustre la mise à
l’échelle verticale. Imaginez maintenant une grappe de machines virtuelles de base de
données aussi volumineuses, car vous souhaitez que votre application soit résiliente et
redondante, n’est-ce pas?
Qu’est-ce que Cosmos DB? 147

vCPU vCPU Augmenter le traitement (vCPU) vCPU vCPU vCPU vCPU

vCPU vCPU vCPU vCPU vCPU vCPU

vRAM vRAM Augmenter la mémoire (vRAM) vRAM vRAM vRAM vRAM

vRAM vRAM vRAM vRAM vRAM vRAM

vRAM vRAM vRAM

Figure 10.3 Les bases de données structurées classiques évoluent de manière verticale. Au fur et
à mesure que la base de données croît, vous augmentez la capacité de stockage, de mémoire et de
puissance du processeur sur le serveur.

En revanche, la mise à l’échelle horizontale vous permet d’exécuter vos machines vir-
tuelles de base de données en utilisant moins de ressources et à un prix plus bas. Pour ce
faire, les bases de données NoSQL répartissent les données entre les nœuds de base de
données et acheminent les requêtes depuis votre application jusqu’au nœud approprié.
Les autres nœuds de la grappe n’ont pas besoin de savoir où est stocké le reste des don-
nées, ils doivent seulement répondre à leurs propres requêtes. Selon les besoins, vous pou-
vez ajouter rapidement des nœuds à une grappe pour répondre à la demande d’un client.
Par conséquent, dans une base de données NoSQL, il n’est pas nécessaire que la base
de données tienne intégralement dans la mémoire d’un hôte. Seule une partie de la base
de données, à savoir une partition, doit être stockée et traitée. Si votre application traite
une quantité importante de données structurées, une base de données NoSQL pourrait
affecter les performances, car les différents hôtes sont interrogés pour leurs informations,
qui sont ensuite retournées au client. Si vous devez traiter une grande quantité de don-
nées non structurées, les bases de données NoSQL permettront certainement d’améliorer
les performances, voire d’offrir des avantages en termes de gestion et d’efficacité. Un
exemple de mise à l’échelle horizontale de bases de données non structurées sur les hôtes
est illustré dans la figure 10.4.

Fraconnement de la base de
vCPU vCPU données entre hôtes pour vCPU vCPU vCPU vCPU

vCPU vCPU mere à l’échelle et équilibrer vCPU vCPU vCPU vCPU


les demandes de traitement
vRAM vRAM vRAM vRAM vRAM vRAM

vRAM vRAM vRAM vRAM vRAM vRAM

vRAM vRAM vRAM


Paron de base de données Paron de base de données

Figure 10.4 Les bases de données non structurées NoSQL utilisent la mise à l’échelle horizontale.
Au fur et à mesure que la base de données croît, elle est fragmentée en segments de données qui
sont ensuite distribués sur chaque serveur de base de données.
148 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

10.1.4 Mise en place de l’ensemble avec Cosmos DB


Alors, qu’est-ce que Cosmos DB? Il s’agit d’une plate-forme de base de données dispo-
nible à l’échelle mondiale et offrant des fonctionnalités de mise à l’échelle automatique,
vous permettant d’utiliser diverses formes de bases de données NoSQL. Comme avec des
services tels que Web Apps, Cosmos DB vous épargne une bonne partie de la charge de la
gestion. Lorsque vous créez une application Web, vous n’avez pas besoin de configurer
l’équilibrage de charge ou le regroupement en grappes; il vous suffit de choisir vos
régions, de configurer la mise à l’échelle automatique, puis de charger le code de votre
application. La réplication et la distribution du trafic de l’application Web sont gérées de
manière hautement disponible par la plate-forme Azure. Avec Cosmos DB, vous n’avez
pas à vous soucier de la taille de la base de données dont vous avez besoin, ni de la quan-
tité de mémoire à affecter, ni de la façon de répliquer des données aux fins de redon-
dance. Vous choisissez le débit dont vous pourriez avoir besoin et les régions dans
lesquelles stocker vos données, puis vous commencez à ajouter vos données.
Tout au long de ce chapitre, nous allons utiliser un modèle SQL pour Cosmos DB, tan-
dis que les données seront stockées au format JSON NoSQL. Ces concepts vous sont peut-
être inconnus, mais essayez de me suivre. Il est possible d’utiliser d’autres modèles tels que
Mongo, Cassandra, Gremlin et Table. Ceux-ci partagent la même fonctionnalité : sélec-
tionnez votre modèle, choisissez vos régions, puis ajoutez vos données. Voici toute la puis-
sance de Cosmos DB.

10.2 Création d’un compte et d’une base de données Cosmos DB


Observons à présent Cosmos DB et les bases de données non structurées en action. Il
existe plusieurs façons de procéder. La première méthode consiste à créer un compte
dans le portail Azure, puis à sélectionner et à créer un modèle de base de données. Vous
saisissez ensuite les données dans la base de données afin que votre application puisse
l’interroger. Vous pouvez aussi utiliser Azure CLI, Azure PowerShell ou des kits de déve-
loppement logiciel (SDK) spécifiques au langage pour coder la base de données. Nous
allons utiliser le portail Azure afin que vous puissiez aussi créer et interroger visuellement
vos données.

10.2.1 Création et remplissage d’une base de données Cosmos


Au chapitre 4, vous avez créé votre première base de données NoSQL avec une table
Azure Storage. Nous allons utiliser Cosmos DB pour créer une base de données similaire,
qui proposera cette fois toutes les options de géo-redondance et de réplication afin de
s’assurer que votre boutique en ligne permet aux clients de commander des pizzas, sans
temps d’arrêt. Nous allons commencer par créer un compte Cosmos DB ainsi qu’une
base de données de documents, puis nous allons ajouter des entrées de données pour
trois différentes sortes de pizzas, comme le montre la figure 10.5.
Création d’un compte et d’une base de données Cosmos DB 149

Pizza au Pizza Pizza


pepperoni végétarienne hawaïenne

Base de données de document Cosmos DB

Compte Cosmos DB

Groupe de ressources Azure

Figure 10.5 Dans cette section, vous allez créer un groupe de


ressources et un compte Cosmos DB. Une base de données de
documents est ensuite créée dans ce compte, puis vous ajoutez trois
entrées afin de proposer une carte de base pour votre pizzeria.

Essayer maintenant
Pour voir Cosmos DB à l’œuvre, créez un compte comme le montre la figure 10.6.

1 Ouvrez le portail Azure et sélectionnez Créer une ressource dans le coin supé-
rieur gauche du tableau de bord.
2 Recherchez et sélectionnez Azure Cosmos DB, puis choisissez Create (Créer).
3 Saisissez un nom unique pour votre compte Cosmos DB, par exemple azure-
mol.
4 Le type de modèle que vous pouvez utiliser pour votre base de données est
appelé API. Dans cet exemple, choisissez SQL dans le menu déroulant.
5 Dans Resource Group (Groupe de ressources), choisissez Create New (Créer
nouveau), puis saisissez un nom, par exemple azuremolchapter10.
6 Dans le champ Location (Emplacement), sélectionnez East US (Est des États-
Unis). Cosmos DB est disponible dans toutes les régions Azure. Cependant,
dans cet exemple, il convient de choisir East US (Est des États-Unis) pour
l’application Web que vous allez déployer dans l’exercice pratique présenté à la
fin du chapitre.
7 Ne cochez pas la case Enable Geo-Redundancy (Activer la géo-redondance). La
section suivante explique plus en détail comment répliquer votre base de don-
nées à l’échelle mondiale.
8 Sélectionnez Create (Créer). La création de votre compte Cosmos DB prend
quelques minutes.
150 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

Figure 10.6 Créez une base de données


Cosmos DB avec le type de modèle SQL (API).
Lorsque vous créez la base de données, vous
pouvez également activer automatiquement
la géo-redondance dans une région
accouplée, mais nous verrons cela plus
tard dans une prochaine étape.

Pour l’instant, votre base de données est vide. Voyons comment stocker des données de
base pour le menu de votre pizzeria. Dans les bases de données Cosmos DB utilisant le
modèle de document, les données sont regroupées logiquement en conteneurs appelés
collections. Ces collections stockent des éléments de données connexes pouvant être rapi-
dement indexés et interrogés, comme le montre la figure 10.7. Les collections ne sont pas
complètement différentes de l’organisation d’une base de données SQL en tables, mais
elles offrent davantage de flexibilité quant à la distribution des données en termes de per-
formance ou de redondance.

Pizza au Pizza Pizza


pepperoni végétarienne hawaïenne Figure 10.7 Une base de données
Cosmos DB utilisant le modèle de
document stocke les données dans
Collecte des collections. Ces collections vous
permettent de regrouper des données
afin d’accélérer l’indexation et
Base de données de document Cosmos DB
l’interrogation.
Création d’un compte et d’une base de données Cosmos DB 151

Étant donné que Cosmos DB est conçu pour traiter de très grandes quantités de données
et de débit, vous pouvez choisir comment dimensionner et contrôler le flux et le coût de
ces données. Le débit est mesuré en unités de requête par seconde (RU/s), une unité de
requête équivalant à 1 Ko de données de document. En résumé, vous déterminez la quan-
tité de bande passante souhaitée pour votre base de données. Si vous ne l’avez pas déjà
deviné, plus vous voulez de bande passante (RU/s), plus le montant de la facture s’alour-
dira. Cosmos DB vous indique la quantité de données exploitées, ainsi que le débit utilisé
par votre application. Vous n’avez généralement pas à vous soucier du dimensionnement.
Concernant votre pizzeria, évitons de voir trop grand!

Essayer maintenant
Pour créer une collection et ajouter des entrées dans la base de données, procédez
comme suit, comme le montre la figure 10.8.

Figure 10.8 Créez une


collection pour contenir les
éléments du menu de votre
pizzeria. Vous pouvez choisir la
quantité de stockage à réserver,
ainsi que la quantité de bande
passante (RU/s) que votre
application utilisera.
152 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

1 Accédez à la barre de navigation sur le côté gauche du portail Azure et sélec-


tionnez Groupe de ressources. Choisissez le groupe de ressources dans lequel
vous avez créé votre base de données Cosmos DB, par exemple azuremolchap-
ter10.
2 Sélectionnez votre compte Cosmos DB dans la liste des ressources, puis choisis-
sez la page Overview (Vue d’ensemble).
3 En haut de la vue d’ensemble du compte Cosmos DB, choisissez Add Collection
(Ajouter une collection).
4 Étant donné qu’il s’agit de votre première base de données, choisissez Create
New (Créer nouveau), puis saisissez un nom, par exemple pizzadb.
5 Dans le champ Collection ID (ID de la collection), saisissez pizzas. Un conte-
neur logique est alors créé et vous pouvez l’utiliser pour stocker les éléments du
menu de votre pizzeria.
6 Sous Storage Capacity (Capacité de stockage), choisissez Fixed (10 GB) [Fixe
(10 Go)]. Vous créez ainsi une base de données équilibrée et définissez une
plus petite quantité de bande passante (RU/s), ce qui vous permet de réduire
vos coûts d’exploitation.
7 Laissez le champ Throughput (Débit) réglé sur la valeur par défaut.
8 Ne choisissez pas Add Unique Key (Ajouter une clé unique). Les clés per-
mettent de définir le conteneur de façon encore plus logique, par exemple
pour les sous-sections de plats que les clients peuvent commander. La collection
la plus vaste correspond à votre carte, mais vous souhaiterez peut-être disposer
de clés de partition pour les pizzas, les boissons et les desserts.
9 Pour créer la base de données et la collection, sélectionnez OK.
Vous possédez désormais un compte Cosmos DB, une base de données et une collection,
mais cette dernière ne contient toujours pas vos pizzas. Vous pouvez importer des don-
nées ou écrire du code qui entre un ensemble de données. Nous allons maintenant créer
manuellement trois pizzas afin de découvrir certains des outils graphiques intégrés dans le
portail Azure pour la navigation, l’interrogation et la manipulation des données dans
votre base Cosmos DB.

Essayer maintenant
Pour créer une collection et ajouter des entrées dans la base de données, procédez
comme suit, comme le montre la figure 10.9.

1 Dans votre compte Cosmos DB, accédez au menu situé dans la partie gauche de
la fenêtre Overview (Vue d’ensemble), puis choisissez Data Explorer (Explora-
teur de données).
2 Développez la base de données pizzadb, puis la collection pizzas.
3 Pour ajouter des données, choisissez Documents > New Document (Nouveau
document).
4 Les données sont ajoutées au format JSON. Dans la zone de texte, saisissez les
données suivantes pour ajouter une pizza au pepperoni classique à la carte :
{
"description": "Pepperoni",
"cost": "18"
}
Pour ajouter les données à la base de données, sélectionnez Save (Enregistrer).
Création d’un compte et d’une base de données Cosmos DB 153

Figure 10.9 Avec l’Explorateur de données du portail Azure, vous pouvez parcourir vos collections afin
d’interroger ou de créer de nouveaux documents. Cet outil graphique vous permet de gérer rapidement
votre base de données depuis un navigateur Web.

5 Ajoutez une nouvelle pizza à votre carte. Cette fois-ci, ajoutez une propriété
pour indiquer que la pâte de cette pizza ne contient pas de gluten. Vous n’avez
pas besoin de toucher à la base de données sous-jacente; il vous suffit d’ajouter
une autre propriété à vos données. Sélectionnez de nouveau New Document
(Nouveau Document), puis saisissez les données suivantes et sélectionnez Save
(Enregistrer) :
{
"description": "Veggie",
"cost": "15",
"gluten": "free"
}
6 Ajoutez un dernier type de pizza. Cette fois, ajoutez une propriété incluant les
garnitures de la pizza. Sélectionnez de nouveau New Document (Nouveau
Document), puis saisissez les données suivantes et sélectionnez Save
(Enregistrer) :
{
"description": "Hawaiian",
"cost": "12",
"toppings": "ham, pineapple"
}
Ces trois entrées montrent toute la puissance d’une base de données NoSQL. Vous avez
ajouté des propriétés aux entrées sans avoir à modifier le schéma de la base de données.
Deux propriétés différentes ont permis d’indiquer que la pâte de la pizza végétarienne est
sans gluten et quelle est la garniture de la pizza Hawaïenne. Cosmos DB accepte ces pro-
priétés supplémentaires et ces données sont désormais disponibles pour vos applications.

10.2.2 Ajout d’une redondance mondiale à une base de données Cosmos DB


Vous disposez désormais d’une base de données Cosmos DB qui stocke une carte de piz-
zas classique dans la région Est des États-Unis. Cependant, votre pizzeria s’apprête à ouvrir
des franchises dans le monde entier! Vous souhaitez répliquer les données de vos pizzas
dans des régions Azure dans différentes zones, à proximité de votre nouvelle clientèle.
154 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

Pourquoi procéder ainsi? Si tous vos clients lisent et écrivent des données depuis la
base de données dans une région, cela entraîne l’acheminement d’un trafic potentiel
considérable sur les câbles sous-marins et à travers le monde. Afin d’offrir à vos clients la
meilleure expérience à faible latence, vous pouvez répliquer vos données dans les régions
Azure dans le monde entier, et les clients peuvent ainsi se connecter au réplica le plus
proche, comme le montre la figure 10.

Cosmos DB Los Angeles,


(Europe du Nord) États-Unis

Cosmos DB (ouest Melbourne,


des États-Unis) Australie
Cosmos DB
(est des
États-Unis)
Cosmos DB
Paris, France
Région d’écriture (Extrême-Orient)
principale
Données Cosmos DB
Kuala Lumpur,
répliquées dans (sud-ouest de
Malaisie
plusieurs régions l’Australie)
Les clients
Garanes de interrogent et lisent
cohérence pour les Cosmos DB de la
données Cosmos DB région la plus proche

Figure 10.10 Les données sont répliquées d’une instance principale Cosmos DB vers plusieurs
régions Azure à travers le monde. Les applications Web peuvent ensuite être dirigées pour lecture
depuis la région la plus proche, puis les clients sont dirigés dynamiquement vers l’emplacement le
plus proche, afin de réduire la période de latence et d’améliorer les temps de réponse.

Les modèles de cohérence et les garanties sont intégrés dans la plate-forme Cosmos DB
pour gérer la cohérence et la réplication des données à votre place. Vous désignez une ou
plusieurs régions comme emplacement d’écriture principal. Les exemples présentés dans
le présent livre utilisent un point d’écriture unique, mais vous pouvez vous servir de la
prise en charge multimaître pour écrire des données au point de terminaison le plus
proche, et celles-ci seront ensuite propagées de manière asynchrone dans d’autres
régions. Les données sont également répliquées rapidement dans les régions de lecture
de votre choix. Vous pouvez contrôler l’ordre de basculement, afin de désigner les régions
de lecture puis, avec votre application, déterminer automatiquement ou manuellement
les régions depuis lesquelles lire.
Vous pouvez définir un modèle de cohérence (qui s’apparente en réalité davantage à
un aspect conceptuel plutôt qu’opérationnel) qui définit la rapidité de la réplication des
écritures dans plusieurs régions. Les modèles de cohérence vont de fort, qui attend que les
écritures répliquées soient confirmées par des réplicas et qui garantit donc que les lec-
tures sont cohérentes, à final, qui est un modèle plus souple. Celui-ci garantit la réplica-
Création d’un compte et d’une base de données Cosmos DB 155

tion de toutes les données, mais il peut exister un léger retard lorsque les lectures des
réplicas renvoient des valeurs différentes, jusqu’à ce qu’elles soient toutes synchronisées.
Il existe un équilibre entre une distribution géographique plus limitée, comme avec le
modèle de cohérence fort, et une réplication géographique plus large avec le modèle de
cohérence final, en n’oubliant pas le léger retard qui survient lors de la réplication des
données. Il convient aussi de prendre en compte les coûts de traitement et de bande pas-
sante, selon la cohérence et la rapidité souhaitées en matière de réplication des données.
La plate-forme Azure gère la réplication sous-jacente des données depuis votre point
d’écriture; vous n’avez pas besoin de créer vos applications pour répliquer les données, ni
de déterminer la meilleure façon de lire les données depuis des points de terminaison
répliqués.
À l’échelle mondiale, cela signifie que vous pourriez avoir plusieurs machines vir-
tuelles ou applications Web, telles que celles que vous avez créées aux chapitres précé-
dents, mais dans différentes régions à travers le monde. Ces applications se connectent à
une instance locale Cosmos DB afin d’interroger et de lire l’ensemble de leurs données.
Grâce à certaines fonctions Azure intéressantes en termes de trafic réseau, que nous abor-
derons au prochain chapitre, les utilisateurs peuvent être dirigés automatiquement vers
l’une de ces instances locales d’application Web, qui utilisent également une instance
locale Cosmos DB. En cas de maintenance ou de pannes au niveau régional, l’ensemble
de la plate-forme dirige le client vers l’instance suivante la plus proche.
Dans l’univers des bases de données structurées classiques, où vous gérez vos machines
virtuelles, l’installation des bases de données et la configuration des grappes, une telle
configuration demande une planification rigoureuse et son implémentation est compli-
quée. Avec Cosmos DB, il suffit de trois clics de la souris. Vraiment!

Essayer maintenant
Pour répliquer vos données Cosmos DB à l’échelle mondiale, procédez comme suit.

1 Accédez à la barre de navigation sur le côté gauche du portail Azure et sélec-


tionnez Groupe de ressources. Choisissez le groupe de ressources dans lequel
vous avez créé votre base de données Cosmos DB, par exemple azuremolchap-
ter10.
2 Dans la liste des ressources, sélectionnez votre compte Cosmos DB. Ces deux
clics de la souris n’entrent pas dans le compte, mais nous allons commencer à
compter à partir d’ici!
3 Dans la page Overview (Vue d’ensemble), la carte des régions indique que
votre base de données est actuellement disponible dans la région East US (Est
des États-Unis). Sélectionnez la carte pour ouvrir la fenêtre Replicate Data Glo-
bally (Répliquer les données à l’échelle mondiale).
4 La carte affiche toutes les régions Azure disponibles, comme le montre la
figure 10.11. Choisissez West Europe (Europe de l’Ouest), puis sélectionnez
Save (Enregistrer). Bien que vous puissiez sélectionner la région Azure de votre
choix, pour l’exercice pratique présenté à la fin du chapitre, les données
doivent être répliquées dans la région Europe de l’Ouest. La réplication des
données dans la région choisie et leur mise en ligne afin qu’elles puissent être
utilisées par vos applications prennent quelques instants.
156 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

Figure 10.11 Sélectionnez une région Azure dans le monde pour répliquer
votre base de données Cosmos DB, puis choisissez Save (Enregistrer). Voici
toutes les étapes nécessaires pour distribuer vos données dans le monde.

Parfait, vous pouvez maintenant compter le nombre de clics! Trois, n’est-ce pas? Soyons
généreux et comptabilisons les deux premiers clics servant à sélectionner le groupe de res-
sources et le compte Cosmos DB. En cinq clics et quelques secondes seulement, vous avez
créé un réplica d’instance de votre base de données, qui permet à vos applications d’accé-
der aux données de la région la plus proche. Une grappe MySQL classique vous permet-
elle de faire cela? Si vous arrivez à effectuer cette opération aussi rapidement en dehors de
Cosmos DB, n’hésitez pas à m’envoyer un tweet (@fouldsy)!
Maintenant que votre base de données est distribuée mondialement, devez-vous modi-
fier considérablement votre code pour déterminer à quelle région Cosmos DB se connec-
ter? Comment pouvez-vous gérer toutes ces versions différentes de vos applications selon
la région Azure dans laquelle elles sont exécutées? Rien de plus simple : laissez la plate-
forme Azure les gérer à votre place!

10.3 Accès aux données distribuées mondialement


Dans la plupart des cas, la plate-forme Azure détermine le meilleur emplacement pour
vos applications. Une application doit généralement lire et écrire des données. Vous pou-
vez déterminer les stratégies de basculement pour votre base de données Cosmos DB, qui
contrôle l’emplacement d’écriture principal. Cet emplacement d’écriture agit comme le
Accès aux données distribuées mondialement 157

concentrateur central, pour s’assurer que les données sont systématiquement répliquées
dans les différentes régions. Cependant, votre application Web peut alors généralement
lire depuis plusieurs régions disponibles afin d’accélérer les requêtes et de retourner les
données au client, comme le montre la figure 10.10. Toutes ces opérations sont gérées par
les appels REST.
Voyons ce qui se passe depuis la CLI Azure lorsque vous demandez des informations
sur une base de données Cosmos DB. L’opération se déroule comme pour la connexion
d’une application à une base de données, mais vous n’êtes pas autorisé à aller trop loin
dans le code.

Essayer maintenant
Utilisez la commande az cosmosdb show pour rechercher des informations concernant
votre emplacement de lecture et d’écriture, comme indiqué ci-après.

Ouvrez le portail Azure dans un navigateur Web, puis ouvrez le Cloud Shell. Utilisez la
commande az cosmosdb show pour afficher les emplacements de lecture et d’écriture de
votre base de données Cosmos DB. Entrez le nom du groupe de ressources et de la base
de données que vous avez créés dans les exercices « Essayer maintenant » précédents.
Dans l’exemple suivant, le groupe de ressources est azuremolchapter10 et le nom de la
base de données Cosmos DB est azuremol :
az cosmosdb show \
--resource-group azuremolchapter10 \
--name azuremol

Le résultat renvoyé par cette commande étant conséquent, examinons les deux parties
principales : les emplacements de lecture et les emplacements d’écriture. Voici un
exemple de résultat pour la section readLocations :
"readLocations": [
{
"documentEndpoint":"https://azuremol-eastus.documents.azure.com:443/",
"failoverPriority": 0,
"id": "azuremol-eastus",
"locationName": "East US",
"provisioningState": "Succeeded"
},
{
"documentEndpoint":
"https://azuremol-westeurope.documents.azure.com:443/",
"failoverPriority": 1,
"id": "azuremol-westeurope",
"locationName": "West Europe",
"provisioningState": "Succeeded"
}
],

Lorsque votre application établit une connexion à une base de données Cosmos DB, vous
pouvez spécifier une stratégie de connexion. Si les bases de données ne sont pas votre fort,
pensez à une connexion ODBC classique que vous pouvez créer sur un ordinateur Win-
dows. La chaîne de connexion définit généralement un nom d’hôte, un nom de base de
données, un port et des informations d’identification. Il en va de même pour Cosmos DB.
Vous pouvez vous connecter à Cosmos DB à partir de plusieurs langages, notamment
158 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

.NET, Python, Node.js et Java. Les langages peuvent varier, mais tous les kits de développe-
ment logiciel partagent un paramètre identique : la détection des points de terminaison.
Deux des principales propriétés de la stratégie de connexion sont importantes :
 Détection automatique des points de terminaison :le kit de développement logiciel lit
tous les points de terminaison disponibles depuis Cosmos DB et utilise l’ordre
de basculement indiqué. Cette approche garantit que votre application res-
pecte toujours l’ordre que vous spécifiez au niveau de la base de données. Par
exemple, peut-être souhaitez-vous que toutes les lectures passent par l’Est des
États-Unis et utilisent uniquement la région Europe de l’Ouest en cas de main-
tenance dans l’emplacement principal.
 Emplacements de point de terminaison préférés :vous spécifiez les emplacements que
vous souhaitez utiliser. Cela peut être utile, par exemple, lorsque vous déployez
votre application dans la région Europe de l’Ouest et que vous souhaitez vous
assurer que vous utilisez le point de terminaison correspondant. Vous perdez
un peu en souplesse lors de l’ajout ou de la suppression de points de terminai-
son, mais vous vous assurez que votre point de terminaison par défaut est
proche de votre application, sans avoir à utiliser un routage réseau plus avancé
pour le déterminer.
En règle générale, votre application laisse le kit de développement logiciel Cosmos DB
gérer cette tâche. Votre application ne modifie pas la façon dont elle gère la connexion à
la base de données : elle sait seulement qu’il existe plusieurs emplacements auxquels elle
peut se connecter. Mais c’est le kit de développement logiciel qui se charge d’établir la
connexion et utilise cette détection de l’emplacement.
La figure 10.12 illustre une approche simplifiée de l’utilisation de cette détection de
l’emplacement entre votre application et le kit de développement logiciel. Encore une
fois, quel que soit le langage utilisé, l’approche reste identique. La figure prend l’exemple
du kit de développement logiciel Python, car certains des exemples ont été écrits dans ce
langage. Cet exemple part également du principe que vous utilisez des emplacements de
point de terminaison automatiques.

Azure
2. Demande d’emplacements Cosmos DB
de point de terminaison
1. Demande de automaques
connexion 3. Connexion et
Trousse de emplacements retournés
4. Connexion retournée développe-
Applicaon ment logiciel
Web 5. Demande de données Cosmos DB 6. Demande de données
Python du point de terminaison
8. Données retournées principal

Azure Cosmos
7. Données envoyées du
DB (lecture
point de terminaison de
principale)
lecture principal

Figure 10.12 Flux des requêtes via un kit de développement logiciel Cosmos DB
lorsqu’une application utilise la détection de l’emplacement pour interroger Cosmos DB
Accès aux données distribuées mondialement 159

Les étapes illustrées à la figure 10.12 sont les suivantes :


1 Votre application doit établir une connexion à une base de données Cosmos
DB. Dans la stratégie de connexion, vous activez la détection automatique des
points de terminaison. L’application utilise le kit de développement logiciel
Cosmos DB pour établir une connexion à la base de données.
2 Le kit de développement logiciel Cosmos DB effectue une demande de
connexion et indique qu’il souhaite utiliser les emplacements de point de ter-
minaison automatiques.
3 Une connexion est renvoyée selon les informations d’identification et la base
de données demandée.
4 Le kit de développement logiciel renvoie un objet de connexion que l’applica-
tion peut utiliser. Les informations d’emplacement sont extraites de l’applica-
tion.
5 L’application demande des données de la base de données Cosmos DB. Le kit
de développement logiciel est de nouveau utilisé pour interroger et obtenir les
données.
6 Le kit de développement logiciel utilise la liste des points de terminaison dispo-
nibles et effectue la demande auprès du premier point de terminaison dispo-
nible. Le kit de développement logiciel utilise ensuite le point de terminaison
de connexion pour interroger les données. Si le point de terminaison principal
n’est pas disponible, en cas de maintenance par exemple, l’emplacement du
point de terminaison suivant est automatiquement utilisé.
7 Cosmos DB renvoie les données depuis l’emplacement du point de terminai-
son.
8 Le kit de développement logiciel transmet les données depuis Cosmos DB à
l’application pour les analyser et les afficher, le cas échéant.
Avant d’en finir avec Cosmos DB, nous devons encore voir les clés d’accès. Ces clés vous
permettent de contrôler qui peut accéder aux données, ainsi que les autorisations qui
leurs sont concédées. Les clés peuvent être générées de nouveau et, comme pour les mots
de passe, il est recommandé de mettre en place une stratégie afin d’effectuer régulière-
ment ce processus de régénération. Pour accéder aux données distribuées dans Cosmos
DB, vous devez préalablement obtenir vos clés. Le portail Azure permet d’afficher
l’ensemble des clés et des chaînes de connexion de votre base de données.

Essayer maintenant
Pour afficher les clés de votre compte Cosmos DB, procédez comme suit.

1 Accédez à la barre de navigation sur le côté gauche du portail Azure et sélec-


tionnez Groupe de ressources. Choisissez le groupe de ressources dans lequel
vous avez créé votre base de données Cosmos DB, par exemple azuremolchap-
ter10.
2 Dans la liste des ressources, sélectionnez votre compte Cosmos DB.
3 À gauche, choisissez Keys (Clés). Notez l’URI et la clé primaire, comme le
montre la figure 10.13 Vous utiliserez ces valeurs dans l’exercice pratique pré-
senté à la fin du chapitre.
160 CHAPITRE 10 Bases de données mondiales avec Cosmos DB

Figure 10.13 La section Keys (Clés) de votre compte Cosmos DB répertorie les informations de connexion,
ainsi que les clés d’accès. Ces informations sont nécessaires quand vous développez et exécutez des
applications, par exemple dans l’exercice pratique présenté à la fin du chapitre.

Dans Cosmos DB, afin de distribuer vos données et de permettre à vos applications de lire
et d’écrire depuis les emplacements les plus appropriés, de nombreuses opérations sont
exécutées en arrière-plan. Et c’est là tout l’intérêt. Connaître toutes les possibilités offertes
par le service Cosmos DB facilite la conception et la planification de votre application,
ainsi que la résolution des problèmes si vous essayez d’effectuer une demande d’écriture
directement à un emplacement erroné, plutôt que de passer par le kit de développement
logiciel pour l’échange d’informations. Mais vous n’avez pas à vous préoccuper du pour-
quoi et du comment; concentrez-vous uniquement sur vos applications et utilisez les ser-
vices Azure tels que Cosmos DB pour vous fournir la fonctionnalité et les avantages de
l’infonuagique qui vous permettent d’opérer à l’échelle mondiale.

10.4 Exercice pratique : déploiement d’une application Web


utilisant Cosmos DB
Dans la section 10.2.2, vous avez distribué votre base de données Cosmos DB à l’échelle
mondiale. Nous avons ensuite abordé divers aspects théoriques sur la manière dont les
applications Web peuvent lire depuis différents emplacements à travers le monde. Mais
vous voulez certainement passer à la pratique. C’est le moment! Dans cet exercice, une
application Web de base utilise une liste d’emplacements des points de terminaison préfé-
rés, afin de forcer l’emplacement de lecture dans une région différente de celle du point
de terminaison d’écriture. Il suffit d’inclure une seule ligne de code dans la politique de
connexion pour permettre à l’application de lire à partir d’une base de données sur un
autre continent :
1 Dans le portail Azure, créez une application Web, puis créez une source de
déploiement (référentiel Git local). Les étapes sont identiques à celles que vous
avez pu suivre lorsque vous en avez créé une aux chapitres précédents (au
chapitre 3, par exemple). N’hésitez pas à revenir sur ces exercices pour vous
rafraîchir la mémoire.
Exercice pratique : déploiement d’une application Web utilisant Cosmos DB 161

2 Ouvrez Cloud Shell. Dans les chapitres précédents, vous avez obtenu une copie
des échantillons Azure sur GitHub. Dans le cas contraire, saisissez une copie
comme suit :
git clone https://github.com/fouldsy/azure-mol-samples.git
3 Passez au répertoire contenant l’exemple d’application Web Cosmos DB :
cd ~/azure-mol-samples/10/cosmosdbwebapp
4 Pour afficher vos clés Cosmos DB, modifiez le fichier de configuration avec la
clé d’accès et l’URI de la base de données que vous avez copiées dans l’exercice
« Essayer maintenant » précédent :
nano config.js

5 Ajoutez et validez vos modifications dans Git avec la commande suivante :


git init && git add . && git commit -m "Pizza"
6 Créez un lien vers le nouveau référentiel Git dans votre emplacement de test
avec git remote add azure, suivi de votre URL de déploiement Git.
7 Utilisez la commande git push azure master pour déplacer vos modifications
dans votre application Web.
8 Sélectionnez l’URL de votre application Web dans la fenêtre Overview (Vue
d’ensemble) du portail Azure.
9 Ouvrez cette URL dans un navigateur Web pour consulter votre pizzeria, désor-
mais gérée par Cosmos DB, ainsi que l’emplacement à partir duquel vos don-
nées ont été renvoyées, comme le montre la figure 10.14.

Figure 10.14 L’application Web Azure de base affiche votre carte des pizzas sommaire, en se basant
sur le contenu de la base de données Cosmos DB. Le point de terminaison d’écriture est indiqué comme
étant East US (Est des États-Unis), tandis que vous avez utilisé une liste d’emplacements préférés afin
de définir West Europe (Europe de l’Ouest) comme point de terminaison de lecture principal. Cette
approche vous permet de sélectionner des emplacements au fur et à mesure que vous déployez votre
application à l’échelle mondiale, sans nécessiter de routage complexe du trafic.
Gestion du trafic réseau
et du routage

La résolution DNS (Domain Name Service) est au cœur de presque toutes les
connexions numériques que vous effectuez. C’est grâce à ce service que vous pouvez
naviguer sur le Web, recevoir des courriels, regarder Netflix et effectuer des appels via
Skype. DNS est le mécanisme qui convertit un nom, tel que manning.com, en adresse
IP. Quand je veux découvrir de nouvelles choses, je n’ai pas besoin de me souvenir de
l’adresse 35.166.24.88 : je tape simplement manning.com dans un navigateur Web et je
parcoure quelques livres! Dans la mesure où les périphériques réseau acheminent le
trafic en fonction des adresses IP, vous avez donc besoin d’une approche qui aide ceux
d’entre nous qui ont une mauvaise mémoire à effectuer des opérations comme acheter
des livres ou une pizza en ligne.
Dans les derniers chapitres, nous avons consacré beaucoup de temps à apprendre
comment créer des applications évolutives, hautement disponibles et distribuées dans
le monde entier. Une des dernières pièces manquantes est de savoir comment diriger
les clients du monde entier vers l’instance de l’application la plus appropriée, générale-
ment celle qui se trouve le plus près d’eux. Azure Traffic Manager facilite le routage
automatique des clients vers vos instances d’application en fonction de la performance
ou de l’emplacement géographique. Dans ce chapitre, nous allons expliquer comment
créer et gérer des zones DNS dans Azure, puis comment utiliser Traffic Manager pour
acheminer les clients avec des requêtes DNS, comme le montre la figure 11.1.

11.1 Qu’est-ce qu’Azure DNS?


Vous n’avez pas besoin de comprendre en profondeur comment fonctionne le service
DNS pour suivre ce chapitre et utiliser Azure DNS. La figure 11.2 donne un aperçu
général de la façon dont un utilisateur interroge un service DNS pour obtenir
l’adresse IP d’une application Web. De nombreuses sous-étapes pourraient se pro-

162
Qu’est-ce qu’Azure DNS? 163

Client
Londres

Internet

Le client est acheminé vers


Azure Traffic l’instance d’applicaon la
Manager mieux adaptée en foncon
Requêtes DNS pour localiser la des réponses Traffic
cible appropriée en foncon de Manager DNS
l’emplacement du client et de la
méthode d’acheminement

Régions Azure
Zone Azure DNS
azuremol.com Région de l’est des Région de l’Europe
États-Unis de l’Ouest

eastus.azuremol.com westeurope.azuremol.com Machine Machine


virtuelle Web 1 virtuelle Web 2
A 53.17.91.8 A 102.42.9.67 53.17.91.8 102.42.9.67

Figure 11.1 Dans ce chapitre, nous allons examiner comment créer des zones DNS dans Azure DNS. Pour
minimiser la latence et améliorer les temps de réponse, Traffic Manager peut ensuite être utilisé pour exécuter
des requêtes DNS et diriger les clients vers l’instance d’application la plus proche.
duire autour des étapes 1 et 2, donc s’il vous reste un peu de temps pendant votre pause
déjeuner à la fin de ce chapitre, n’hésitez pas à vous renseigner sur le fonctionnement
des requêtes et de la récursivité DNS.
Azure DNS fonctionne de la même manière que toutes les solutions DNS existantes que
vous pouvez utiliser ou que vous connaissez peut-être. Votre zone et vos enregistrements
sont stockés dans Azure et les serveurs de noms qui répondent aux requêtes DNS sont
répartis dans des centres de données Azure à travers le monde.

Client

1. Requêtes DNS pour 3. Se connecte à


www.azuremol.com 2. Enregistrement d’hôte l’adresse IP publique de
retourné : 53.17.91.8 l’applicaon dans Azure

Infrastructure Azure

Applicaon Web
Azure DNS
53.17.91.8

Figure 11.2 Ce flux simplifié de trafic DNS montre comment un


utilisateur envoie une requête DNS pour www.azuremol.com à un
serveur DNS, reçoit une réponse contenant l’adresse IP associée, puis
peut se connecter à l’application Web.
164 CHAPITRE 11 Gestion du trafic réseau et du routage

Azure DNS prend en charge tous les types d’enregistrements que vous attendez de la part
d’une offre de service DNS standard. Il est possible de créer des enregistrements IPv4 et
IPv6. Les types d’enregistrement sont les suivants :
 A : enregistrements d’hôte IPv4, pour diriger les clients vers vos applications et
services
 AAAA : enregistrements d’hôte IPv6, pour les entreprises modernes qui utilisent
IPv6 pour diriger les clients vers leurs applications et services
 CNAME : nom canonique ou alias, enregistrements à même de fournir un nom
court plus facile à utiliser que le nom d’hôte complet d’un serveur
 MX : enregistrements MX (Mail Exchange) pour acheminer le trafic de courrier
électronique vers votre fournisseur ou vos serveurs de messagerie
 NS : enregistrements du serveur de noms, qui incluent les enregistrements générés
automatiquement pour les serveurs de noms Azure
 PTR : enregistrements du pointeur, pour les requêtes DNS inversées afin de faire
correspondre les adresses IP aux noms d’hôtes
 SOA : enregistrements Start-of-Authority , qui incluent les enregistrements générés
automatiquement pour les serveurs de noms Azure
 SRV : enregistrements de service, pour permettre la découverte de services réseau,
par exemple pour l’identité
 TXT : enregistrements de texte, notamment pour SPF (Sender Protection
Framework) ou DKIM (DomainKeys Identified Mail)
Dans une configuration DNS standard, vous configurez plusieurs serveurs DNS. Même
avec la distribution géographique de ces serveurs à des fins de redondance, les clients
peuvent interroger un serveur de noms à l’autre bout du monde. Ces millisecondes néces-
saires pour interroger, résoudre, puis demander une réponse pour l’application Web
peuvent s’additionner lorsque de nombreux clients veulent commander une pizza.
Une zone Azure DNS est répliquée à l’échelle mondiale entre les centres de données
Azure. Le réseau Anycast garantit que lorsqu’un client effectue une requête DNS vers votre
domaine, le serveur de noms disponible le plus proche réponde à sa demande. Comment
le routage anycast y parvient-il? En général, une seule adresse IP est communiquée dans
plusieurs régions à la fois. Plutôt qu’une simple requête DNS qui résout une adresse IP
unique n’existant qu’à un seul emplacement, le routage anycast permet à l’infrastructure
réseau de déterminer de façon intelligente l’origine d’une requête et d’acheminer le
client vers la région communiquée la plus proche. Ce routage permet à vos clients de se
connecter à votre application Web plus rapidement et améliore globalement leur expé-
rience.
Vous n’avez pas besoin d’être un expert en réseau pour bien comprendre comment
cela fonctionne : Azure gère l’opération à votre place! Si vous combinez Azure DNS avec
Azure Traffic Manager, que nous allons aborder à la section suivante, non seulement vous
renvoyez des requêtes DNS à partir des serveurs de noms les plus proches, mais vous
connectez également les clients à l’instance d’application la plus proche. Faites en sorte
que ces millisecondes comptent!
Qu’est-ce qu’Azure DNS? 165

11.1.1 Délégation d’un domaine réel à Azure DNS


Lorsque vous enregistrez un domaine réel, votre fournisseur vous fournit une interface de
gestion et des outils pour gérer ce domaine. Pour permettre aux clients d’accéder à vos
services et d’utiliser les enregistrements ainsi que la zone Azure DNS, vous déléguez
l’autorité de votre domaine aux serveurs de noms Azure. Grâce à cette délégation, toutes
les requêtes DNS sont immédiatement dirigées vers ces serveurs de noms Azure, comme
le montre la figure 11.3. Azure ne vous permet pas actuellement d’acheter et d’enregistrer
des domaines dans la plate-forme. Vous devez donc acheter le nom de domaine par
l’intermédiaire d’un bureau d’enregistrement externe, puis pointer les enregistrements
NS sur les serveurs de noms Azure.
Fournisseur configuré avec
des serveurs de noms Azure
pour déléguer votre domaine
à Azure DNS
ns1.azure-dns.com
Fournisseur de nom
de domaine Zone DNS
NS ns1.azure-dns.com.
Client
NS ns2.azure-dns.net. Enregistrement d’hôte
Requête Le fournisseur
NS ns3.azure-dns.org.
DNS pour transmet
votre NS ns4.azure-dns.info. toutes les www A 53.17.91.8
domaine requêtes à
Azure DNS

Figure 11.3 Pour déléguer votre domaine à Azure, configurez votre fournisseur de domaine actuel avec les
adresses de serveur de nom Azure. Lorsqu’un client effectue une requête DNS pour votre domaine, les
requêtes sont envoyées directement aux serveurs de noms Azure de votre zone.

Pourquoi déléguer votre DNS à Azure? Pour simplifier la gestion et les opérations. Qu’il
s’agisse de créer des services supplémentaires, d’ajuster la configuration de l’équilibreur
de charge ou d’améliorer les temps de réponse avec un DNS répliqué dans le monde
entier, l’interface de gestion unique fournie par Azure permet d’effectuer ces tâches.
Lorsque vos zones DNS sont hébergées dans Azure, vous pouvez également installer cer-
taines des fonctions de sécurité du Resource Manager décrites au chapitre 6 : ces fonctions
comprennent, par exemple, le contrôle d’accès en fonction des rôles (RBAC) pour limiter
et auditer l’accès aux zones DNS, ainsi que les verrous de ressources pour empêcher la sup-
pression accidentelle, voire malveillante, de zone.
La plupart des bureaux d’enregistrement de domaines fournissent des interfaces et
des contrôles plutôt basiques pour gérer les zones et les enregistrements DNS. Pour
réduire la surcharge de gestion et améliorer la sécurité, Azure DNS vous permet d’utiliser
Azure CLI, Azure PowerShell ou les API REST pour ajouter ou modifier des enregistre-
ments. Les équipes en charge des opérations peuvent utiliser les mêmes outils et flux de
travail pour les nouveaux services embarqués; si des problèmes se produisent, le dépan-
nage est souvent plus facile si vous pouvez vérifier que le service DNS fonctionne comme
prévu sans introduire la variable d’un fournisseur DNS tiers.
En conséquence, si vous êtes convaincu qu’il est logique de déléguer votre domaine à
Azure DNS, vers quel serveur de nom Azure devez-vous faire pointer votre domaine? Si
vous créez une zone Azure DNS, les serveurs de noms sont répertoriés dans le portail,
comme le montre la figure 11.4. Vous pouvez également accéder à ces adresses de serveur
de noms avec Azure CLI ou Azure PowerShell.
166 CHAPITRE 11 Gestion du trafic réseau et du routage

Figure 11.4 Vous pouvez afficher les serveurs de noms Azure de votre zone DNS dans le portail Azure, Azure
CLI ou Azure PowerShell.

Il n’y a pas d’exercice « Essayer maintenant » pour ces dernières pages, car à moins que
vous n’achetiez et configuriez un domaine réel, vous ne pouvez pas tester la méthode
pour acheminer le trafic réel. Vous pouvez créer une zone Azure DNS sans domaine réel,
mais aucun trafic ne peut y être acheminé. En situation réelle, vous mettez à jour les enre-
gistrements NS avec votre fournisseur actuel pour pointer toutes les requêtes de votre
domaine vers les serveurs de noms Azure. La propagation de la délégation de votre
domaine dans toute la hiérarchie DNS mondiale peut prendre de 24 à 48 heures (bien
qu’elle nécessite généralement beaucoup moins de temps); il convient donc de prendre
les dispositions nécessaires, car elle peut causer de brèves interruptions pour les clients
qui accèdent à votre application.

11.2 Routage mondial et résolution avec Traffic Manager


Dans les chapitres précédents, vous en avez appris davantage sur les applications haute-
ment disponibles distribuées dans le monde entier. Le but ultime est que plusieurs ins-
tances de machines virtuelles ou d’applications Web, dans différentes régions ou
continents, se connectent à une instance Cosmos DB proche. Mais comment faire pour
que vos clients se connectent à la machine virtuelle ou à l’application Web exécutant votre
application la plus proche?
Azure Traffic Manager est un service réseau qui fonctionne comme une destination
centrale pour vos clients. Nous allons utiliser l’exemple d’une application Web disponible
à l’adresse www.azuremol.com. La figure 11.5 offre une vue d’ensemble de la façon dont
Traffic Manager achemine les utilisateurs vers l’application disponible la plus proche.
Traffic Manager ne joue pas le rôle d’un équilibreur de charge tel que vous l’avez vu au
chapitre 8. Comme le montre la figure 11.5, Traffic Manager achemine le trafic vers une
adresse IP publique. Examinons le flux de trafic d’un peu plus près :
1 L’utilisateur exécute une requête DNS pour www.azuremol.com. Leur serveur
DNS contacte les serveurs de noms pour azuremol.com (qui pourraient être
des serveurs de noms Azure si vous utilisez Azure DNS) et demande l’enregis-
trement pour www.
2 L’hôte www se résout en un enregistrement CNAME qui pointe vers azure-
mol.trafficmanager.net.
3 Le service DNS transmet la requête DNS aux serveurs de noms Azure pour traf-
ficmanager.net.
Routage mondial et résolution avec Traffic Manager 167

1. Le client soumet 2. Résout l’adresse à 3. Interroge Traffic


une demande sur azuremol.trafficmanager.net Manager pour le point
www.azuremol.com de terminaison 4. Traffic Manager examine
Traffic la stratégie de routage,
Client DNS retourne un point de
Manager
terminaison
6. Résout 5. Point de terminaison
eastus.cloudapp.net à retourné comme
53.17.91.8 eastus.cloudapp.net
7. Client
se connecte au Web
applicaon
Machine
virtuelle Web
Est des États-Unis
53.17.91.8

Figure 11.5 Un client envoie une requête DNS à un service DNS pour www.azuremol.com. Le service DNS
transmet la requête à Traffic Manager, qui renvoie un point de terminaison selon la méthode de routage en cours
d’utilisation. Le point de terminaison est résolu en adresse IP, que le client utilise pour se connecter à
l’application Web.

4 Traffic Manager examine ensuite la demande et détermine un point de termi-


naison vers lequel diriger l’utilisateur. L’intégrité et l’état du point de terminai-
son sont examinés, comme avec les équilibreurs de charge Azure. La méthode
de routage utilisée par Traffic Manager est également vérifiée. Les méthodes de
routage que Traffic Manager peut utiliser sont les suivantes :
a Priorité (Priority) : contrôle l’ordre d’accès aux points de terminaison
b Weighted (Pondéré) : distribue le trafic entre les points de terminaison selon une
métrique de pondération assignée
c Performance : routage basé sur la latence des utilisateurs jusqu’au point de terminai-
son afin que l’utilisateur bénéficie du temps de réponse le plus rapide possible
d Geographic (Géographique) : associe les points de terminaison à une région géogra-
phique et dirige vers eux les utilisateurs en fonction de leur emplacement
5 Traffic Manager renvoie le point de terminaison eastus.cloudapp.net au service
DNS.
6 Le service DNS recherche l’enregistrement DNS pour eastus.cloudapp.net et
renvoie le résultat de la requête au client.
7 Grâce à l’adresse IP du point de terminaison qu’il a demandé, le client contacte
directement l’application Web. À ce stade, le trafic pourrait atteindre l’adresse
IP publique d’un équilibreur de charge Azure plutôt que d’une machine vir-
tuelle directement.
Comme vous pouvez le voir, la fonction de Traffic Manager est de déterminer un point de
terminaison pour une application donnée afin de diriger les clients vers celui-ci. Quelques
contrôles d’intégrité surveillent l’état des points de terminaison, s’apparentant aux sondes
d’intégrité des équilibreurs de charge que vous avez étudiés au chapitre 8. En outre, vous
pouvez définir un mécanisme de routage de trafic prioritaire ou pondéré pour répartir les
utilisateurs entre un ensemble de points de terminaison disponibles, de nouveau comme
avec un équilibreur de charge. Traffic Manager dirige généralement le trafic vers un équi-
libreur de charge ou une passerelle Application Gateway Azure, ou vers un déploiement
d’application Web.
168 CHAPITRE 11 Gestion du trafic réseau et du routage

11.2.1 Création de profils dans Traffic Manager


Traffic Manager utilise des profils pour déterminer la méthode de routage à utiliser et les
points de terminaison associés pour une requête donnée. Pour poursuivre sur le thème
d’une application distribuée dans le monde entier abordé aux chapitres précédents, vous
cherchez à ce que vos utilisateurs se servent de l’application Web la plus proche. Si vous
considérez de nouveau les méthodes de routage, il y a deux façons de procéder :
 Routage basé sur les performances : le client est acheminé vers le point de terminai-
son avec la latence la plus faible, par rapport à la source de la requête. Cette
méthode de routage fournit une certaine intelligence et permet toujours à Traf-
fic Manager de diriger le client vers un point de terminaison disponible.
 Routage géographique : le client est toujours acheminé vers un point de terminai-
son donné, en fonction de la source de leur requête. Par exemple, si le client
est aux États-Unis, il est toujours dirigé vers l’est des États-Unis. Cette méthode
de routage vous oblige à définir des régions géographiques à associer à chaque
point de terminaison.
Lorsque vous utilisez le routage géographique, vous contrôlez un peu plus les points de
terminaison utilisés par les clients. Des exigences réglementaires peuvent imposer que les
clients d’un État dans une région donnée utilisent toujours des points de terminaison
dans la même région. Les exercices utilisent des points de terminaison géographiques
pour illustrer un exemple plus concret, car il y a une astuce pour le routage
géographique : vous devez spécifier un profil enfant, et non un point de terminaison direc-
tement.
Le ciel ne vous tombera pas sur la tête si vous utilisez la méthode de routage géogra-
phique avec des points de terminaison, mais la pratique recommandée consiste à utiliser
un autre profil Traffic Manager pour transmettre le trafic vers le point de terminaison
final. Pourquoi? Les régions ne peuvent être associées qu’à un seul profil Traffic Manager.
Dans les chapitres précédents sur la haute disponibilité, vous avez toujours cherché à vous
assurer d’avoir de la redondance. Si vous associez une région à un point de terminaison
donné et vous utilisez le routage géographique, vous n’avez alors aucune option de bascu-
lement en cas de problème au niveau de ce point de terminaison ou si vous effectuez une
maintenance.
Au lieu de cela, les profils enfants imbriqués vous permettent de définir une priorité
qui dirige toujours le trafic vers un point de terminaison sain. Si le point de terminaison
n’est pas sain, le trafic passe à un autre point de terminaison. La figure 11.6 montre que le
trafic bascule vers une autre région, même si vous pouvez également créer plusieurs ins-
tances de l’application Web dans la région Ouest des États-Unis et utiliser une méthode de
routage pondérée sur le profil enfant. Lorsque vous commencez à augmenter le nombre
d’instances de votre environnement d’application, prenez le temps de réfléchir à la meil-
leure façon de fournir une haute disponibilité aux points de terminaison derrière Traffic
Manager. Dans ces exemples, vous créez un basculement entre les régions pour voir claire-
ment les différences de comportement.
Routage mondial et résolution avec Traffic Manager 169

Profil avec la
méthode de routage
géographique

Est des États-Unis Europe de l’Ouest


Profil enfant avec la Profil enfant avec la
méthode de routage méthode de routage
prioritaire prioritaire

Applicaon Web Applicaon Web Applicaon Web Applicaon Web


Est des États-Unis Europe de l’Ouest Est des États-Unis Europe de l’Ouest
Priorité 1 Priorité 100 Priorité 100 Priorité 1

Figure 11.6 Un profil Traffic Manager parent configuré avec la méthode de routage géographique doit
utiliser des profils enfants contenant plusieurs points de terminaison. Ces points de terminaison enfants
peuvent ensuite utiliser le routage prioritaire pour toujours diriger le trafic vers le point de terminaison
préféré. Par exemple, le profil enfant « East US » (Est des États-Unis) envoie toujours le trafic vers le
point de terminaison situé dans la région Est des États-Unis, à condition que le point de terminaison
soit sain. Si le point de terminaison n’est pas sain, le trafic est ensuite dirigé vers la région Europe
occidentale. Sans ce profil enfant, les clients dans l’Est des États-Unis ne pourraient pas basculer vers
un autre point de terminaison et ne pourraient pas accéder à votre application Web.

Essayer maintenant
Pour créer les profils Traffic Manager pour votre application distribuée, procédez comme
suit.
Le reste des exercices utilisent les régions Est des États-Unis et Europe occidentale. Si
vous ne vivez pas dans l’une de ces régions, choisissez une autre région plus appropriée.
Surtout, n’oubliez pas d’être cohérent tout au long des exercices! L’exercice pratique pré-
senté à la fin du chapitre montre comment tout cela s’imbrique et fonctionne ensemble,
mais vous ne serez pas correctement dirigé vers vos applications Web si vous ne vivez
pas en Amérique du Nord ou en Europe et ne modifiez pas les régions en conséquence.

1 Ouvrez le portail Azure, puis sélectionnez l’icône Cloud Shell en haut du


tableau de bord.
2 Créez un groupe de ressources, en spécifiant un nom de groupe de ressources,
par exemple azuremolchapter11, et un emplacement, par exemple eastus :
az group create --name azuremolchapter11 --location eastus
3 Créez le profil Traffic Manager parent. Choisissez d’utiliser la méthode de rou-
tage géographique, puis spécifiez un nom, par exemple azuremol. Le para-
mètre de nom DNS vous indique qu’il doit être unique, saisissez donc un nom
170 CHAPITRE 11 Gestion du trafic réseau et du routage

unique. Le domaine suivant crée le nom d’hôte azuremol.trafficmanager.net,


que vous allez utiliser pour configurer les applications Web dans l’exercice pra-
tique présenté à la fin du chapitre
az network traffic-manager profile create \
--resource-group azuremolchapter11 \
--name azuremol \
--routing-method geographic \
--unique-dns-name azuremol
4 Créez l’un des profils Traffic Manager enfants. Cette fois, utilisez la méthode de
routage prioritaire et le nom eastus, et spécifiez un autre nom DNS unique, par
exemple azuremoleastus :
az network traffic-manager profile create \
--resource-group azuremolchapter11 \
--name eastus \
--routing-method priority \
--unique-dns-name azuremoleastus
5 Créez un autre profil Traffic Manager enfant sous le nom westeurope et un
autre nom DNS unique, par exemple azuremolwesteurope :
az network traffic-manager profile create \
--resource-group azuremolchapter11 \
--name westeurope \
--routing-method priority \
--unique-dns-name azuremolwesteurope
6 Vous avez créé plusieurs fois une application Web maintenant, nous allons donc
utiliser la CLI pour créer rapidement deux plans de service d’application, puis
une application Web dans chaque plan. L’une de ces applications Web se trouve
dans l’Est des États-Unis et l’autre en Europe occidentale. Dans l’exercice pra-
tique présenté à la fin du chapitre, vous téléchargerez des exemples de pages
Web dans ces applications Web; donc, pour l’instant, contentez-vous de créer
les sites Web vides et de les tenir prêts à utiliser un référentiel Git local.
Créez l’application Web dans l’Est des États-Unis comme suit :
az appservice plan create \
--resource-group azuremolchapter11 \
--name appserviceeastus \
--location eastus \
--sku S1

az webapp create \
--resource-group azuremolchapter11 \
--name azuremoleastus \
--plan appserviceeastus \
--deployment-local-git

Créez une deuxième application Web en Europe occidentale :


az appservice plan create \
--resource-group azuremolchapter11 \
--name appservicewesteurope \
--location westeurope \
--sku S1

az webapp create \
Routage mondial et résolution avec Traffic Manager 171

--resource-group azuremolchapter11 \
--name azuremolwesteurope \
--plan appservicewesteurope \
--deployment-local-git

11.2.2 Distribution du trafic vers l’instance la plus proche à l’échelle mondiale


Vous avez créé les points de terminaison et les profils Traffic Manager, mais aucun trafic
ne peut circuler. Si les clients étaient dirigés vers les profils, il n’y aurait aucune association
avec vos points de terminaison. Le schéma illustré à la figure 11.7 montre comment vous
devez associer des points de terminaison à des profils.

Profil avec la
méthode de routage
géographique

Est des États-Unis Europe de l’Ouest


Profil enfant avec la Profil enfant avec
méthode de la méthode de
routage prioritaire routage prioritaire

Applicaon Web Applicaon Web Applicaon Web Applicaon Web


Est des États-Unis Europe de l’Ouest Est des États-Unis Europe de l’Ouest
Priorité 1 Priorité 100 Priorité 100 Priorité 1

Figure 11.7 Dans cette section, vous associez vos points de terminaison aux profils
Traffic Manager et définissez la priorité du trafic à distribuer.

Les premières associations que vous effectuez concernent vos points de terminaison
d’applications Web. N’oubliez pas que pour une haute disponibilité, vous souhaitez que
les deux applications Web soient disponibles pour chaque profil Traffic Manager. Vous uti-
lisez une méthode de routage prioritaire pour diriger tout le trafic vers l’application Web
principale pour chaque profil. Si cette application Web n’est pas disponible, le trafic peut
alors basculer vers le point de terminaison de l’application Web secondaire.
Lorsque vous avez créé les profils Traffic Manager dans la section précédente,
quelques valeurs par défaut ont été utilisées pour les options de contrôle d’intégrité et de
surveillance des points de terminaison. Voyons de plus près quelles sont ces options :
 DNS Time to Live (TTL): 30 seconds [Durée de vie (TTL) du DNS : 30 secondes] : définit
la durée pendant laquelle les réponses DNS de Traffic Manager peuvent être mises
en cache. Une durée de vie courte garantit que le trafic client est acheminé correc-
tement lorsque la configuration de Traffic Manager est mise à jour.
172 CHAPITRE 11 Gestion du trafic réseau et du routage

 Endpoint Monitor Protocol : http (Protocole de surveillance des points de


terminaison : http) : vous pouvez également choisir HTTPS ou une vérification
TCP de base. Comme pour les équilibreurs de charge, les protocoles HTTP ou
HTTPS garantissent que chaque point de terminaison renvoie une réponse HTTP
200 OK.
 Port: 80 (Port : 80) : port à contrôler sur chaque point de terminaison.
 Path: / (Chemin d’accès : /) : par défaut, vérifie la racine du point de terminaison,
mais vous pouvez également configurer une page personnalisée, comme la page de
contrôle de l’intégrité utilisée par les équilibreurs de charge.
 Endpoint Probing Interval: 30 seconds (Intervalle de détection des points de
terminaison : 30 secondes) : fréquence de contrôle de l’intégrité des points de ter-
minaison. Ce paramètre peut être réglé sur 10 secondes ou 30 secondes. Pour
effectuer une détection rapide toutes les 10 secondes, des frais supplémentaires
sont appliqués par point de terminaison.
 Tolerate Number of Failures: 3 (Nombre d’échecs tolérés : 3) : nombre de fois qu’un
point de terminaison peut échouer à un contrôle d’intégrité avant qu’il ne soit
marqué comme non disponible.
 Probe Timeout: 10 seconds(Délai d’expiration de la détection : 10 secondes) :
durée qui s’écoule avant qu’une détection ne soit marquée comme ayant
échoué et qu’une tentative de détection du point de terminaison ne soit de
nouveau effectuée.
Il n’est pas nécessaire de modifier ces options par défaut. Lorsque vous développez vos
propres environnements d’application en situation réelle, vous pouvez réduire le nombre
d’échecs à tolérer ou l’intervalle de détection pour les charges de travail critiques. Ces
modifications garantissent la détection rapide de tous les problèmes d’intégrité et l’ache-
minement rapide du trafic vers un autre point de terminaison.

Essayer maintenant
Pour associer des points de terminaison à des profils et mettre fin au routage géogra-
phique, procédez comme suit.

1 Dans le portail Azure, accédez à votre groupe de ressources et sélectionnez-le.


Sélectionnez le profil Traffic Manager que vous avez créé pour l’Est des États-
Unis.
2 Choisissez les points de terminaison dans la barre de navigation à gauche du
profil, puis sélectionnez Add (Ajouter), comme le montre la figure 11.8.
3 Créez un point de terminaison, comme le montre la figure 11.9. Dans le champ
Type, sélectionnez Azure Endpoint (Point de terminaison Azure). Saisissez un
nom, par exemple eastus, puis choisissez App Service (Service d’application)
dans le champ Target Resource Type (Type de ressource cible).
4 Sélectionnez Target Resource (Ressource cible), puis sélectionnez votre appli-
cation Web dans l’Est des États-Unis, par exemple azuremoleastus.
5 Laissez le champ Priority (Priorité) renseigné par 1, puis sélectionnez OK.
Routage mondial et résolution avec Traffic Manager 173

Figure 11.8 Sélectionnez votre


groupe de ressources, puis
choisissez le profil Traffic
Manager pour l’Est des États-
Unis. Sous Settings (Paramètres),
sélectionnez Endpoints (Points de
terminaison), puis cliquez sur Add
(Ajouter).

Figure 11.9 Créez un point de terminaison nommé eastus. Le type de ressource cible est App
Service (Service d’application). Sélectionnez l’application Web que vous avez créée dans la région
East US (Est des États-Unis). Avec une priorité de 1, tout le trafic est dirigé vers ce point de
terminaison, à condition que ce dernier reste sain et puisse acheminer le trafic.
174 CHAPITRE 11 Gestion du trafic réseau et du routage

6 Répétez la procédure pour ajouter un autre point de terminaison. Cette fois,


nommez le point de terminaison westeurope, sélectionnez votre application
Web dans la région Europe occidentale comme ressource cible et définissez
une priorité de 100.
Votre profil Traffic Manager contient désormais deux points de
terminaison : un pour l’application Web dans l’Est des États-Unis et un pour
l’application Web en Europe occidentale, comme le montre la figure 11.10. Ce
routage des points de terminaison en fonction de la priorité dirige toujours le
trafic vers l’application Web dans l’Est des États-Unis lorsque cette ressource est
saine. Si cette ressource n’est pas disponible, il y a redondance pour basculer
vers l’application Web en Europe occidentale.

Figure 11.10 Deux points de terminaison sont affichés pour le profil Traffic Manager. Le point de terminaison
pour l’Est des États-Unis a la priorité inférieure, de sorte qu’il reçoit toujours le trafic s’il est sain. La redondance
est assurée avec le point de terminaison de l’Europe occidentale, qui n’est utilisé que si le point de terminaison
dans l’Est des États-Unis n’est pas disponible.

7 Retournez à votre groupe de ressources et sélectionnez le profil Traffic Mana-


ger pour l’Europe occidentale. Choisissez d’ajouter des points de terminaison.
8 Répétez les étapes pour ajouter deux points de terminaison. Configurez-les
comme suit :
a Name (Nom) : westeurope
Target Resource (Ressource cible) : application Web en Europe occidentale
Priority (Priorité) : 1
b Name (Nom) : eastus
Target Resource (Ressource cible) : application Web dans l’Est des États-Unis
Priority (Priorité) : 100
Votre profil Traffic Manager contient désormais deux points de terminaison :
un pour l’application Web en Europe occidentale et un pour l’application Web
dans l’Est des États-Unis, comme le montre la figure 11.11. Vous avez fourni la
même redondance que dans le profil Traffic Manager précédent, cette fois avec
tout le trafic allant vers l’Europe occidentale quand le point de terminaison
correspondant est sain, et vers l’Est des États-Unis dans le cas contraire.
Plus qu’une seule étape, promis! N’oubliez pas que c’est une bonne pratique pour la
haute disponibilité si vous utilisez Traffic Manager pour la distribution d’applications à
l’échelle mondiale. Dans la réalité, votre environnement n’est peut-être pas aussi com-
plexe. Examinons de nouveau le schéma pour voir les profils enfants et l’association avec
les applications Web régionales que vous devez créer, comme le montre la figure 11.12.
Routage mondial et résolution avec Traffic Manager 175

Figure 11.11 La configuration des points de terminaison est identique à celle définie dans le précédent profil
Traffic Manager, mais cette fois l’emplacement des applications Web est inversé. Ces profils enfants peuvent
être utilisés pour toujours acheminer les clients vers l’application Web soit dans l’Est des États-Unis, soit en
Europe occidentale, mais vous avez maintenant une redondance pour basculer vers un autre point de
terminaison si le point de terminaison principal dans la région n’est pas disponible.

Pour diriger le trafic en fonction de la région géographique, vous devez définir une
région, par exemple Amérique du Nord, et un profil imbriqué, par exemple eastus. Tous
les clients en Amérique du Nord sont dirigés vers ce profil enfant. Vous avez configuré les
priorités sur cet enfant de manière à ce que l’application Web située dans la région Est des
États-Unis achemine toujours le trafic. Mais vous avez fourni une option redondante pour
basculer vers l’application Web en Europe occidentale, le cas échéant.
L’inverse se produit pour les clients en Europe occidentale. Un autre point de termi-
naison pour le profil Traffic Manager parent peut être ajouté, cette fois avec l’Europe
comme région à associer au point de terminaison, puis le profil imbriqué westeurope.

Profil avec la
méthode de routage
géographique

Est des États-Unis Europe de l’Ouest


Profil enfant avec la Profil enfant avec la
méthode de routage méthode de routage
prioritaire prioritaire

Applicaon Web Applicaon Web Applicaon Web Applicaon Web


Est des États-Unis Europe de l’Ouest Est des États-Unis Europe de l’Ouest
Priorité 1 Priorité 100 Priorité 100 Priorité 1

Figure 11.12 Les profils Traffic Manager enfants pour l’Est des États-Unis et l’Europe
occidentale ont été créés et les applications Web régionales et les priorités ont été configurées
selon les besoins. Vous devez maintenant associer les profils enfants au profil parent.
176 CHAPITRE 11 Gestion du trafic réseau et du routage

Tout le trafic européen est acheminé vers ce profil et l’application Web en Europe occi-
dentale sert toujours l’application Web. En cas de problème, le trafic peut basculer vers
l’Est des États-Unis.
Si vous avez des mandats de souveraineté de données ou de politiques tels que le trafic
ne peut pas basculer vers une autre région, vous devrez peut-être apporter quelques ajus-
tements à la configuration des points de terminaison et des profils Traffic Manager. Vous
pouvez, par exemple, créer plusieurs applications Web en Europe occidentale, comme
vous l’avez vu dans un chapitre précédent. De cette façon, vous avez plusieurs instances de
l’application Web qui peuvent desservir les clients. Ou bien, si votre application s’exécute
sur des machines virtuelles, utilisez un ensemble de mise à l’échelle de machines virtuelles
(VMSS) derrière un équilibreur de charge pour profiler une redondance similaire.

Essayer maintenant
Pour associer les profils enfants au profil parent, procédez comme suit.
C’est là que votre propre emplacement régional importe! Si vous vivez hors de l’un des
groupements régionaux indiqués dans les profils Traffic Manager, veillez à sélectionner
votre propre région, ou vous ne serez pas en mesure d’accéder à l’application Web dans
l’exercice pratique présenté à la fin du chapitre.

1 Dans le portail Azure, accédez à votre groupe de ressources et sélectionnez-le.


Sélectionnez le profil Traffic Manager parent. Dans les exemples précédents, il
s’appelait azuremol.
2 Choisissez les points de terminaison dans la barre de navigation à gauche du
profil, puis sélectionnez Add (Ajouter).
3 Créez un point de terminaison utilisant le premier profil enfant, comme le
montre la figure 11.13. Dans le champ Type, choisissez Nested Endpoint (Point
de terminaison imbriqué). Indiquez un nom, par exemple eastus, puis sélec-
tionnez Target Resource (Ressource cible). Sélectionnez le profil Traffic Mana-
ger que vous avez créé pour l’Est des États-Unis.
4 Sous Regional Grouping (Regroupement régional), choisissez North Ame-
rica/Central America/Caribbean (Amérique du Nord/Amérique cen-
trale/Caraïbes) dans le menu déroulant, puis sélectionnez OK.
5 Répétez les étapes pour ajouter un autre point de terminaison. Cette fois, nom-
mez le point de terminaison westeurope, renseignez le champ Target Resource
(Ressource cible) par le profil Traffic Manager enfant pour l’Europe occiden-
tale et choisissez Europe dans le menu déroulant Regional Grouping (Regrou-
pement régional).
Vos points de terminaison pour le profil parent comprennent désormais les
deux profils enfants, dont chaque point de terminaison est associé à la région
géographique appropriée, comme le montre la figure 11.14.
Routage mondial et résolution avec Traffic Manager 177

Figure 11.13 Ce point de terminaison utilise le profil imbriqué pour l’Est des États-
Unis. Le regroupement régional dirige tous les clients d’Amérique du nord, d’Amérique
centrale et des Caraïbes vers les points de terminaison configurés dans le profil enfant.

Figure 11.14 Profils enfants imbriqués associés à des régions géographiques. Ce profil Traffic Manager
parent dirige désormais tout le trafic d’Europe vers l’application Web dans la région Europe occidentale, avec
une redondance pour utiliser l’Est des États-Unis en cas de problème. L’inverse est vrai pour les clients
d’Amérique du Nord, d’Amérique centrale et des Caraïbes.
178 CHAPITRE 11 Gestion du trafic réseau et du routage

6 Les applications Web sont actuellement configurées pour accepter uniquement


le trafic dans leur domaine par défaut. Ce domaine par défaut se présente sous
la forme : webappname.azurewebsites.net. Lorsque Traffic Manager dirige les
clients vers ces instances de l’application Web, le trafic semble provenir du
domaine du profil parent, par exemple azuremol.trafficmanager.net. Les
applications Web ne reconnaissent pas ce domaine, l’application Web ne se
charge donc pas.
Ajoutez le domaine du profil Traffic Manager parent aux deux instances de
l’application Web que vous avez créées dans les étapes précédentes. Si néces-
saire, vous trouverez le nom de domaine dans la page Overview (Vue
d’ensemble) du profil Traffic Manager parent :
az webapp config hostname add \
--resource-group azuremolchapter11 \
--webapp-name azuremoleastus \
--hostname azuremol.trafficmanager.net
az webapp config hostname add \
--resource-group azuremolchapter11 \
--webapp-name azuremolwesteurope \
--hostname azuremol.trafficmanager.net

Maintenant, lorsque vous ouvrez l’adresse de votre profil Traffic Manager parent, par
exemple https://azuremol.trafficmanager.net, dans un navigateur Web, vous ne pouvez
pas deviner à quelle application Web vous accédez, car elles exécutent la page Web par
défaut. Dans l’exercice pratique présenté à la fin du chapitre, vous téléchargez une page
Web basique dans chaque application Web pour les différencier!
Arrêtons-nous un instant pour examiner ce que vous avez créé dans ces exercices.
C’est important, car toutes les fonctions de haute disponibilité et de redondance décrites
aux chapitres précédents peuvent maintenant être utilisées par les clients, avec le routage
automatique du trafic qui les dirige vers l’instance la plus proche de votre application
Web. Dans ce chapitre, vous avez créé les éléments suivants :
 Une application Web dans la région Est des États-Unis et une autre en Europe
occidentale.
 Les profils Traffic Manager qui utilisent le routage géographique pour diriger tous
les clients en Amérique du Nord et centrale vers l’application Web dans l’Est des
États-Unis, et tous les clients en Europe vers l’application Web de l’Europe occiden-
tale.
 Des stratégies Traffic Manager enfants avec routage prioritaire, pour basculer
vers l’autre région et l’utiliser si l’application Web principale de la région n’est
pas disponible.
En termes de haute disponibilité :
 Si vous combinez cette configuration avec des applications Web qui se mettent
automatiquement à l’échelle, vous bénéficiez alors d’une redondance extraor-
dinaire.
 Si vous combinez ces applications Web avec Cosmos DB, l’intégralité de votre appli-
cation est désormais automatiquement mise à l’échelle et distribuée dans le monde
entier et vos clients accèdent toujours aux ressources proches, ce qui garantit la
latence la plus faible sur les temps de réponse et des performances optimales.
Routage mondial et résolution avec Traffic Manager 179

 Même si vous êtes bloqué avec des machines virtuelles, vous pouvez utiliser des
VMSS avec des équilibreurs de charge pour fournir le même environnement
hautement disponible et distribué partout dans le monde.
Je sais que ces derniers chapitres contiennent beaucoup de nouveautés et que chaque
chapitre a grignoté une très grande partie de votre pause déjeuner tous les jours! Mais
regardez tout ce que vous avez acquis depuis la semaine dernière. Vous pouvez désormais
créer une application Web avec des machines virtuelles en IaaS ou des applications Web
en PaaS, la rendre hautement disponible et équilibrer sa charge, et la laisser se mettre
automatiquement à l’échelle, comme le montre la figure 11.15. Vous pouvez utiliser un
arrière-guichet Cosmos DB distribué à l’échelle mondiale pour les besoins de vos bases de
données, et vous pouvez acheminer automatiquement les clients vers l’instance régionale
la plus proche de votre application, le tout avec un DNS hébergé dans Azure.

Client

Internet

Azure Traffic
Azure DNS
Manager

Soluon Azure PaaS Soluon Azure IaaS


Est des États-Unis Europe de l’Ouest Est des États-Unis 2 Europe de l’Ouest
Applicaon Web Applicaon Web Zones de disponibilité Zones de disponibilité
de mise à de mise à
l’échelle l’échelle ou Équilibreur de charge Équilibreur de charge
automaque automaque
Jeu de mise à Jeu de mise à
l’échelle de l’échelle de
Cosmos DB machine machine
virtuelle virtuelle

Figure 11.15 Après avoir lu ces derniers chapitres, vous devriez être en mesure de comprendre comment
créer dans Azure des applications IaaS ou PaaS hautement disponibles. Les solutions IaaS peuvent utiliser
des zones de disponibilité, des équilibreurs de charge et des VMSS. Les solutions PaaS peuvent utiliser la
mise à l’échelle des applications Web et Cosmos DB. Traffic Manager et Azure DNS peuvent acheminer
automatiquement les clients vers l’instance d’application la plus appropriée, en fonction de leur
emplacement géographique.
L’exercice pratique présenté à la fin du chapitre télécharge quelques sites Web de base
dans vos applications Web, juste pour prouver que Traffic Manager fonctionne et que le
point de terminaison approprié achemine votre trafic. Si vous avez le temps, n’hésitez pas
à terminer l’exercice; sinon, félicitez-vous et allez vous reposer. Je ne dirai rien à votre
patron! Nous avons encore un chapitre dans cette deuxième section du livre; il explique
comment s’assurer que vos applications restent saines : comment surveiller et dépanner
vos applications et votre infrastructure.
180 CHAPITRE 11 Gestion du trafic réseau et du routage

11.3 Exercice pratique : déploiement d’applications Web


pour voir Traffic Manager à l’œuvre
Dans ce chapitre encore nous avons abordé énormément de choses; cet exercice devrait
donc vous permettre de renforcer encore vos compétences sur les applications Web dans
Azure. Le référentiel GitHub contenant les exemples Azure comprend deux pages Web
basiques sur le développement d’une application pour une pizzeria en ligne. Le titre de
chaque page Web indique l’emplacement de l’application Web. Téléchargez ces pages
Web dans l’instance d’application Web appropriée pour voir vos flux Traffic Manager à
l’œuvre :
1 Le cas échéant, clonez le référentiel d’exemples GitHub dans votre Cloud Shell
en procédant comme suit :
git clone https://github.com/fouldsy/azure-mol-samples.git
2 Commencez par la page Web eastus, puis répétez les étapes suivantes dans le
répertoire westeurope :
cd ~/azure-mol-samples/11/eastus
3 Initialisez le référentiel Git et ajoutez la page Web basique :
git init && git add . && git commit -m "Pizza"
4 Dans le portail Azure, la fenêtre Overview (Vue d’ensemble) de votre applica-
tion Web affiche l’URL du clone Git. Copiez cette URL, puis définissez-la
comme destination pour votre exemple de site HTML dans Cloud Shell avec la
commande suivante :
git remote add eastus <your-git-clone-url>
5 Transférez l’exemple de site HTML vers votre application Web :
git push eastus master
6 Répétez ces étapes pour le répertoire azure-mol-samples/11/westeurope.
Lorsque vous avez terminé, ouvrez votre navigateur Web pour accéder au nom
de domaine de votre profil Traffic Manager parent, par exemple https://azure-
mol.trafficmanager.net, pour voir le flux du trafic.
Surveillance et dépannage

Dans les chapitres précédents, vous avez appris à rendre vos applications hautement
disponibles et à acheminer les clients du monde entier vers des instances distribuées à
l’échelle mondiale de votre application. Un objectif était de réduire le nombre d’inte-
ractions avec votre infrastructure d’application et de laisser la plate-forme Azure gérer
automatiquement à votre place l’intégrité et les performances de cette infrastructure.
Vous avez encore parfois besoin de retrousser vos manches et de passer en revue les
diagnostics ou les métriques de performance. Dans ce chapitre, vous apprendrez à pas-
ser en revue les diagnostics de démarrage d’une machine virtuelle (MV), à surveiller les
métriques de performance et à résoudre les problèmes de connectivité avec Network
Watcher.

12.1 Diagnostics de démarrage de la machine virtuelle


Avec les applications web, vous déployez votre code et laissez la plate-forme Azure gérer
le reste. Dans le chapitre 3, nous avons passé en revue les principes de base du dépan-
nage et du diagnostic des problèmes rencontrés lors du déploiement d’applications
web. Vous avez appris à afficher les événements des applications en temps réel pour
surveiller les performances. Lorsque vous utilisez des machines virtuelles dans le
nuage, il est souvent difficile de résoudre un problème si vous ne pouvez pas voir physi-
quement l’écran de l’ordinateur de la façon à pouvoir obtenir les diagnostics des appli-
cations web.
Un des problèmes les plus courants avec les machines virtuelles est le manque de
connectivité. Si vous ne pouvez pas accéder à une machine virtuelle à l’aide du proto-
cole SSH ou RDP, comment pouvez-vous alors résoudre les problèmes? Dans un pre-
mier temps, il convient de vérifier si la machine virtuelle fonctionne correctement.
Pour ce faire, Azure fournit des diagnostics de démarrage de la machine virtuelle com-
prenant des journaux de démarrage et une capture d’écran de la console.

181
182 CHAPITRE 12 Surveillance et dépannage

Accès interactif à la console de démarrage


Pour des scénarios de dépannage spécifiques, vous pouvez également accéder à une
console série en direct pour les machines virtuelles dans Azure. Cette console série per-
met des ouvertures de session interactives et un dépannage en cas de problèmes au
démarrage. Vous pouvez reconfigurer votre machine virtuelle pour qu’elle corrige les scé-
narios d’échec de démarrage ou les configurations erronées de services et d’applications
empêchant votre machine virtuelle de démarrer correctement.
Ce chapitre ne décrit pas de scénarios spécifiques pour l’utilisation de la console série,
mais c’est une excellente ressource qui vous permet de vous asseoir pratiquement
devant l’écran d’une machine virtuelle au démarrage. Vous devez également activer les
diagnostics de démarrage, de sorte que ces exercices soient des conditions préalables
pour la console série.

Essayer maintenant
Pour créer une machine virtuelle et activer les diagnostics de démarrage, procédez
comme décrit ci-dessous.

1 Dans le portail Azure, sélectionnez Create a Resource (Créer une ressource)


dans l’angle supérieur gauche. Sélectionnez la machine virtuelle Windows Ser-
ver 2016.
2 Saisissez un nom, par exemple molvm, un nom d’utilisateur, par exemple azu-
remol et un mot de passe. Le mot de passe doit comporter au moins 12 carac-
tères et contenir trois des éléments suivants : une minuscule, une majuscule, un
chiffre et un caractère spécial.
3 Sélectionnez Créer un nouveau groupe de ressources. Saisissez un nom, par
exemple azuremolchapter12. Sélectionnez la région Azure la plus appropriée la
plus proche de vous.
4 Sélectionnez une taille de machine virtuelle, par exemple D2S_v3.
5 Dans la page Settings (Paramètres), examinez les ressources par défaut créées
pour le réseau virtuel, l’adresse IP publique et le groupe de sécurité réseau
(NSG). Ceux-ci devraient être des ressources familières des machines virtuelles
que vous avez créées précédemment. Laissez les valeurs par défaut : vous n’avez
rien à changer.
Vous avez peut-être ignoré précédemment la section Surveillance. Comme le
montre la figure 12.1, l’option Boot Diagnostics (Diagnostics de démarrage) est
activée par défaut et un compte de stockage est créé. Pour l’instant, laissez
l’option Guest OS Diagnostics (Diagnostics du système d’exploitation invité)
désactivée.
6 Pour créer votre machine virtuelle, sélectionnez OK dans la fenêtre Settings
(Paramètres), puis Create (Créer) dans la fenêtre Summary (Résumé).
7 La création et la configuration de la machine virtuelle prennent quelques
minutes; nous allons donc continuer à explorer les diagnostics de démarrage.
Diagnostics de démarrage de la machine virtuelle 183

Figure 12.1 Par défaut, les diagnostics de démarrage


sont activés lorsque vous créez une machine virtuelle dans
le portail Azure. Un compte de stockage est créé; c’est là
que les diagnostics de démarrage sont stockés. Dans un
exercice ultérieur, vous examinerez et activerez les
diagnostics du système d’exploitation invité; ne les activez
donc pas pour le moment. Pour une utilisation en
production, je vous recommande d’activer les diagnostics
de démarrage et les diagnostics du système d’exploitation
invité pour chaque machine virtuelle que vous créez.

Si les diagnostics de démarrage ne sont pas activés mais vous rencontrez un problème,
vous ne pourrez probablement pas démarrer la machine virtuelle pour activer correcte-
ment les diagnostics. Cela ressemble fort au scénario de la poule et de l’œuf, n’est-ce pas?
Par conséquent, les diagnostics de démarrage sont automatiquement activés pour les
machines virtuelles créées dans le portail Azure. Pour Azure PowerShell, Azure CLI et les
kits SDK spécifiques à une langue, vous devez activer les diagnostics de démarrage. Je vous
recommande d’activer les diagnostics de démarrage sur vos machines virtuelles lorsque
vous les créez.
Vous devez créer un compte de stockage pour les journaux de démarrage et les cap-
tures d’écran de la console, mais le coût de stockage de ces données est probablement
inférieur à 0,01 USD par mois. La première fois que vous rencontrez un problème au
niveau des machines virtuelles et que vous avez besoin d’accéder aux diagnostics de
démarrage, ce penny par mois en vaudra la peine! Ce compte de stockage peut également
être utilisé pour stocker des métriques de performance et des journaux supplémentaires
au niveau de la machine virtuelle, que nous examinerons dans la section suivante. Encore
une fois, les coûts de stockage sont minimes. Même si votre environnement de machine
virtuelle se développe, ce coût minime supplémentaire vaut la peine pour pouvoir
résoudre rapidement un problème en cas de problème.

Essayer maintenant
Pour afficher les diagnostics de démarrage de votre machine virtuelle, procédez comme
suit.

1 Dans le portail Azure, sélectionnez Virtual Machines (Machines virtuelles) dans


le menu de gauche. Choisissez la machine virtuelle que vous avez créée lors de
l’exercice précédent.
2 Dans la section Support Troubleshooting (Dépannage de support) du menu de
la machine virtuelle, choisissez Boot Diagnostics (Diagnostics de démarrage).
Les diagnostics de démarrage et l’état de la machine virtuelle s’affichent,
comme le montre la figure 12.2. Le rapport d’intégrité indique si des pro-
blèmes de démarrage se sont produits sur la machine virtuelle et vous permet,
nous l’espérons, de diagnostiquer l’origine du problème.
184 CHAPITRE 12 Surveillance et dépannage

Figure 12.2 Les diagnostics de démarrage d’une machine virtuelle indiquent l’état d’intégrité et de démarrage.
Si des erreurs sont affichées, vous devriez être en métrique de dépanner et de diagnostiquer l’origine du
problème. Vous pouvez également télécharger les journaux à partir du portail en vue de leur analyse sur votre
ordinateur local.

12.2 Métriques de performances et alertes


Une des premières étapes pour résoudre un problème commence par un examen des
performances. Quelle est la quantité de mémoire disponible, quelle est la consommation
du processeur et dans quelle mesure le disque est-il sollicité?
Lors du développement et du test de vos applications dans Azure, je vous recommande
d’enregistrer les valeurs de référence des performances à différents moments. Ces valeurs
de référence vous donnent une idée de la manière dont votre application devrait fonc-
tionner sous différentes charges. Pourquoi ce point est-il important? Dans trois mois, com-
ment pourrez-vous déterminer si vous rencontrez des problèmes de performances si vous
ne disposez pas de données à comparer avec les performances actuelles?
Lorsque vous avez appris à effectuer une mise à l’échelle automatique des applications
au chapitre 9, vous avez utilisé des métriques de performance de base, telles que l’utilisa-
tion du processeur, pour indiquer à la plate-forme Azure quand augmenter ou diminuer
le nombre d’instances de votre application. Ces métriques de base ne vous donnent qu’un
aperçu des performances de la machine virtuelle. Pour des métriques plus détaillées, vous
devez examiner les performances de la machine virtuelle. Pour ce faire, vous devez instal-
ler l’extension de diagnostic Azure.

12.2.1 Affichage des métriques de performance avec l’extension de diagnostic de


machine virtuelle
Pour ajouter des fonctionnalités à vos machines virtuelles, Azure dispose de dizaines
d’extensions que vous pouvez installer de façon transparente. Ces extensions installent un
petit agent ou un service d’exécution d’application sur la machine virtuelle, qui transmet
ensuite souvent des informations à la plate-forme Azure ou à des solutions tierces. Les
extensions de machine virtuelle peuvent automatiquement configurer et installer des
composants ou exécuter des scripts sur vos machines virtuelles.
Métriques de performances et alertes 185

L’extension de diagnostic de machine virtuelle est une extension commune utilisée


pour diffuser des métriques de performances de la machine virtuelle vers un compte de
stockage. Ces métriques de performance peuvent ensuite être analysées dans le portail
Azure ou elles peuvent être téléchargées et utilisées dans une solution de surveillance exis-
tante. Vous pouvez utiliser l’extension de diagnostics pour mieux comprendre les perfor-
mances en termes de consommation du processeur et de la mémoire à partir de la
machine virtuelle, ce qui permet généralement d’obtenir une image plus détaillée et plus
précise que celle de l’hôte.

Automatisation et extensions de machines virtuelles


Au chapitre 18, nous discutons d’Azure Automation pour effectuer des tâches sur vos
machines virtuelles de manière automatisée et planifiée. Une fonction puissante d’Azure
Automation fait office de serveur de distribution PowerShell DSC (Desired State Configu-
ration). PowerShell DSC est utilisé pour définir un état donné de la configuration d’un sys-
tème, des paquets à installer, des fichiers et des autorisations, etc. Vous créez des
définitions pour la configuration souhaitée et les appliquez aux machines virtuelles ou aux
serveurs physiques. Vous pouvez ensuite élaborer un rapport et appliquer la conformité à
ces stratégies. L’extension Azure PowerShell DSC est utilisée pour appliquer des configu-
rations DSC, par exemple à partir d’un serveur de diffusion Azure Automation.
Les autres extensions pouvant appliquer des configurations et exécuter des scripts sur
des machines virtuelles incluent l’extension de script personnalisé Azure. L’extension de
script personnalisé vous permet de définir un ensemble simple de commandes ou de
pointer vers un ou plusieurs scripts externes, tels que ceux hébergés dans Azure Storage
ou GitHub. Ces scripts peuvent exécuter des tâches de configuration et d’installation com-
plexes et s’assurer que toutes les machines virtuelles déployées sont configurées de
manière cohérente.
Les extensions de script personnalisé et Azure PowerShell DSC sont toutes deux généra-
lement utilisées avec des jeux de mise à l’échelle de machines virtuelles. Vous appliquez
l’une de ces extensions au jeu de mise à l’échelle puis, au fur et à mesure que des ins-
tances de machine virtuelle sont créées dans le jeu de mise à l’échelle, elles sont auto-
matiquement configurées pour exécuter votre application. Ces extensions visent à
minimiser la configuration manuelle requise des machines virtuelles, qui est un proces-
sus sujet aux erreurs et impliquant des interactions avec l’utilisateur.
Puppet et Chef sont deux autres moyens d’automatiser les configurations de machines
virtuelles, qui disposent tous deux d’extensions de machine virtuelle Azure. Si vous utili-
sez déjà un outil de gestion de la configuration, vérifiez auprès du fournisseur qu’il est
compatible avec l’approche employée dans Azure. Il y a de fortes chances qu’une exten-
sion de machine virtuelle soit disponible pour vous simplifier la tâche.

Essayer maintenant
Pour activer l’extension de diagnostics de machines virtuelles, procédez comme suit.

1 Dans le portail Azure, sélectionnez Virtual Machines (Machines virtuelles) dans


le menu de gauche. Choisissez la machine virtuelle que vous avez créée lors
d’un exercice précédent.
2 Dans la section Monitoring (Surveillance) du menu de la machine virtuelle,
choisissez Diagnostic Settings (Paramètres de diagnostic).
186 CHAPITRE 12 Surveillance et dépannage

3 Sélectionnez le bouton pour activer la surveillance au niveau invité.


Il faut quelques minutes pour activer la surveillance au niveau invité. Dans les coulisses,
voici ce que fait Azure :
 Installe l’extension de diagnostics de machines virtuelles
 Configure l’extension pour diffuser des métriques au niveau invité concernant ce
qui suit :
– Disque logique
– Mémoire
– Interface réseau
– Processus
– Processeur
– Système
 Permet la diffusion de journaux d’applications, de sécurité et système vers
Azure Storage
Une fois l’extension de diagnostic installée, vous pouvez limiter les données collectées en
sélectionnant uniquement certains compteurs de performance à signaler. Par exemple,
vous souhaiterez peut-être collecter uniquement les données relatives à l’utilisation de la
mémoire ou activer la collecte de métriques Microsoft SQL Server. Par défaut, les
métriques sont collectées toutes les 60 secondes. Vous pouvez ajuster cette fréquence
d’échantillonnage selon les besoins de vos applications et de votre infrastructure.
L’extension de diagnostics de machines virtuelles peut également diffuser des fichiers
journaux à partir de votre machine virtuelle. Cela vous permet de centraliser les journaux
d’applications, de sécurité et système pour l’analyse ou les alertes, comme le montre la
figure 12.3. Par défaut, les journaux d’applications et système qui génèrent des erreurs cri-
tiques ou des avertissements sont consignés, ainsi que les événements de sécurité, pour
l’analyse des échecs. Vous pouvez modifier les niveaux des journaux à consigner et activer
la collecte de journaux à partir d’IIS, les journaux d’applications et les événements ETW
(Event Tracing for Windows). Dans le cadre de la planification et du déploiement de votre
application, déterminez les journaux que vous souhaitez collecter.
Il n’y a rien de spécifique aux machines virtuelles Windows ici. Vous pouvez utiliser
l’extension de diagnostics sur les machines virtuelles Linux de la même manière, pour
obtenir des métriques de performance et diffuser divers journaux.
En cas de problème sur votre machine virtuelle, le seul moyen d’analyser ce qui s’est
passé consiste souvent à passer en revue les vidages sur incident. Les services d’assistance
demandent souvent ces vidages si vous souhaitez connaître l’origine d’un problème.
Comme avec les diagnostics de démarrage, il n’y a aucun moyen d’activer rétroactivement
les vidages sur incident pour déterminer la raison de l’échec; par conséquent, déterminez
si vous devez surveiller certains processus et soyez proactif en matière de configuration des
vidages sur incident. Par exemple, vous pouvez surveiller le processus IIS et enregistrer un
vidage sur incident complet dans Azure Storage en cas d’échec du processus.
Voici quelques autres paramètres que vous pouvez configurer pour les métriques au
niveau invité :
 Les récepteurs vous permettent de configurer l’extension de diagnostic de machine vir-
tuelle pour envoyer certains événements à Azure Application Insights. Grâce à Applica-
tion Insights, vous pouvez voir directement comment fonctionne votre code.
 L’agent vous permet de spécifier un quota de stockage pour toutes vos métriques
(par défaut, 5 Go). Vous pouvez également activer la collecte de journaux pour
l’agent proprement dit ou désinstaller l’agent.
Métriques de performances et alertes 187

Figure 12.3 Vous pouvez configurer des événements et des niveaux de journalisation pour divers
composants au sein de la machine virtuelle. Cette fonctionnalité vous permet de centraliser les
journaux de votre machine virtuelle afin de les analyser et de générer des alertes. Vous pouvez
consulter et recevoir des notifications lorsque des problèmes se produisent sur vos machines virtuelles
Azure sans avoir à installer des systèmes de surveillance complexes et souvent coûteux.

Essayer maintenant
Pour afficher les métriques au niveau invité, procédez comme suit.

1 Dans le portail Azure, sélectionnez Virtual Machines (Machines virtuelles) dans


le menu de gauche. Choisissez la machine virtuelle que vous avez créée lors
d’un exercice précédent.
2 Dans la section Monitoring (Surveillance) du menu de la machine virtuelle,
choisissez Metrics (Métriques).
3 De nombreuses autres métriques sont désormais disponibles par rapport aux
métriques basées sur l’hôte indiquées au chapitre 9. Dans la zone de texte Filter
Metrics (Filtrer les métriques), située en haut de la liste des métriques dispo-
nibles, saisissez memory (mémoire). Dans la liste filtrée, sélectionnez [Invité]
\Memory\% Committed Bytes in Use, comme le montre la figure 12.4.
188 CHAPITRE 12 Surveillance et dépannage

Figure 12.4 Une fois que l’extension de diagnostic de machine virtuelle est installée, des métriques [Invité]
supplémentaires sont disponibles pour examen. Vous pouvez rechercher et sélectionner les métriques à afficher
ou modifier la plage temporelle à votre convenance.

12.2.2 Création d’alertes sur les conditions de fonctionnement


Lorsque machine virtuelle est configurée pour afficher les métriques de performance au
niveau invité, comment savoir qu’il y a un problème? J’espère que vous ne prévoyez pas de
passer votre temps à parcourir les graphiques de performance en temps réel dans
l’attente que se produise un problème! Je ne suis pas votre patron, mais bon, si cela vous
tente... Il existe un bien meilleur moyen : les alertes relatives aux métriques.
Les alertes relatives aux métriques vous permettent de sélectionner une ressource, une
métrique et un seuil, puis de définir qui vous voulez notifier lorsque ce seuil est atteint, et
comment. Les alertes ne concernent pas que les machines virtuelles. Par exemple, vous
pouvez définir des alertes sur des adresses IP publiques qui surveillent les paquets
d’attaques informatiques par saturation (DDoS) entrants et vous avertissent quand un
seuil particulier pouvant constituer une attaque est atteint.
Lorsque des alertes sont générées, vous pouvez choisir d’envoyer une notification par
courriel aux propriétaires, contributeurs et lecteurs. Ces utilisateurs et ces adresses élec-
troniques sont obtenus en fonction des stratégies RBAC appliquées. Au sein des grandes
organisations, des notifications pourraient être envoyées par courriel à un large groupe de
personnes. Il convient donc d’utiliser cette fonctionnalité avec précaution! Une autre
option consiste à spécifier des adresses électroniques, qui peuvent être celles des proprié-
taires d’applications ou d’ingénieurs infrastructure spécifiques, ou une liste de distribu-
tion ou un groupe ciblé de parties directement impliquées.
Deux autres options existent pour les actions à entreprendre quand une alerte se
déclenche :
 Execute a runbook (Exécuter un runbook) : dans le chapitre 18, nous examinerons Azure
Automation. Le service Automation vous permet de créer et d’utiliser des runbooks exé-
cutant des scripts. Ces scripts peuvent effectuer une action corrective de base sur la
machine virtuelle, par exemple redémarrer un processus ou même redémarrer la
machine virtuelle. Ils peuvent également exécuter des applets de commande Azure
PowerShell pour activer des fonctions d’Azure Network Watcher, comme la capture de
paquets, que nous explorerons dans le reste de ce chapitre.
Azure Network Watcher 189

 Run a logic app (Exécuter une application logique) : les applications logiques Azure
vous permettent de créer des flux de travail exécutant du code sans serveur.
Vous pouvez écrire des informations dans un système de tickets d’assistance ou
lancer un appel téléphonique automatisé à un technicien de garde. Dans le
chapitre 21, nous explorerons le monde merveilleux de l’informatique sans ser-
veur avec les applications logiques Azure et Azure Functions.
Dans l’exercice pratique proposé à la fin du chapitre, vous configurerez quelques alertes
pour votre machine virtuelle. Cependant, Azure peut servir à bien plus que faciliter le
dépannage et la surveillance de vos machines virtuelles. Nous allons maintenant aborder
une autre cause courante de problèmes, à savoir : le réseau.

12.3 Azure Network Watcher


Les métriques de performance et les diagnostics de démarrage des machines virtuelles
sont d’excellents moyens de surveiller vos applications IaaS Azure. Les journaux d’applica-
tions Web App et App Insights permettent de connaître les performances de vos applica-
tions PaaS. Le trafic réseau est souvent moins glamour, mais il est plus susceptible d’être la
cause des problèmes de connectivité des applications que vous ou vos clients rencontrez.
Retour au chapitre 5 : j’ai plaisanté sur le fait que l’équipe réseau est toujours tenue
pour responsable des problèmes qu’elle ne peut pas expliquer. C’est ici que nous pou-
vons essayer de nous réconcilier avec cette équipe, ou au moins d’obtenir une preuve
irréfutable de la responsabilité du réseau! Azure Network Watcher est l’une de ces
fonctions qui incitent les équipes à travailler collectivement. Grâce à Network Watcher,
vous pouvez effectuer la surveillance et le dépannage à l’aide de fonctions telles que les
suivantes :
 Capture de paquets réseau
 Validation du flux IP pour les groupes de sécurité réseau (NSG)
 Génération de la topologie du réseau
Ce qui est formidable avec ces fonctions, c’est qu’elles conduisent différentes équipes à
prendre l’initiative pour savoir comment résoudre les problèmes. Si vous créez des
machines virtuelles auxquelles vous ne pouvez pas vous connecter ensuite, vous pouvez
vérifier l’état de la connexion au réseau. Pour les développeurs, si votre application ne
peut pas se connecter à une couche de base de données de l’arrière-guichet, vous pouvez
passer en revue les règles du groupe de sécurité réseau afin de détecter tout problème
éventuel. Les ingénieurs réseau, eux, peuvent capturer des paquets pour examiner l’inté-
gralité du flux de communication entre les hôtes en vue d’une analyse plus approfondie.

Autres opérations de dépannage réseau


Network Watcher fonctionne en tandem avec les journaux de diagnostic et les métriques
abordés précédemment dans ce chapitre. Les ressources réseau telles que les équi-
libreurs de charge et les passerelles d’application peuvent également générer des jour-
naux de diagnostic. Ces journaux fonctionnent de la même manière que les journaux
d’applications et système à partir d’une machine virtuelle ou d’une application Web. Les
journaux sont assemblés dans le portail Azure pour vous permettre de déterminer s’il
existe des erreurs dans la configuration ou les communications entre les hôtes et les
applications.
Les services DNS et Traffic Manager comprennent également une section de dépannage
dans le portail Azure. Le portail vous guide tout au long des erreurs courantes que vous
pouvez rencontrer, présente des conseils de configuration et fournit des liens vers des
documents supplémentaires. Si toutes les tentatives de résolution échouent, vous pou-
vez ouvrir une demande d’assistance auprès du service d’assistance Azure.
190 CHAPITRE 12 Surveillance et dépannage

(suite)
Bien qu’il soit souvent plus facile de créer des déploiements d’applications de grande
envergure avec des modèles Azure Resource Manager ou des scripts Azure CLI ou
PowerShell, le portail Azure propose de nombreux outils et fonctions exceptionnels à uti-
liser en cas de problème. En consacrant quelques secondes de votre temps à l’examen
du résultat des outils Network Watcher, vous pourrez déceler un problème et le résoudre
rapidement, en particulier dans le cas de stratégies de sécurité et de configurations
réseau complexes. Tous ces outils contribuent à améliorer l’intégrité globale et l’utilisa-
tion de vos applications pour vos clients.

Citez quelques scénarios dans lesquels vous pouvez envisager d’utiliser Network Watcher
et ses fonctions de dépannage? Examinons quelques problèmes courants et voyons com-
ment Network Watcher pourrait vous aider.

12.3.1 Vérification des flux IP


Voici un problème courant : les clients ne peuvent pas se connecter à votre application.
L’application fonctionne correctement lorsque vous vous connectez depuis le bureau,
mais les clients ne peuvent pas y accéder via l’Internet public. Pourquoi?

RPV et ExpressRoute
Les réseaux privés virtuels (RPV) Azure offrent des communications sécurisées entre les
bureaux sur place et les centres de données Azure. Azure ExpressRoute fournit des
connexions privées à grande vitesse et dédiées depuis les bureaux sur place vers les
centres de données Azure et est souvent utilisé dans les grandes organisations.
Les deux connexions sont un peu plus compliquées à mettre en place et ce sujet ne peut
pas être expliqué en l’espace d’une seule pause déjeuner; ces connexions sont aussi
souvent mises en place et configurées une seule fois. L’équipe réseau est généralement
responsable de la configuration de ces connexions et vous ne réaliserez peut-être même
pas que vous accédez à Azure via une connexion privée.

Tous les tests de votre application fonctionnent parfaitement. Vous pouvez accéder à
l’application via un navigateur Web, passer des commandes et recevoir des notifications
par courriel. Lorsque vos clients essaient ensuite de passer commande, l’application ne se
charge pas.
Comment l’application Network Watcher peut-elle aider? En vérifiant les flux IP.
Network Watcher simule le flux de trafic vers votre destination et indique si le trafic peut
atteindre votre machine virtuelle.

Essayer maintenant
Pour activer Network Watcher et vérifier les flux IP, procédez comme suit.

1 Dans le portail Azure, sélectionnez All Services (Tous les services) dans la partie
supérieure du menu de navigation Services, à gauche.
Azure Network Watcher 191

2 Filtrez les données et sélectionnez Network Watcher dans la liste des services
disponibles. Activez Network Watcher dans les régions que vous souhaitez sur-
veiller. Lorsque vous activez Network Watcher dans une région, Azure utilise
des contrôles d’accès basés sur les rôles (RBAC) pour les différentes ressources
et le trafic réseau.
3 Développez la liste des régions correspondant à votre compte, puis choisissez
Activer Network Watcher pour la même région que la machine virtuelle créée
dans un exercice précédent, comme le montre la figure 12.5.

Figure 12.5 Dans la liste des abonnements Azure (vous n’en avez probablement qu’un), développez la liste des
régions. Du point de vue de la sécurité, vous devez uniquement activer Network Watcher dans les régions Azure
que vous devez surveiller pour un problème donné. Network Watcher peut être utilisé pour capturer des paquets
pour d’autres applications et services dans votre abonnement si vous activez cette fonction pour plusieurs
régions.

4 L’activation de Network Watcher dans votre région nécessite une ou deux


minutes. Une fois ce service activé, sélectionnez P Flow Verify (Vérifier le flux
IP) sous Network Diagnostic Tools (Outils de diagnostic réseau) à gauche dans
la fenêtre Network Watcher.
5 Sélectionnez votre groupe de ressources, par exemple azuremolchapter12, et la
machine virtuelle, par exemple molvm. Par défaut, le champ Protocol (Proto-
cole) est renseigné par TCP et le champ Direction par Inbound (Entrant).
L’adresse IP locale de la carte réseau virtuelle est également renseignée.
6 Dans le champ Local Port (Port local), saisissez le port 80. Si vous avez accepté
les valeurs par défaut lors de la création de la machine virtuelle dans l’exercice
précédent, vous n’avez pas ouvert le port 80; c’est donc un bon test pour voir ce
qui se passe lorsque le trafic est refusé.
7 Sous Remote IP Address (Adresse IP distante), saisissez 8.8.8.8. Cette adresse
peut sembler familière; il s’agit d’un serveur DNS ouvert fourni par Google.
Vous ne faites rien avec ce serveur; vous devez simplement affecter à Network
Watcher une adresse IP externe pour simuler le flux de trafic. Vous pouvez éga-
lement accéder à https://whatsmyip.com et saisir votre adresse IP publique
réelle. Réglez le champ Remote Port (Port distant) sur le port 80, puis sélec-
tionnez Check (Vérifier), comme le montre la figure 12.6.
192 CHAPITRE 12 Surveillance et dépannage

Figure 12.6 Sélectionnez votre machine virtuelle et indiquez un port local sur la machine virtuelle à
tester. Dans cet exemple, vous souhaitez tester la connectivité au port 80 pour simuler une
application Web courante sur la machine virtuelle. L’adresse IP distante peut être n’importe quelle
adresse externe pour que Network Watcher simule le trafic. En réalité, Network Watcher examine les
règles de groupe de sécurité effectives pour déterminer si le trafic peut parvenir à la machine virtuelle
en fonction des adresses IP et des ports source et de destination.

Le résultat de votre contrôle du flux IP doit être « Access denied » (Accès refusé). Utile-
ment, Network Watcher vous indique ensuite la règle qui a provoqué l’échec du flux de
trafic, à savoir : la règle DefaultInboundDenyAll. Vous savez qu’une règle de sécurité
réseau bloque le trafic, mais où cette règle est-elle appliquée? Sur le sous-réseau, la carte
réseau virtuelle ou le groupe de sécurité des applications? Une autre fonction de Network
Watcher peut répondre à cette question!

12.3.2 Affichage des règles NSG effectives


Les règles NSG peuvent être appliquées à une carte réseau virtuelle unique, au niveau du
sous-réseau ou à un groupe de machines virtuelles dans un groupe de sécurité d’applica-
tion. Les règles sont combinées, vous permettant ainsi de spécifier un ensemble commun
de règles sur un sous-réseau entier, puis d’obtenir des groupes de sécurité d’application
plus granulaires (par exemple « Allow TCP port 80 on all webservers » (Autoriser le port
TCP 80 sur tous les serveurs Web)) ou une machine virtuelle individuelle.
Azure Network Watcher 193

Voici quelques exemples courants illustrant l’application possible de règles NSG :


 Au niveau d’un sous-réseau : autorisez le port TCP 5986 pour la gestion à distance sécuri-
sée à partir du sous-réseau de gestion 10.1.10.20/24.
 Au niveau d’un groupe de sécurité d’application : autorisez le port TCP 80 pour le trafic
HTTP vers les applications Web et appliquez le groupe de sécurité d’application à
toutes les machines virtuelles d’applications Web.
 Au niveau de la carte réseau virtuelle : autorisez le port TCP 3389 pour l’accès au
bureau distant à partir du sous-réseau de gestion 10.1.10.20/24.
Il s’agit des règles de base, qui autorisent explicitement certains trafics. Si aucune règle
allow ne correspond à un paquet réseau, les règles DenyAll par défaut sont appliquées pour
éliminer le trafic.
Lors des tests de l’application décrite dans l’exemple, vous avez peut-être configuré
cette règle HTTP pour ne traiter que le trafic provenant de l’un de vos sous-réseaux sur
place. Les clients utilisant l’Internet public ne peuvent désormais plus se connecter.

Essayer maintenant
Pour déterminer l’endroit où une règle NSG est appliquée, procédez comme suit.

1 Dans Network Watcher, sélectionnez Security Group View (Vue du groupe de


sécurité) à gauche.
2 Sélectionnez votre groupe de ressources, par exemple azuremolchapter12, et
votre machine virtuelle, par exemple molvm. L’affichage des règles effectives
prend quelques secondes, comme le montre la figure 12.7.

Figure 12.7 Lorsque vous sélectionnez une machine virtuelle, Network Watcher examine comment toutes les
règles NSG sont appliquées et leur ordre de priorité, et indique les règles effectives qui sont actuellement
appliquées. Vous pouvez ensuite accéder rapidement aux niveaux du sous-réseau, de la carte réseau virtuelle
et des règles par défaut pour rechercher et modifier l’endroit où une règle donnée est appliquée.
194 CHAPITRE 12 Surveillance et dépannage

Les règles par défaut de la machine virtuelle que vous avez créée précédemment ne sont
pas passionnantes, mais vous pouvez naviguer dans entre le sous-réseau, l’interface réseau
et les règles par défaut pour vous faire une idée de la manière dont des règles effectives
sont combinées et comment vous pouvez déterminer l’endroit où les règles sont appli-
quées si vous devez effectuer des modifications.

12.3.3 Capture de paquets réseau


Supposons que vous ayez mis à jour vos règles de sécurité réseau pour permettre l’accès à
votre application aux clients de l’Internet public, mais un client vous confie avoir observé
un comportement étrange. L’application Web ne se charge parfois pas ou elle affiche des
images tronquées. Sa connexion semble souvent expirer.
Les problèmes intermittents sont souvent les plus difficiles à résoudre, en particulier si
vous avez un accès limité, voire aucun accès, à l’ordinateur posant problème. Pour le
dépannage, une approche courante consiste à capturer les paquets réseau et à les exami-
ner pour détecter d’éventuels problèmes tels que des erreurs de transmission réseau, des
paquets mal formés ou des problèmes de protocole et de communication.
Avec les captures de paquets réseau, vous obtenez le flux de données brut entre deux
hôtes ou plus. L’analyse des captures réseau est un art et elle n’est pas destinée aux âmes
sensibles! Des outils tiers spéciaux tels que Wireshark de Riverbed, Fiddler de Telerik et
Message Analyzer de Microsoft fournissent un moyen graphique pour afficher et filtrer les
paquets réseau, en les regroupant généralement par communications ou protocoles asso-
ciés. La figure 12.8 illustre un exemple de capture de paquets réseau.
Pour permettre à Network Watcher de capturer des paquets depuis et vers vos
machines virtuelles, commencez par installer l’extension de machine virtuelle Network
Watcher. Comme vous l’avez vu dans la section précédente, les extensions de machine vir-
tuelle permettent à la plate-forme Azure d’accéder à l’intérieur d’une machine virtuelle
pour effectuer diverses tâches de gestion. L’extension Network Watcher examine le trafic
réseau à destination et en provenance de la machine virtuelle.

Essayer maintenant
Pour installer l’extension de machine virtuelle Network Watcher et capturer des paquets
réseau, procédez comme suit.

1 Dans le portail Azure, sélectionnez Virtual Machines (Machines virtuelles) dans


le menu de gauche, puis sélectionnez votre machine virtuelle, par exemple
molvm.
2 Sous la catégorie Settings (Paramètres) à gauche dans la fenêtre de la machine
virtuelle, sélectionnez Extensions. Choisissez Add an Extension (Ajouter une
extension).
3 Dans la liste des extensions disponibles, choisissez Network Watcher Agent for
Windows (Agent Network Watcher pour Windows), puis sélectionnez Create
(Créer). Pour confirmer l’installation de l’extension, sélectionnez OK.
4 L’installation de Network Watcher Agent sur votre machine virtuelle peut
prendre quelques minutes. Pour retourner au menu Network Watcher dans le
portail Azure, sélectionnez All Services (Tous les services) en haut du menu de
navigation Services situé à gauche dans le portail, puis choisissez Network Wat-
cher.
Azure Network Watcher 195

Figure 12.8 Capture réseau lorsqu’elle est affichée dans Message Analyzer de Microsoft. Chaque paquet
individuel est disponible pour inspection. Vous pouvez regrouper et filtrer les données par protocole de
communication ou hôte-client. Cette profondeur des données réseau vous permet d’examiner les paquets réels
qui circulent entre les nœuds pour dépanner l’endroit où une erreur est survenue. Un ancien collègue m’a dit un
jour : « Les paquets ne mentent jamais. » Le casse-tête consiste à comprendre ce que disent les paquets.

5 Sous Network Diagnostic Tool (Outils de diagnostic réseau), à gauche dans la


fenêtre Network Watcher, sélectionnez Packet Capture (Capture de paquets),
puis choisissez Add a New Capture (Ajouter une nouvelle capture).
6 Sélectionnez votre groupe de ressources, par exemple azuremolchapter12, et la
machine virtuelle, par exemple molvm. Saisissez le nom de votre capture de
paquets, par exemple molcapture.
Par défaut, les captures de paquets sont enregistrées dans Azure Storage.
Vous pouvez également choisir Enregistrer dans un fichier et indiquer un
répertoire local sur la machine virtuelle source. L’extension Network Watcher
Agent écrit ensuite le fichier de capture de paquets sur le disque de la machine
virtuelle.
7 Si vous ne l’avez pas déjà sélectionné, choisissez le nom du compte de stockage
commençant par le nom de votre groupe de ressources, par exemple azuremol-
chapter12diag739. Il s’agit du compte de stockage créé et utilisé par l’extension
de diagnostics de machines virtuelles que vous avez activée précédemment.
8 Vous pouvez spécifier une taille de fichier maximale (1 Go par défaut) et une
durée maximale (30 minutes par défaut) pour la capture des paquets. Pour ne
capturer que le trafic en provenance de sources ou de ports spécifiques, vous
pouvez également ajouter un filtre afin de limiter la portée de vos captures de
paquets.
196 CHAPITRE 12 Surveillance et dépannage

9 Réglez la durée sur 60 secondes. Pour démarrer la capture des paquets, sélec-
tionnez OK, comme le montre la figure 12.9.

Figure 12.9 Lorsque vous lancez une capture de paquets, vous pouvez
enregistrer les données dans Azure Storage ou un fichier local sur la machine
virtuelle. Vous pouvez également indiquer une taille ou une durée maximale des
captures de paquets. Pour limiter les captures à des adresses ou des ports
particuliers, vous pouvez ajouter des filtres et définir vos besoins spécifiques.

Une ou deux minutes sont nécessaires pour lancer la capture. Pendant la capture, les don-
nées sont transférées vers le compte Azure Storage ou un fichier local sur la machine vir-
tuelle. La liste des captures apparaît dans la page du portail Network Watcher. Si vous
transférez les journaux vers Azure Storage, vous pouvez faire en sorte que la capture soit
directement acheminée vers le compte de stockage, puis télécharger le fichier de capture
.cap. Vous pouvez ensuite ouvrir la capture de paquets dans un programme d’analyse
comme expliqué précédemment. En fait, l’exemple de capture réseau présenté précé-
demment dans la figure 12.8 provenait d’une capture de paquets Azure Network Wat-
cher!
Exercice pratique : Création d’alertes de performance 197

12.4 Exercice pratique : Création d’alertes de performance


Les fonctions de diagnostics de machines virtuelles, de métriques et Network Watcher
vous ont permis, je l’espère, de vous faire une idée des options disponibles dans Azure
pour vous aider à résoudre les problèmes liés aux applications. Certaines fonctions, telles
que les diagnostics de démarrage et l’extension de diagnostics de machines virtuelles, sont
surtout utiles lorsque vous les activez et les configurez pendant le déploiement de
machines virtuelles. Pendant cet exercice pratique, vous allez configurer des alertes de
métriques afin de voir les types de notification que vous pouvez recevoir et comment se
présentent les alertes lorsque vous les recevez :
1 Dans le portail Azure, accédez à la machine virtuelle que vous avez créée lors
des exercices précédents. Dans la section Monitoring (Surveillance) de la
machine virtuelle, sélectionnez Alerts (Alertes).
2 Choisissez Add Metric Alert (Ajouter une alerte de métrique), puis créez une
alerte lorsque la métrique \Memory\% Committed Bytes in Use est supérieure
au seuil de 10 pour cent par rapport au 5 dernières minutes. Un graphique
devrait vous montrer les dernières métriques; réglez alors le seuil si la valeur de
10 % ne déclenche pas d’alerte.
3 Cochez la case Email Owners, Contributors, and Readers (Envoyer un courriel
aux propriétaires, contributeurs et lecteurs).
4 Patientez quelques minutes pour que la notification d’alerte soit transmise.
Toute personne possédant des autorisations RBAC sur la machine virtuelle
recevra cette notification.
5 Pour définir la portée des notifications d’alerte, modifiez la règle d’alerte de
manière à la notifier plutôt par des courriels d’administrateur supplémentaires
et indiquez un compte de messagerie différent de celui associé à votre abonne-
ment Azure. Cette approche simule la façon dont vous pouvez envoyer des noti-
fications à une adresse d’assistance spécifique ou à une liste de distribution de
propriétaires d’application, par exemple.
6 Selon votre rôle et votre implication sur la machine virtuelle et la gestion des
applications, vous pouvez découvrir comment générer des alertes en fonction
des entrées de journal Azure. Sélectionnez votre machine virtuelle, puis choisis-
sez de nouveau Alert rules (Règles d’alerte). Cette fois-ci, choisissez Add Acti-
vity Log Alert (Ajouter une alerte du journal d’activité). Examinez les options
disponibles pour les services et les actions Azure pouvant servir à générer des
alertes. Essayez de créer une alerte lorsque votre machine virtuelle est redémar-
rée, comme le montre la figure 12.10.

Figure 12.10 Créez une alerte quand un événement de sécurité pour votre
machine virtuelle enregistre un redémarrage de la machine virtuelle.
Partie 3

Sécurisé par défaut

D ans un monde en ligne où les applications sont généralement connectées à


l’Internet 24 heures sur 24, la menace d’une attaque numérique n’est que trop réelle.
Ces attaques coûtent du temps et de l’argent et ébranlent la confiance des clients. La
sécurité et la protection des données sont des éléments centraux dans la création d’appli-
cations hautement redondantes et distribuées. Azure dispose de plusieurs fonctionnali-
tés intégrées pour sécuriser vos données, notamment le chiffrement, la surveillance, le
coffre de clés numériques et les sauvegardes. Dans cette partie du livre, vous apprendrez
à sécuriser et à protéger vos applications dès le début.
Sauvegarde, récupération
et réplication

Les prochains chapitres présentent quelques-uns des principaux services et fonctionnalités


Azure qui vous permettent de créer de la sécurité au sein de vos applications. C’est proba-
blement trop subjectif : la sécurité ne devrait pas être une fonctionnalité ou une considéra-
tion complémentaire. Au contraire, la sécurité doit être intrinsèquement intégrée dans le
cœur et dans l’âme de votre application dès le début. Dans ce chapitre, vous commencez
votre cheminement vers la sécurité Azure en explorant la façon de sauvegarder et de récu-
pérer vos données. Les sauvegardes peuvent ne pas sembler communément liées au thème
de la sécurité. Mais il faut voir la sécurité au-delà du chiffrement des données ou des certifi-
cats SSL de sites Web. Qu’en est-il de la sécurité de vos données contre les pannes, la perte
de données et le piratage? Une discussion sur les sauvegardes et la réplication nous permet
de faire le pont entre la section précédente sur la haute disponibilité et la présente section
sur la sécurité.
Les sauvegardes peuvent sembler sans intérêt et, en tant qu’ancien administrateur
de sauvegarde, je peux vous dire qu’il n’y a rien de très excitant à travailler sur des sau-
vegardes et des rotations! Mais les sauvegardes en temps opportun qui fonctionnent
sont cruciales pour protéger vos applications et vous donnent l’assurance que, dans le
pire des cas, vous pouvez restaurer vos données rapidement et de manière fiable. Vous
pouvez également répliquer vos machines virtuelles d’une région Azure à une autre.
Cette capacité s’appuie sur les concepts de haute disponibilité que nous avons exami-
nés dans le chapitre 7.
Dans ce chapitre, vous allez apprendre à sauvegarder et à restaurer des machines
virtuelles, puis à répliquer des machines virtuelles automatiquement sur Azure. Toutes
ces sauvegardes et tous ces points de restauration sont chiffrés pour sécuriser vos don-
nées.

201
202 CHAPITRE 13 Sauvegarde, récupération et réplication

13.1 Service de sauvegarde Azure


L’une des choses intéressantes au sujet de la sauvegarde d’Azure est qu’elle est à la fois un ser-
vice et un grand réservoir de stockage pour les sauvegardes réelles. Le service de sauvegarde
Azure peut protéger les machines virtuelles dans Azure, les machines virtuelles ou serveurs phy-
siques sur place, et même les machines virtuelles d’autres fournisseurs, tels que Amazon Web
Services (AWS). Les sauvegardes de données peuvent être stockées sur vos propres groupes de
stockage sur place ou dans un coffre de récupération Azure. La figure 13.1 montre comment le
service de sauvegarde Azure peut protéger et orchestrer tous vos besoins de sauvegarde.

Machines virtuelles Serveurs physiques Machines


Azure virtuelles
sur place sur place externes
VMs
(VMware/Hyper-V) (Windows/Linux) (comme AWS)

Plusieurs sources de
données peuvent être
sauvegardées.
Le service de sauvegarde Azure Service de
orchestre les sauvegardes de sauvegarde Les sauvegardes de données
données par stratégie définie. Azure peuvent être stockées dans Azure
ou pour sécuriser un emplacement
sur place.

Coffre des Soluon de


services de stockage sur
récupéraon
Azure place

Figure 13.1 Plusieurs machines virtuelles ou serveurs physiques provenant de différents


fournisseurs et emplacements peuvent être sauvegardés au moyen du service d’orchestration
central. Le service de sauvegarde Azure utilise des stratégies définies pour sauvegarder les
données à une fréquence donnée ou selon une planification établie. Ces sauvegardes peuvent
ensuite être stockées dans Azure ou dans une solution de stockage sur place. Dans
l’ensemble, les données sont chiffrées pour fournir une sécurité accrue.

À sa base, le service de sauvegarde Azure gère les calendriers de sauvegarde et la rétention des
données, et orchestre les tâches de sauvegarde ou de restauration. Pour sauvegarder des
machines virtuelles Azure, il n’y a aucun composant serveur à installer ni aucun agent à instal-
ler manuellement. Toutes les opérations de sauvegarde et de restauration sont intégrées à la
plateforme Azure.
Pour sauvegarder des machines virtuelles ou des serveurs physiques sur place, ou
des machines virtuelles dans d’autres fournisseurs tels que AWS, vous installez un petit
agent qui permet une communication sécurisée en allers et retours avec Azure. Cette
communication sécurisée garantit que vos données sont chiffrées pendant le transfert.
Pour les données stockées dans Azure, les sauvegardes sont chiffrées à l’aide d’une clé
de chiffrement que vous créez et à laquelle vous conservez l’accès exclusif. Vous seul aurez
accès à ces sauvegardes chiffrées. Vous pouvez également sauvegarder des machines vir-
tuelles chiffrées, sujet que nous examinons dans le chapitre suivant, pour vous assurer que
vos sauvegardes de données sont vraiment sécurisées.
Il n’y a aucuns frais de flux de trafic réseau pour la sauvegarde et la restauration des
données. Vous ne payez que pour chaque instance protégée, quelle que soit votre
consommation de stockage dans Azure. Si vous utilisez un emplacement de stockage sur
Service de sauvegarde Azure 203

place, le coût d’utilisation de la sauvegarde Azure est minime, car il n’y a pas de frais de
stockage Azure ou de trafic réseau.

13.1.1 Stratégies et rétention


Le service de sauvegarde Azure utilise un modèle de sauvegarde incrémentielle. Lorsque vous
protégez une instance, la première opération de sauvegarde effectue une sauvegarde complète
des données. Après cela, chaque opération de sauvegarde effectue une sauvegarde incrémen-
tielle des données. Chacune de ces sauvegardes est appelée un point de récupération. Les sauve-
gardes incrémentielles sont une approche efficace dans le temps qui optimise l’utilisation du
stockage et de la bande passante réseau. Seules les données qui ont changé depuis la sauve-
garde précédente sont transférées en toute sécurité vers l’emplacement de sauvegarde de desti-
nation. La figure 13.2 détaille le fonctionnement des sauvegardes incrémentielles.

Sauvegarde complète Sauvegarde incrémenelle Sauvegarde incrémenelle

Machine
virtuelle
protégée
La première opéraon de
sauvegarde permet de
sauvegarder toutes les
données de la machine
virtuelle vers l’emplacement
de récupéraon séleconné.
La prochaine tâche de Les tâches de sauvegarde
sauvegarde ne sauvegarde supplémentaires connuent à
que les données qui ont été sauvegarder uniquement les
modifiées depuis l’opéraon données qui ont été modifiées
de sauvegarde précédente. depuis l’opéraon de sauvegarde
précédente.
Figure 13.2 Les sauvegardes incrémentielles ne sauvegardent que les données qui ont été modifiées depuis
l’opération précédente. La première sauvegarde est toujours une sauvegarde complète. Chaque tâche de
sauvegarde suivante ne sauvegarde que les données qui ont été modifiées depuis la tâche précédente. Vous
gérez la fréquence des sauvegardes complètes avec les stratégies. Cette approche réduit au minimum la
quantité de données qui doit circuler en toute sécurité sur le réseau et être hébergée dans l’emplacement de
stockage de destination. Le service de sauvegarde Azure maintient la relation des sauvegardes incrémentielles
les unes avec les autres pour faire en sorte que lorsque vous restaurez des données, elles sont cohérentes et
complètes.

Avec le service de sauvegarde Azure, vous pouvez stocker jusqu’à 9 999 points de récupération
pour chaque instance que vous protégez. Pour certains contextes, si vous avez fait une sauve-
garde quotidienne régulière, celle-ci couvrira plus de 27 ans. Et vous pouvez conserver des sau-
vegardes hebdomadaires pendant près de 200 ans. Je pense que cela couvrirait la plupart des
situations d’audit! Vous pouvez choisir de conserver les sauvegardes sur une base quotidienne,
hebdomadaire, mensuelle ou annuelle, ce qui est généralement conforme à la plupart des stra-
tégies de sauvegarde existantes.
Pour mettre en œuvre la stratégie de sauvegarde optimale pour votre charge de travail,
vous devez comprendre et déterminer votre objectif de point de récupération (RPO) accep-
table et votre objectif de délai de récupération (RTO).
204 CHAPITRE 13 Sauvegarde, récupération et réplication

OBJECTIF DE POINT DE RÉCUPÉRATION


L’objectif de point de récupération définit le point que votre dernière sauvegarde vous permet
de restaurer. Par défaut, le service de sauvegarde Azure effectue une sauvegarde quotidienne.
Vous définissez ensuite des stratégies de rétention quant au nombre de jours, de semaines, de
mois ou d’années pendant lesquels ces points de récupération devront être conservés. Bien
que l’objectif de point de récupération soit généralement utilisé pour définir la quantité maxi-
male de perte de données acceptable, vous devez également définir jusqu’où vous souhaitez
reculer dans le temps. La figure 13.3 montre comment l’objectif de point de récupération défi-
nit la quantité de perte de données acceptable.

Sauvegarde
quodienne
Machine
Perte de données acceptable
virtuelle
protégée
Sauvegarde
hebdoma-
daire

Perte de données Perte de données


maximale de 1 maximale de 1
jour semaine
Figure 13.3 L’objectif de point de récupération définit la quantité de perte de données que vous
pouvez soutenir pour une instance protégée. Plus l’objectif de point de récupération est long, plus la
perte de données acceptable est importante. Un objectif de point de récupération d’un jour signifie que
jusqu’à 24 heures de données peuvent être perdues, selon le moment où la perte de données s’est
produite par rapport à la dernière sauvegarde. Un objectif de point de récupération d’une semaine
signifie que jusqu’à sept jours de données pourraient être perdus.
Les pannes majeures et la perte de grandes quantités de données sont des occurrences rares.
Les incidents les plus fréquents ont trait à la perte de petites quantités de données ou à l’écrase-
ment de données. Ces incidents ne sont souvent remarqués ou signalés qu’un certain temps
après que la perte de données se soit produite. C’est là que la stratégie de rétention pour vos
instances protégées devient importante. Si vous disposez d’une stratégie de rétention courte, il
se peut que vous ne puissiez pas restaurer les données à partir d’un moment précis dans le
temps. Vous devez déterminer un équilibre entre la rétention de plusieurs points de récupéra-
tion et les coûts de stockage pour conserver tous ces points de récupération.
Le stockage Azure est relativement bon marché : généralement inférieur à 0,02 $ par
gigaoctet de stockage. Cela équivaut à environ 2 $ par mois pour une sauvegarde de don-
nées de machine virtuelle de 100 Go. En fonction de la quantité de vos données qui ont
été modifiées, la taille des points de récupération incrémentielle pourrait augmenter rapi-
dement. La rétention des points de récupération pendant des semaines ou des mois pour-
rait représenter un coût atteignant des dizaines de dollars par mois par instance protégée.
Ce n’est pas pour vous décourager, mais il est important de planifier vos besoins et de cal-
culer judicieusement vos coûts. Le stockage semble bon marché à moins de 0,02 $ par
gigaoctet jusqu’à ce que vous ayez des centaines de gigaoctets par instance protégée et des
dizaines ou même des centaines d’instances à protéger.
Je suis un ancien administrateur de sauvegarde. La capacité de stockage était souvent
un facteur central lorsque je devais déterminer le nombre de points de récupération à
retenir. Cette capacité de stockage a souvent nécessité des compromis à l’égard de ces
objectifs de point de récupération. Si vous utilisez le stockage Azure plutôt qu’une solu-
tion de stockage sur place, vous n’avez pas besoin de vous soucier de la capacité de stoc-
kage disponible. Je ne peux pas garantir qu’il y aura plus de stockage que votre limite de
carte de crédit!
Service de sauvegarde Azure 205

OBJECTIF DE DÉLAI DE RÉCUPÉRATION


L’objectif de délai de récupération dicte la rapidité avec laquelle vous pouvez restaurer vos
données. Si vous choisissez de sauvegarder des machines virtuelles Azure et de stocker les
points de récupération dans une solution de stockage sur place, ces sauvegardes seront beau-
coup plus longues à restaurer que si elles étaient hébergées directement dans le stockage
Azure. L’inverse serait vrai si vous aviez sauvegardé des machines virtuelles ou des serveurs phy-
siques sur place dans le stockage Azure. La figure 13.4 décrit l’objectif de délai de récupéra-
tion.
Sauvegarde
complète
unique Durée acceptable de panne
Machine pour une applicaon
virtuelle
protégée
Plusieurs
sauvegardes
incrémenelles
Temps de Temps de
récupéraon de récupéraon
données le plus progressivement
court plus long
Figure 13.4 L’objectif de délai de récupération définit le délai acceptable pour que
le processus de restauration des données s’exécute et que l’application redevienne
disponible. Plus les points de récupération sont nombreux dans le processus de
restauration, plus l’objectif de délai de récupération est long. De la même manière,
plus le stockage de sauvegarde est proche du point de restauration, plus l’objectif
de délai de récupération est court.

Dans l’un ou l’autre scénario, les données de point de récupération doivent être transférées de
l’emplacement de stockage du point de récupération vers l’emplacement de restauration. Pour
les opérations de restauration volumineuses, où vous devrez peut-être transférer des centaines
de gigaoctets, votre bande passante réseau devient un réel goulot d’étranglement ayant un
effet sur la rapidité avec laquelle vous pourrez rendre les applications disponibles de nouveau.
Il en va de même pour les stratégies de rétention longue comportant de nombreux
points de récupération incrémentiels successifs. La restauration des données peut nécessi-
ter le montage et la restauration de plusieurs points de récupération. Votre travail consiste
à déterminer jusqu’où vous devez pouvoir vous déplacer dans le temps et combien de
temps il vous faudra pour restaurer les données.
L’objectif de point de récupération et l’objectif de délai de récupération varient en
fonction de vos applications et de votre utilisation professionnelle. Une application qui
traite les commandes en temps réel ne peut pas tolérer beaucoup de pannes ou de temps
d’arrêt, de sorte que l’objectif de point de récupération et l’objectif de délai de récupéra-
tion sont susceptibles d’être très bas. Vous utilisez généralement une base de données
pour contenir vos données, de sorte que vous devez généralement concevoir des tolé-
rances au sein de l’application plutôt que de compter sur des points de récupération. Si
vous repensez à Cosmos DB, il n’y a rien à sauvegarder : la plateforme Azure exécute la
réplication et la protection des données pour vous. Si vous avez créé une solution person-
nalisée sur MySQL ou Microsoft SQL Server, vous utiliserez généralement un type simi-
laire de mise en grappe et de réplication pour vous assurer que plusieurs copies de la base
de données existent, de sorte que la perte d’une instance ne nécessiterait pas la restaura-
tion à partir d’une sauvegarde. Les sauvegardes servent principalement à protéger les
données contre une panne majeure ou une corruption.
206 CHAPITRE 13 Sauvegarde, récupération et réplication

13.1.2 Calendriers de sauvegarde


Comment gérez-vous la fréquence de vos sauvegardes et la rétention des points de récupéra-
tion? Dans le service de sauvegarde Azure, ces paramètres sont définis dans les stratégies. Vous
générez ces stratégies pour couvrir les différents scénarios que vous souhaitez protéger et vous
pouvez réutiliser les stratégies pour plusieurs instances protégées.
Par exemple, une stratégie de sauvegarde peut définir que vous souhaitez effectuer
une sauvegarde à 18 h 30 chaque jour. Vous souhaitez conserver les sauvegardes quoti-
diennes pendant six mois et à tour de rôle pour conserver les sauvegardes hebdomadaires
pendant deux ans. Pour des raisons de conformité, vous conservez des sauvegardes men-
suelles pendant cinq ans. Une sauvegarde annuelle est conservée pendant 10 ans. La
figure 13.5 affiche ces stratégies de rétention comme options par défaut lorsque vous
créez une stratégie de sauvegarde.
Les valeurs de rétention affichées dans la figure 13.5 peuvent sembler excessives, mais,
pour une application qui englobe la communication et la messagerie, vous devez souvent
conserver des sauvegardes à des fins de réglementation et de conformité pour ces échéan-
ciers à long terme. Le service de sauvegarde Azure offre la souplesse nécessaire pour défi-
nir des stratégies qui conviennent à diverses charges d’applications et assurer rapidement
la conformité.

Essayer maintenant
Toutes vos sauvegardes Azure sont stockées dans un coffre de services de récupération.
Pour créer une stratégie de coffre et de sauvegarde, procédez comme suit.

1 Ouvrez le portail Azure, puis sélectionnez Créer une ressource en haut à


gauche dans le menu.
2 Recherchez et sélectionnez Sauvegarde et récupération de site (OMS), puis choisis-
sez Créer.
3 Fournissez un nom, tel que azuremol, puis choisissez Créer un nouveau groupe de
ressources. Entrez un nom de groupe de ressources, tel que azuremolchapter13.
4 Sélectionnez un emplacement, puis choisissez Créer.
5 Sélectionnez Groupes de ressources dans le menu à gauche dans le portail, puis
choisissez le groupe de ressources que vous avez créé.
6 Sélectionnez votre coffre de services de récupération dans la liste des ressources dis-
ponibles, choisissez Stratégies de sauvegarde dans le menu à gauche, puis sélection-
nez Ajouter une stratégie.
7 Sélectionnez le type de stratégie de machine virtuelle Azure, puis fournissez un
nom pour votre nouvelle stratégie, tel que molpolicy. Par défaut, une sauvegarde
est créée chaque jour. Sélectionnez le fuseau horaire le plus approprié dans le
menu déroulant. Par défaut, Azure utilise le temps universel coordonné (UTC).
Si vous le souhaitez, examinez et ajustez les stratégies de rétention pour chaque
jour, chaque semaine, chaque mois et chaque année. La section précédente sur les
calendriers de sauvegarde a détaillé ces valeurs de rétention; ces options varient
généralement lorsque vous créez et appliquez des stratégies de sauvegarde pour
protéger vos instances de machines virtuelles.
8 Lorsque vous êtes prêt, sélectionnez Créer.
Service de sauvegarde Azure 207

Figure 13.5 Lorsque vous créez une stratégie de sauvegarde Azure, vous pouvez définir la durée de
conservation des points de récupération. Ces valeurs de rétention vous permettent de créer des
stratégies de manière à ce qu’elles s’adaptent aux diverses exigences de conformité et d’audit
auxquelles vous devez adhérer.

La vie simple
Vous pouvez également configurer des sauvegardes de machines virtuelles lorsque vous
créez une machine virtuelle dans le portail Azure. Sur la page Paramètres où vous confi-
gurez les paramètres de réseau virtuel ou les options de diagnostic et de dépannage,
vous pouvez activer la sauvegarde Azure. Vous pouvez choisir un coffre de service de récu-
pération existant ou en créer un, et créer ou utiliser une stratégie de sauvegarde. Vous
ne pouvez pas actuellement activer les sauvegardes dans le cadre du déploiement d’une
machine virtuelle dans Azure CLI ou Azure PowerShell, mais cette exécution se fait géné-
ralement en une seule commande après le déploiement.
208 CHAPITRE 13 Sauvegarde, récupération et réplication

(suite)
J’aime planifier une stratégie de sauvegarde, des stratégies de rétention et des calen-
driers, c’est pourquoi ces exercices commencent par créer le coffre de services de récu-
pération et les stratégies. Mais, si vous souhaitez créer rapidement une machine virtuelle
et activer les sauvegardes, vous pouvez le faire dans le portail Azure en une seule étape.

Vous disposez maintenant d’une stratégie de sauvegarde, laquelle définit également des straté-
gies de rétention pour différentes périodes, mais vous encore n’avez rien à sauvegarder. Créons
une machine virtuelle avec Cloud Shell afin que vous puissiez créer une sauvegarde et, dans un
exercice ultérieur, répliquer les données.

Essayer maintenant
Pour créer une machine virtuelle de test pour la sauvegarde et la réplication, procédez
comme suit.

1 Sélectionnez l’icône Cloud Shell en haut du portail Azure.


2 Créez une machine virtuelle avec az vm create. Fournissez le nom du groupe
de ressources créé dans le laboratoire précédent, tel que azuremolchapter13,
puis entrez un nom de machine virtuelle, tel que molvm:
az vm create \
--resource-group azuremolchapter13 \
--name molvm \
--image win2016datacenter \
--admin-username azuremol \
--admin-password P@ssw0rdMoL123

Une stratégie de sauvegarde est définie et une machine virtuelle de test est prête. Pour voir la
sauvegarde Azure en action, appliquons votre stratégie de sauvegarde à la machine virtuelle.

Essayer maintenant
Pour sauvegarder une machine virtuelle avec votre stratégie définie, procédez comme
suit.

1 Sélectionnez Groupes de ressources dans le menu à gauche dans le portail.


Choisissez le groupe de ressources, puis la machine virtuelle que vous avez
créée.
2 Sous Opérations, sélectionnez Sauvegarde.
3 Assurez-vous que votre coffre de services de récupération est sélectionné, puis
choisissez votre stratégie de sauvegarde dans le menu déroulant. Examinez les
options de calendrier et de rétention, puis choisissez Activer la sauvegarde,
comme l’illustre la figure 13.6.
4 Il faut quelques secondes pour que la stratégie de sauvegarde soit appliquée.
Une fois qu’elle est activée, revenez aux paramètres de sauvegarde. Le statut de
la machine virtuelle affiche « Avertissement (sauvegarde initiale en attente) ».
Pour créer la première sauvegarde, choisissez le bouton Sauvegarder mainte-
nant, comme l’illustre figure 13.7.
Service de sauvegarde Azure 209

Figure 13.6 Si nécessaire, choisissez votre coffre de services de récupération, puis sélectionnez
votre stratégie de sauvegarde dans la liste des stratégies disponibles. Le calendrier des sauvegardes
et les options de rétention sont affichés pour révision.

Figure 13.7 Pour créer la première sauvegarde, sélectionnez le bouton Sauvegarder maintenant.
Le statut est mis à jour une fois la sauvegarde terminée et affiche la dernière heure de sauvegarde,
le dernier point de restauration et le point de restauration le plus ancien.
210 CHAPITRE 13 Sauvegarde, récupération et réplication

La première opération de sauvegarde complète peut prendre de 15 à 20 minutes. Pour voir la


progression de la tâche de sauvegarde, vous pouvez sélectionner l’option Afficher toutes les
tâches. Il n’y a pas de barre de progression ni d’indicateur de pourcentage, mais vous pouvez
constater que le travail est toujours en cours d’exécution. Voilà tout ce qu’il faut pour sauvegar-
der des machines virtuelles et protéger vos données dans Azure! Continuez votre lecture pour
voir comment vous pouvez restaurer les données en cas de problèmes.

13.1.3 Restauration d’une machine virtuelle


Le service de sauvegarde Azure vous permet de restaurer une machine virtuelle complète ou
d’effectuer une restauration au niveau du fichier. Au cours de toutes mes années d’expérience,
les opérations de restauration au niveau des fichiers ont été les plus courantes. Ce type de tra-
vail de restauration est généralement effectué lorsque les fichiers sont supprimés ou écrasés
accidentellement. Les restaurations au niveau des fichiers déterminent généralement les straté-
gies de rétention pour vos sauvegardes. Plus les données sont importantes, plus il est probable
que vous souhaitiez conserver les sauvegardes plus longtemps, au cas où vous recevriez un
appel de fin de soirée vous demandant de restaurer un fichier d’il y a six mois.
Une restauration complète de la machine virtuelle, comme vous pouvez vous y
attendre, restaure l’intégralité de la machine virtuelle. J’ai rarement effectué une restaura-
tion de machine virtuelle complète pour ramener une machine virtuelle supprimée en
ligne. Un bon cas d’utilisation d’une restauration complète de machine virtuelle consiste
à fournir une machine virtuelle de test qui a un fonctionnement équivalent à celui de
l’original. Vous pouvez restaurer une machine virtuelle, puis tester une mise à niveau logi-
cielle ou une autre procédure de maintenance. Cela peut vous aider à déceler des pro-
blèmes potentiels et à créer un plan pour gérer la machine virtuelle de production réelle.
Il est également important de tester régulièrement vos sauvegardes. N’attendez pas
qu’une situation survienne et vous oblige à restaurer des données dans un scénario réel.
Faites confiance au service de sauvegarde Azure, mais assurez-vous de savoir de quelle
façon et à quel endroit vous devrez restaurer les données en cas de besoin!
RESTAURATION AU NIVEAU DU FICHIER
Une restauration au niveau du fichier est un processus assez sympa du service de sauvegarde
Azure. Pour que vous disposiez d’une certaine souplesse dans la façon et l’endroit où vous res-
taurez des fichiers, Azure crée un script de récupération que vous téléchargez et exécutez. Ce
script de récupération est protégé par un mot de passe afin que vous seul puissiez exécuter le
processus de récupération. Lorsque vous exécutez le script de récupération, vous êtes invité à
entrer le mot de passe avant de pouvoir continuer. La fenêtre de téléchargement du script de
récupération est illustrée à la figure 13.8.
Lorsque vous exécutez le script de récupération, votre point de récupération est
connecté en tant que système de fichiers local sur votre ordinateur. Pour les machines vir-
tuelles Windows, un script PowerShell est généré et un volume local est connecté, tel que
F:. Pour les machines virtuelles Linux, le point de récupération est monté en tant que
disque de données, tel que /dev/sdc1, dans votre volume domestique. Dans les deux cas,
le script de récupération indique clairement l’endroit où vous pouvez trouver vos fichiers.
Une fois que vous avez terminé la restauration des fichiers à partir du coffre de récupé-
ration, vous revenez au portail Azure et sélectionnez l’option Démonter les disques. Ce
processus détache les disques de votre ordinateur local et les renvoie pour une utilisation
dans le coffre de récupération. Ne vous inquiétez pas si vous oubliez d’effectuer ce proces-
sus de démontage lors que vous êtes dans le feu de l’action et que vous devez restaurer
rapidement des fichiers pour une machine virtuelle de production! Azure détache auto-
matiquement tous les points de récupération attachés après 12 heures.
Service de sauvegarde Azure 211

Figure 13.8 Lorsque vous effectuez une


restauration au niveau du fichier, vous choisissez
un point de récupération à restaurer. Un script de
récupération est ensuite téléchargé sur votre
ordinateur, script que vous ne pouvez exécuter qu’en
saisissant le mot de passe généré. Le script de
récupération monte le point de récupération en tant
que volume local sur votre ordinateur. Une fois que
vous avez restauré les fichiers dont vous avez besoin,
vous démontez les disques à partir de votre
ordinateur, ce qui les renvoie pour une utilisation
dans le coffre de récupération.

RESTAURATION COMPLÈTE DE MACHINE VIRTUELLE


Une restauration complète de machine virtuelle crée une machine virtuelle, connecte la
machine virtuelle au réseau virtuel et attache tous les disques durs virtuels. Essayons le proces-
sus pour une restauration complète de machine virtuelle. Parce qu’il est toujours préférable de
tester les mises à jour de maintenance avant de les exécuter concrètement, cette restauration
constitue un bon exercice.

Essayer maintenant
Pour restaurer une machine virtuelle complète, procédez comme suit.

1 À partir de votre groupe de ressources, sélectionnez la machine virtuelle que


vous avez sauvegardée dans l’exercice précédent.
2 Sélectionnez l’option Sauvegarde dans le menu à gauche dans la machine vir-
tuelle. La vue d’ensemble de la sauvegarde doit afficher qu’un point de récupé-
ration a été créé, comme illustré à la figure 13.9. Sinon, attendez quelques
minutes, puis revenez à cet exercice. Ou, lisez ce que le processus comporte.
212 CHAPITRE 13 Sauvegarde, récupération et réplication

Figure 13.9 Lorsque la sauvegarde de la machine virtuelle est terminée, la page de présentation affiche les
données de la dernière sauvegarde et des points de restauration disponibles. Pour démarrer le processus de
restauration, sélectionnez Restaurer une machine virtuelle.

3 Sélectionnez le bouton Restaurer une machine virtuelle. Choisissez un point


de restauration dans la liste, puis sélectionnez OK.
4 Choisissez un type de restauration. Vous pouvez choisir Créer une machine vir-
tuelle ou Restaurer des disques.
Lorsque vous choisissez de restaurer des disques, les disques sont restaurés
dans le compte de stockage que vous indiquez. Vous pouvez ensuite attacher
ces disques restaurés à une machine virtuelle existante et obtenir les données
dont vous avez besoin.
Si vous restaurez une machine virtuelle complète, une nouvelle instance de
machine virtuelle est créée et connectée au réseau virtuel, et les disques sont de
nouveaux attachés. Pour cet exercice, choisissez Créer une machine virtuelle,
comme l’illustre la figure 13.10. Fournissez un nom pour la machine virtuelle
restaurée, tel que restoredvm, puis examinez les paramètres pour le réseau vir-
tuel et le stockage. En production, vous connectez généralement la machine
virtuelle restaurée à un réseau virtuel distinct afin qu’il n’y ait aucun effet sur le
trafic de production.
5 Sélectionnez OK, puis Restaurer.
Il faut quelques minutes pour connecter le point de récupération et créer une machine vir-
tuelle restaurée avec les disques précédents attachés. À ce stade, vous pouvez vous connecter à
la machine virtuelle restaurée pour tester les mises à niveau logicielles ou restaurer de grandes
quantités de données selon vos besoins.
Vous pouvez également sauvegarder une application Web, il ne s’agit donc pas unique-
ment d’une approche de machine virtuelle. Le processus est un peu différent, mais les
concepts sont les mêmes. Lorsque vous déplacez votre modèle d’application vers une solu-
tion PaaS en tant qu’application Web, cela ne signifie pas que vous pouvez oublier les
bases de la sauvegarde et de la rétention des données!
Récupération de sites Azure 213

Figure 13.10 Vous pouvez restaurer une machine virtuelle complète ou uniquement
les disques de données. Dans cet exemple, l’on restaure une machine virtuelle complète
et la connecte au même réseau virtuel et au même sous-réseau que la machine virtuelle
d’origine. Dans la pratique, vous devez vous connecter à un autre sous-réseau pour
conserver le trafic réseau séparément des charges de production.

13.2 Récupération de sites Azure


Vous vous souvenez, n’est-ce pas, que nous avons discuté de Cosmos DB, et vous avez appris
qu’en cliquant sur un bouton, vous répliquez vos données dans une région Azure complète-
ment différente pour assurer la redondance et la tolérance aux pannes. Vous pouvez aussi
le faire avec des machines virtuelles entières! La récupération de sites Azure est un service
puissant qui peut faire beaucoup plus que répliquer des machines virtuelles vers une autre
région. La figure 13.11 décrit comment le service de récupération de sites Azure agit pour
orchestrer les charges de travail entre les emplacements.
Un aspect important est que le service de récupération de sites Azure ne sert pas uni-
quement aux machines virtuelles Azure: ce service peut être utilisé pour répliquer des
machines virtuelles VMware ou Hyper-V sur place vers Azure pour une récupération après
sinistre ou dans le cadre d’une migration vers Azure. Vous pouvez également utiliser le
service de récupération de sites Azure uniquement en tant qu’orchestrateur pour répli-
quer des machines virtuelles locales d’un emplacement donné vers un emplacement sur
place secondaire.
De la même manière que le service de sauvegarde Azure ne fonctionne pas unique-
ment avec Azure, le service de récupération de sites Azure ne se limite pas à la réplication
de machines virtuelles Azure. Le service de sauvegarde Azure et le service de récupération
de sites Azure peuvent être utilisés comme solutions hybrides pour la sauvegarde et la
récupération après sinistre. Ces services Azure peuvent être utilisés pour protéger toutes
214 CHAPITRE 13 Sauvegarde, récupération et réplication

Ressources sur place

Machines Machines
Azure Serveurs
virtuelles virtuelles
VMs physiques
VMware Hyper-V

Plusieurs serveurs
virtuels ou physiques
peuvent être protégés
et répliqués avec la La Récupéraon de sites Azure agit
récupéraon de sites. Azure Site comme orchestrateur afin de répliquer
les charges de travail en foncon des
Recovery stratégies définies qui définissent la
planificaon et les emplacements.

Emplacement Les ressources peuvent être


Région Azure secondaire sur répliquées ou migrées vers
place Azure ou un emplacement
sur place secondaire.

Figure 13.11 Le service de récupération de sites Azure orchestre la réplication


et la migration des ressources physiques ou virtuelles vers un autre emplacement.
Les emplacements locaux et Azure peuvent servir de points sources et de points
de destination pour la protection, la réplication ou la migration.

vos charges de travail, à la fois sur place et dans Azure. Vous pouvez générer une structure
de production de rapports unique pour la conformité et la validation afin de vous assurer
que toutes les charges de travail que vous croyez protégées sont en effet à l’abri de la perte
de données.
Pourquoi utiliseriez-vous le service de récupération de sites Azure? Deux raisons sont
principalement évoquées: la réplication et la migration. La réplication vous protège d’une
panne complète dans la région Azure. Il faudrait un événement catastrophique pour
qu’une région entière se retrouve hors ligne, mais, lorsque vous travaillez dans le domaine
de l’informatique, vous savez que tout est possible. Même les ensembles de disponibilité et
les zones de disponibilité, dont nous avons parlé dans le chapitre 7, ne vous protègent
généralement que d’une panne de moindre envergure dans une région Azure. Si une
panne atteint la région entière, votre application sera touchée. Avec le service de récupé-
ration de sites Azure, l’intégralité de votre environnement d’applications, y compris les
ressources de réseau virtuel, est répliquée dans une région Azure secondaire. En cliquant
sur un bouton, vous pouvez mettre en ligne cet emplacement secondaire et le rendre
actif. Le trafic peut alors être acheminé vers cet emplacement secondaire et vos clients
peuvent continuer à obtenir le service. La figure 13.12 présente une vue d’ensemble de
haut niveau sur la façon dont le service de récupération de sites Azure protège votre envi-
ronnement.
La machine virtuelle est uniquement constituée de métadonnées qui définissent la
taille de la machine virtuelle, les disques attachés et les ressources réseau auxquelles la
machine virtuelle se connecte. Ces métadonnées sont répliquées, ce qui permet aux
machines virtuelles d’être rapidement créées lorsqu’un basculement est lancé. Les
disques virtuels sont répliqués dans l’environnement de récupération et sont attachés
lorsqu’une machine virtuelle de récupération est créée au cours d’un événement de bas-
culement.
Récupération de sites Azure 215

Environnement Environnement
de producon de récupéraon

Est des États-Unis Ouest des États-Unis

MV Azure
Azure Site Recovery
Disques virtuels Disques virtuels
Stratégie de réplicaon
Réplicaon de Configuraon
Réseau machine et données Réseau
Coffre Recovery Services
virtuel Azure virtuelle, de répliquées virtuel Azure
configuraon, venant de la
Sous-réseau de stockage Sous-réseau
producon
et de réseau basée sur une
virtuel stratégie
définie
Figure 13.12 Le service de récupération de sites Azure réplique la configuration, les données et les
réseaux virtuels depuis l’environnement de production vers un environnement de récupération. Les
machines virtuelles ne sont pas créées dans l’environnement de récupération tant qu’un basculement
n’est pas lancé. Seules les données sont répliquées.

Pour la réplication Azure vers Azure, il n’existe pas de calendrier de réplication défini.
Les disques se répliquent en temps quasi réel. Lorsque les données sur les disques virtuels
sources changent, elles sont répliquées dans l’environnement de récupération. Pour les
charges de travail hybrides, où vous protégez les machines virtuelles VMware ou Hyper-V
sur place, vous définissez des stratégies qui contrôlent la planification de la réplication.
Si nous nous concentrons sur la réplication Azure vers Azure, comment les données se
répliquent-elles en temps quasi réel? Un cache de compte de stockage est créé dans
l’emplacement de l’environnement de production, comme l’illustre la figure 13.13. Les
modifications écrites sur les disques virtuels de production sont immédiatement répli-
quées dans ce cache de compte de stockage. Le cache du compte de stockage est ensuite
répliqué dans l’environnement de récupération. Ce cache de compte de stockage agit
comme une mémoire tampon afin que les retards de réplication vers l’emplacement de
récupération distant n’aient pas d’incidence sur les performances de la charge de travail
de production.
Le processus de configuration de récupération de sites pour la réplication Azure vers
Azure est simple, mais met un certain temps à créer toutes les ressources répliquées néces-

Environnement de producon
Environnement de récupéraon
Est des États-Unis
Ouest des États-Unis
MV Azure
Cache de compte
Disques virtuels
Disques virtuels Les données écrites sur de stockage Données
les disques de producon répliquées du
sont immédiatement cache de compte
répliquées dans le cache de stockage vers
du compte de stockage. l’environnement
de récupéraon

Figure 13.13 Les modifications présentes sur les disques de production sont immédiatement répliquées dans
un cache de compte de stockage. Ce cache de compte de stockage évite les effets sur les performances des
charges de travail de production pendant que celles-ci attendent la réplication des modifications présentes à
l’emplacement de récupération distante. Les modifications du cache du compte de stockage sont ensuite
répliquées vers le point de récupération à distance pour maintenir la cohérence des données.
216 CHAPITRE 13 Sauvegarde, récupération et réplication

saires et à terminer la réplication de données initiale. Dans le laboratoire de fin de cha-


pitre, vous configurez cette réplication Azure vers Azure.
Que pouvez-vous faire avec les machines virtuelles qui ont été répliquées vers un
emplacement secondaire avec le service de récupération de sites Azure? La plupart du
temps, vous pouvez vous croiser les doigts et espérer que vous n’en aurez pas besoin! Mais
il existe quelques scénarios où vous pourriez en avoir besoin.
Le premier devrait être évident : en cas de panne majeure. Si une région Azure devient
totalement non disponible, par exemple en raison d’une catastrophe naturelle dans la zone,
vous pouvez lancer un basculement de vos ressources. Cela indique au service de récupération
de sites Azure de créer des machines virtuelles dans l’emplacement de récupération en fonc-
tion des métadonnées de machine virtuelle répliquées, puis d’attacher les disques durs virtuels
et les connexions réseau appropriés. Vous pouvez également être proactif ici; s’il est prévu
qu’une catastrophe naturelle frappera une région Azure, vous pouvez lancer un basculement
avant que l’événement ait lieu. Cette approche vous permet de décider du moment où vous
devez subir un temps d’arrêt potentiel lorsque les ressources basculent vers l’emplacement
secondaire, généralement en dehors des heures de travail principales. Une fois que l’événe-
ment prévu est passé dans la région Azure principale, vous pouvez basculer vos ressources et
continuer à travailler normalement.
Le deuxième scénario de basculement en est un où vous testez le bon fonctionnement du
processus. De la même manière que les sauvegardes doivent être régulièrement testées, vous
devez tester un plan de réplication et de basculement. Il serait assez embarrassant et stressant
de découvrir que lorsque vous avez besoin d’apporter un emplacement secondaire en ligne,
une certaine mauvaise configuration est présente sur les réseaux virtuels, ou que l’une des
applications ne bascule pas en douceur. De manière utile, Azure fournit une option spécifique
pour tester le basculement. Un réseau virtuel Azure isolé est généralement utilisé dans l’empla-
cement secondaire, et les charges de production continuent à s’exécuter normalement dans
l’emplacement principal. Si vous utilisez le service de récupération de sites Azure, assurez-vous
de tester régulièrement le processus de basculement!

13.3 Lab : Configuration d’une machine virtuelle pour la


récupération de sites
Il existe un certain nombre de conditions préalables pour configurer la réplication VMware ou
Hyper-V locale avec le service de récupération de sites Azure. Il s’agit d’une excellente fonc-
tionnalité, à la fois pour la récupération après sinistre et pour la migration de machines vir-
tuelles vers Azure. Mais elle requiert plus de temps que la période de votre pause repas! Alors,
si vous voulez en savoir plus sur ces scénarios, rendez-vous sur http://mng.bz/x71V.
Nous allons configurer la réplication Azure vers Azure avec la machine virtuelle de test
que vous avez créée et sauvegardée précédemment :
1 Dans le portail Azure, sélectionnez Groupes de ressources dans le menu à
gauche. Choisissez le groupe de ressources utilisé dans les exercices précédents,
tels que azuremolchapter13.
2 Sélectionnez la machine virtuelle que vous avez créée dans les exercices précé-
dents, tels que molvm. Choisissez Récupération après sinistre dans le menu à
gauche dans la fenêtre de la machine virtuelle.
3 Examinez les valeurs par défaut fournies par le service de récupération de sites
Azure, comme l’illustre la figure 13.14. Un groupe de ressources et un réseau
virtuel sont créés dans l’emplacement de destination. Un cache de compte de
stockage est créé pour la réplication à partir des disques virtuels source, et un
coffre-fort Recovery Services et une stratégie sont créés pour contrôler le proces-
sus de réplication.
Lab : Configuration d’une machine virtuelle pour la récupération de sites 217

Vous n’avez rien à changer ici; cependant, si vous utilisez ceci dans la pro-
duction et avez plusieurs machines virtuelles à protéger, vous devrez examiner
la façon dont les machines virtuelles sont mappées vers des réseaux virtuels et
des sous-réseaux répliqués existants. Pour ce laboratoire, cliquez sur Activer la
réplication.

Figure 13.14 Le service de récupération remplit automatiquement ces valeurs par défaut pour toutes
les ressources répliquées, les coffres et le cache de stockage dont il a besoin. Pour répliquer une
machine virtuelle, sélectionnez Activer la réplication.
218 CHAPITRE 13 Sauvegarde, récupération et réplication

Maintenant, retournez au travail. Sérieusement! Il faut un certain temps pour configurer


toutes les ressources répliquées et terminer la synchronisation initiale des données. Ne traînez
pas à moins que votre patron soit d’accord pour que vous preniez une pause repas vraiment
longue aujourd’hui!

Protéger vos sauvegardes contre la suppression


Si vous avez des machines virtuelles qui sont protégées par le service de sauvegarde
Azure ou le service de récupération de sites Azure, vous ne pouvez pas supprimer le coffre
de services de récupération ni le groupe de ressources pour la machine virtuelle. La plate-
forme Azure sait que vous avez des données actives sauvegardées ou répliquées et
empêche la suppression de ces ressources.
Pour supprimer des machines virtuelles protégées, commencez par désactiver les tâches
de sauvegarde actives ou les machines virtuelles répliquées. Ce faisant, vous pouvez
choisir de conserver les données protégées ou de les supprimer. Une fois que les
machines virtuelles ne sont plus protégées, vous pouvez supprimer le coffre de services
de récupération de manière normale afin de conserver vos crédits Azure gratuits à utiliser
dans le reste du livre.
Chiffrement des données

La sécurité de vos données est importante. Plus précisément, la sécurité des données
de vos clients est essentielle. Il ne se passe guère une semaine sans que nous n’enten-
dions dire dans les bulletins de nouvelles qu’une grande entreprise a fait l’objet d’une
violation de données. Souvent, ces incidents sont causés par une faille à la sécurité, par
une mauvaise configuration ou par pure négligence. Dans cette ère numérique, il est
trop facile pour les pirates d’automatiser leurs tentatives d’accès à vos données. Le
temps que nécessitera la récupération à la suite d’un incident lié à la sécurité au niveau
de l’application peut être très court par rapport au temps qu’il faudra à l’entreprise
pour regagner la confiance de ses clients si ceux-ci ont vu leurs données exposées.
Azure inclut des fonctionnalités de chiffrement qui font qu’il vous est difficile
d’alléguer que vous n’avez pas le temps requis ou l’expertise nécessaire pour sécuriser
vos données. Dans ce chapitre, nous allons examiner la façon de chiffrer les données
stockées dans le stockage Azure, sur les disques gérés ou sur la machine virtuelle com-
plète. Des livres entiers ont été écrits sur le chiffrement des données; c’est pourquoi ce
chapitre ne plonge pas profondément dans les méthodes et les considérations de chif-
frement. Au lieu de cela, vous allez voir comment activer certains services et fonction-
nalités Azure de base pour sécuriser vos données tout au long du cycle de vie de
l’application.

14.1 Qu’est-ce que le chiffrement des données?


Lorsque vous faites un achat en ligne, vérifiez-vous la présence d’une petite icône
représentant un cadenas dans la barre d’adresse indiquant que le site Web utilise
HTTPS? Pourquoi est-il imprudent d’envoyer vos détails de crédit sur une connexion
HTTP régulière et non sécurisée? Chaque bit de données dans un paquet réseau qui
circule entre les périphériques peut potentiellement être surveillé et examiné. La
figure 14.1 montre comment des achats effectués en ligne sans connexion HTTPS
peuvent se traduire par une mauvaise surprise sur votre relevé de carte de crédit.

219
220 CHAPITRE 14 Chiffrement des données

Les données transmises Le serveur Web ignore


par une connexion HTTP que le trafic a été
non chiffrée peuvent intercepté. Il ne peut
être interceptées par des pas protéger vos
pirates. données. Connexion
Client Internet au site
011 Web HTTP
110
101

011
110
101

Les pirates peuvent afficher


l’ensemble de votre trafic réseau
et réunir vos renseignements
Pirate confidenels, comme les détails
de carte de crédit et l’adresse de
facturaon.

Figure 14.1 Dans cet exemple de base, un pirate pourrait intercepter le trafic réseau qui est
envoyé sur une connexion HTTP non chiffrée. Étant donné que vos données ne sont pas chiffrées,
le pirate pourrait rassembler les paquets réseau et obtenir vos informations personnelles et
financières. Si vous vous connectez au serveur Web au moyen d’une connexion HTTPS chiffrée,
un pirate ne peut pas lire le contenu des paquets réseau et afficher les données.

Il n’y a aucune excuse pour que les serveurs Web utilisent des connexions non sécurisées.
Chaque application Web que vous créez dans Azure dispose automatiquement d’un certi-
ficat SSL générique qui lui est appliqué. Un certificat SSL est un composant numérique uti-
lisé pour sécuriser le serveur Web et permettre à un navigateur Web de valider la
connexion. Un certificat SSL générique peut être utilisé sur un domaine entier, tel que
*.azurewebsites.net, le domaine par défaut pour les applications Web. Lorsque vous avez
créé une application Web dans le chapitre 3, vous auriez pu ajouter https:// à l’adresse
Web et commencer à utiliser des communications chiffrées avec vos applications Web.
C’est tout ce qu’il y a à faire!
Les certificats SSL personnalisés sont relativement bon marché et faciles à mettre en
œuvre. Grâce à des projets tels que let’s Encrypt (https://letsencrypt.org), vous pouvez
obtenir gratuitement un certificat et configurer automatiquement votre serveur Web en
quelques minutes. Azure ne fournit pas actuellement de certificats SSL personnalisés, ce
qui fait que vous ne pouvez pas acheter un nom de domaine personnalisé par l’intermé-
diaire d’Azure. Vous devez acheter un nom de domaine et un certificat SSL d’un tiers,
puis les appliquer à vos applications Web. Vous pouvez ensuite télécharger et appliquer le
certificat SSL à votre application Web, comme l’illustre la figure 14.2.
Lorsque vous concevez et générez des applications dans Azure, vous devez mettre en
œuvre des communications sécurisées dans la mesure du possible. Cette approche permet
de sécuriser les données pendant qu’elles sont en transit, mais qu’en est-il lorsque les don-
nées sont écrites sur disque? Pour les disques et les machines virtuelles, il existe un proces-
sus similaire qui sécurise et protège vos données au repos. La figure 14.3 montre
comment fonctionne le chiffrement de disques et de machines virtuelles.
Qu’est-ce que le chiffrement des données? 221

Figure 14.2 Vous pouvez facilement télécharger et appliquer un certificat SSL personnalisé à vos applications
Web. Un certificat générique par défaut est déjà disponible sur https://yourwebapp.azurewebsites.net; mais
si vous utilisez un nom de domaine personnalisé, vous devez acheter et appliquer un certificat SSL personnalisé.

Figure 14.3 Lorsque vous chiffrez


Les données sont vos données, vous seul pouvez
chiffrées car elles sont Applicaon
déchiffrer et afficher le contenu. Si un
écrites sur le disque. Les
Pour les machines virtuelles pirate devait accéder à un disque
données ne peuvent être
011 Azure, les données en mémoire virtuel ou à des fichiers individuels, il
consultées et déchiffrées 110
101 et les disques temporaires sont ne serait pas en mesure d’en déchiffrer
qu’avec vos clés de
également chiffrés. Vous seul le contenu. Les méthodes de
chiffrement. 011
110 pouvez déchiffrer et afficher les
101 chiffrement peuvent être combinées :
données de la machine virtuelle.
les clients peuvent se connecter à
votre site Web par protocole HTTPS,
vous pouvez forcer le trafic vers les
Disque Grands objets Fichier
binaires comptes de stockage à passer par
géré Azure MV Azure
Azure Storage HTTPS, et vous pouvez ensuite chiffrer
Azure Storage
les données qui sont écrites sur le
disque.
222 CHAPITRE 14 Chiffrement des données

Ces exemples simplifiés de chiffrement des données dans Azure vous motiveront à mettre
en œuvre le chiffrement lorsque vous concevrez et générerez des applications dans Azure.
La plupart des clients s’attendent à ce que leurs données soient sécurisées, et de nom-
breuses entreprises ont des mandats de réglementation et de conformité nécessitant un
chiffrement. Ne pensez pas seulement aux amendes potentielles que l’entreprise pourrait
devoir verser ou à la perte de confiance des clients en cas d’incident de violation de don-
nées. Prenez conscience du risque que les données personnelles et financières des clients
puissent être exposées et des répercussions qu’un tel incident pourrait avoir sur la vie quo-
tidienne des clients. L’idée de voir vos propres données personnelles exposées ne vous
enchante probablement pas, alors faites tout ce que vous pouvez pour protéger les don-
nées de vos clients.

14.2 Le chiffrement au repos


Si le chiffrement des données est si important, comment l’utilisez-vous dans Azure? Il vous
suffit de continuer à mettre en application ce que vous avez déjà appris dans ce livre! Dès
le début, j’ai mentionné que toutes vos machines virtuelles devraient utiliser des disques
gérés, n’est-ce pas? Il y a beaucoup de bonnes raisons à cela, l’une étant la sécurité. Un
disque géré est automatiquement chiffré. Vous n’avez rien à configurer et il n’y a aucun
effet sur la performance lorsqu’il est activé. Il n’y a pas de retrait possible ici : vos données
sont automatiquement chiffrées au repos avec des disques gérés.
Qu’est-ce que cela signifie, pour les données, d’être chiffrées au repos? Lorsque vous uti-
lisez des disques gérés, vos données sont chiffrées lorsqu’elles sont écrites dans le stockage
Azure sous-jacent. Les données qui résident sur les disques temporaires ou les données
qui existent en mémoire sur la machine virtuelle ne sont pas chiffrées. Ce n’est qu’une
fois que les données du système d’exploitation ou du disque de données reposent sur le
disque physique sous-jacent qu’elles deviennent chiffrées. La figure 14.4 montre com-
ment les données sont chiffrées au fur et à mesure qu’elles sont écrites sur un disque géré.

Machine virtuelle
Disque
Disque Mémoire géré
temp. virtuelle Les données sont chiffrées
lorsqu’elles sont écrites sur.
un disque géré
Le disque temporaire et les
données en mémoire sur la
machine virtuelle ne sont pas
chiffrés.

Figure 14.4 Les données sont chiffrées au fur et à mesure qu’elles sont écrites sur un disque
géré. Les données en mémoire sur la machine virtuelle ou les données sur les disques temporaires
locaux de la machine virtuelle ne sont pas chiffrées, sauf si la machine virtuelle entière est
activée pour le chiffrement, sujet que nous examinons plus loin dans ce chapitre. Le chiffrement
automatique des données écrites sur des disques gérés ne provoque aucune surcharge de la
machine virtuelle. La plateforme Azure effectue l’opération de chiffrement sur le stockage sous-
jacent. La machine virtuelle n’a pas besoin de gérer les processus de chiffrement/déchiffrement.

Ce chiffrement au repos pour les disques gérés signifie qu’il n’y a aucun effet sur la perfor-
mance des machines virtuelles. Aucun traitement supplémentaire n’est nécessaire pour
que la machine virtuelle exécute le chiffrement et le déchiffrement des données; ainsi
toute la puissance disponible de l’unité centrale peut être employée pour exécuter des
applications. Dans les scénarios typiques de chiffrement de machine virtuelle, la machine
virtuelle utilise une certaine quantité de puissance de calcul pour traiter et gérer le chiffre-
ment des données. Le compromis à l’égard du chiffrement de disque géré automatique
Storage Service Encryption 223

est que seuls le système d’exploitation et les disques de données sont sécurisés. Potentielle-
ment, d’autres données de disque en mémoire ou temporaires sur la machine virtuelle
peuvent être exposées.
Microsoft gère les clés de chiffrement numériques au sein de la plateforme Azure avec
le chiffrement automatique des disques gérés. Cela crée un autre compromis en ce que
vous pouvez chiffrer automatiquement vos données sans avoir besoin de créer, de gérer,
d’assurer la rotation ou de révoquer des clés, mais vous devez faire confiance à Microsoft
pour protéger ces clés.

14.3 Storage Service Encryption


Le chiffrement automatique de disque géré est excellent, mais que faire si vous utilisez le
stockage Azure pour le stockage de grands objets binaires ou de fichiers? Le chiffrement
de service de stockage Azure (SSE, Storage Service Encryption) vous permet de chiffrer
les données au niveau du compte de stockage. Les données sont chiffrées au fur et à
mesure qu’elles sont écrites sur le compte. Microsoft gère de nouveau les clés de chiffre-
ment, de sorte qu’aucune surcharge de gestion ou configuration n’est requise. La plate-
forme Azure extrait la génération et la gestion de clés pour vous. Si vous préférez, vous
pouvez créer et utiliser vos propres clés de chiffrement, avec de légers frais de gestion sup-
plémentaires.
Le but du chiffrement automatique de disque géré et de la fonction SSE est de vous
faciliter la tâche lorsque vous chiffrez vos données et de vous permettre de passer plus de
temps à concevoir, à construire et à exécuter vos applications. La figure 14.5 montre com-
ment la fonction SSE protège vos données et peut également forcer des communications
sécurisées lorsque les données sont en transit.
Compte de
stockage chiffré HTTP

Données
Applicaon
HTTPS
Les données sont Grand
objet Fichier Seul le trafic qui ulise la
chiffrées car elles sont binaire communicaon chiffrée,
écrites dans le stockage
telle que HTTPS, est
de grands objets binaires
accepté.
ou de fichiers.

Figure 14.5 Lorsque vous activez la fonction SSE, les objets binaires et les fichiers Azure sont
chiffrés au fur et à mesure que les données sont écrites sur le disque. Les tableaux et les files
d’attente Azure ne sont pas chiffrés. Pour assurer davantage la sécurité de vos données, vous
pouvez forcer toutes les communications ayant un compte de stockage à utiliser des protocoles de
communication sécurisés, tels que HTTPS. Cela protège les données en transit jusqu’au moment où
elles sont chiffrées sur disque.

Forcer le trafic de stockage à utiliser des transferts sécurisés


Outre l’activation de SSE, vous pouvez forcer toutes les demandes et tous les transferts
de stockage à utiliser une méthode de communication sécurisée. Ce paramètre force tous
les appels d’API REST à utiliser HTTPS, et toutes les connexions de fichiers Azure qui
n’activent pas le chiffrement, telles que les anciennes versions du protocole SMB, sont
supprimées.
Les trousses de développement logiciel Azure, telles que les exemples Python que nous
avons examinés dans le chapitre 4, peuvent utiliser des connexions chiffrées. Les docu-
ments de référence pour chaque trousse de développement logiciel spécifique à la langue
fournissent des conseils sur la façon de mettre en œuvre des communications sécuri-
sées.
224 CHAPITRE 14 Chiffrement des données

(suite)
L’utilisation de communications sécurisées doit être intégrée dans les applications dès le
départ. L’activation de communications sécurisées sur une application existante peut cau-
ser des problèmes si certains composants n’ont pas été configurés correctement à l’ori-
gine. À tout le moins, testez d’abord les communications sécurisées pour une application
existante dans un environnement de développement.

La fonction SSE présente le problème mineur suivant : si vous activez le chiffrement sur
un compte de stockage existant qui contient déjà des données, seules les nouvelles don-
nées écrites sur le compte de stockage sont chiffrées. Si vous planifiez les besoins de votre
application avec précaution, activez la fonction SSE lorsque vous créez le compte de stoc-
kage pour faire en sorte que toutes les données écrites sur le compte soient chiffrées.

Essayer maintenant
Pour créer un compte de stockage et activer à la fois le chiffrement et les communications
sécurisées, procédez comme suit.

1 Ouvrez le portail Azure et sélectionnez l’icône Cloud Shell dans le menu du haut.
2 Créez un groupe de ressources. Indiquez un nom comme azuremolchapter14
et un emplacement comme eastus :
az group create --name azuremolchapter14 --location eastus
3 Créez un compte de stockage avec az storage account create. Fournissez un
nom unique, tel que azuremolstorage, et entrez le groupe de ressources que
vous avez créé à l’étape précédente. Entrez un type de compte de stockage, tel
que Standard_LRS pour le stockage localement redondant.
Pour activer la fonction SSE, utilisez le paramètre --encryption-services blob.
Pour forcer des communications sécurisées, définissez --https-only sur true :
az storage account create \
--name azuremolstorage \
--resource-group azuremolchapter14 \
--sku standard_lrs \
--encryption-services blob \
--https-only true
4 Vérifiez que le compte de stockage est chiffré et activé pour les communica-
tions sécurisées. Requête pour enableHttpsTrafficOnly et les paramètres de
chiffrement :
az storage account show \
--name azuremolstorage \
--resource-group azuremolchapter14 \
--query [enableHttpsTrafficOnly,encryption]

La sortie est similaire à ce qui suit :


[
true,
{
Chiffrement de machines virtuelles 225

"keySource": "Microsoft.Storage",
"keyVaultProperties": null,
"services": {
"blob": {
"enabled": true,
"lastEnabledTime": "2017-11-21T04:41:05.127074+00:00"
},
"file": {
"enabled": true,
"lastEnabledTime": "2017-11-21T04:41:05.127074+00:00"
},
"queue": null,
"table": null
}
}
]

14.4 Chiffrement de machines virtuelles


Le chiffrement automatique des disques gérés Azure permet de fournir un niveau de
sécurité de machines virtuelles. Pour une approche globale de la sécurité des données de
machine virtuelle, vous pouvez chiffrer la machine virtuelle elle-même. Ce processus
implique davantage que le seul chiffrement des disques durs virtuels sous-jacents. Le
disque du système d’exploitation et tous les disques de données attachés, ainsi que le
disque temporaire, sont chiffrés. La mémoire de la machine virtuelle est également chif-
frée pour réduire davantage la surface d’attaque. Vous utilisez deux nouveaux compo-
sants Azure pour chiffrer une machine virtuelle :
 Azure Key Vault stocke les clés de chiffrement utilisées pour chiffrer les machines
virtuelles.
 Les entités de service Azure Active Directory contrôlent l’accès aux clés de chiffre-
ment.
La figure 14.6 affiche le processus de présentation du chiffrement d’une machine vir-
tuelle.

1. Vous, l’administrateur Administra-


Azure, devez préciser le teur Azure
principal du service Azure
Acve Directory et la
machine virtuelle à chiffrer

4. Clé de chiffrement ulisée


pour chiffrer la machine
Azure Acve Directory virtuelle Azure
Figure 14.6 Lorsque vous chiffrez une
MV Azure machine virtuelle, vous spécifiez un
Principal de service
principal de service et une clé de
chiffrement à utiliser. Les identifiants
3. Clé de chiffrement retournée
que vous fournissez pour le principal de
du coffre de clés
2. Le principal de
service sont utilisés pour
service demande la clé l’authentification sur Azure Key Vault et
de chiffrement d’Azure Azure Key Vault exigent la clé spécifiée. Si vos
Key Vault identifiants sont valides, la clé de
Clé de chiffrement chiffrement est retournée et utilisée
pour chiffrer la machine virtuelle.
226 CHAPITRE 14 Chiffrement des données

L’un des avantages du chiffrement de la machine virtuelle entière est que vous gérez les
clés de chiffrement. Ces clés de chiffrement sont stockées en toute sécurité dans Azure
Key Vault, et vous pouvez choisir entre des clés générées par le logiciel ou par le matériel.
Vous contrôlez ces clés, de sorte que vous pouvez définir leur accès et utiliser des contrôles
d’accès en fonction des rôles (RBAC) et des audits afin de suivre l’utilisation. Vous pouvez
également renouveler les clés de chiffrement sur un calendrier défini, tout comme chan-
ger votre mot de passe tous les 60 ou 90 jours. Ces contrôles supplémentaires et tâches de
gestion pour les clés de chiffrement ajoutent des frais généraux de gestion, mais offrent
une flexibilité maximale pour sécuriser vos données et peuvent être requis pour certaines
fins de réglementation. Examinons d’un peu plus près Azure Key Vault et les principaux
de service Azure Active Directory.

14.4.1 Stockage des clés de chiffrement dans Azure Key Vault


Nous consacrons le prochain chapitre à Azure Key Vault, mais je voulais d’abord vous
montrer la puissance du chiffrement des données et du chiffrement des machines vir-
tuelles. Pour vous donner un aperçu, disons que Azure Key Vault est un coffre numérique
qui vous permet de stocker en toute sécurité des clés de chiffrement, des certificats SSL et
des secrets tels que des mots de passe. Pour la redondance, les chambres fortes sont répli-
quées dans les régions Azure. Cette réplication protège vos clés et vos secrets, et garantit
qu’elles sont toujours disponibles pour une utilisation.
Vous n’avez accès qu’à vos chambres fortes. Vous générez et stockez des objets dans des
chambres fortes, puis vous définissez qui a accès à ces coffres. Microsoft gère le service Key
Vault sous-jacent, mais n’a pas accès au contenu des coffres. Cette limite de sécurité signi-
fie que lorsque vous chiffrez vos données dans Azure, vous êtes la seule personne à pou-
voir les déchiffrer et les afficher.

Essayer maintenant
Pour créer une chambre forte et une clé de chiffrement, procédez comme suit.

1 Ouvrez le portail Azure et sélectionnez l’icône Cloud Shell dans le menu du


haut.
2 Créez une chambre forte avec la commande az keyvault create. Spécifiez le
groupe de ressources que vous avez créé dans l’exercice précédent, tel que azu-
remolchapter14, puis fournissez un nom unique pour votre chambre forte, tel
que azuremolkeyvault :
az keyvault create \
--resource-group azuremolchapter14 \
--name azuremolkeyvault \
--enabled-for-disk-encryption

Arrêtons-nous et réfléchissons à la raison pour laquelle vous ajoutez un paramètre pour -


-enabled-for-disk-encryption. Lorsque vous chiffrez une machine virtuelle, la plate-
forme Azure doit pouvoir démarrer et déchiffrer la machine virtuelle afin que celle-ci
puisse s’exécuter. La plateforme Azure ne dispose pas d’autorisations pour accéder à ces
données, et Microsoft ne dispose pas d’un accès permettant de voir et d’utiliser ces clés de
chiffrement pour autre chose que le démarrage d’une machine virtuelle. Lorsque vous
Chiffrement de machines virtuelles 227

activez une chambre forte pour le chiffrement de disque, vous accordez des autorisations
pour qu’Azure accède à la chambre forte et utilise la clé de chiffrement associée à une
machine virtuelle.
Encore une fois, Microsoft n’a pas accès à ces clés ni à vos données, mais a seulement
la possibilité de démarrer votre machine virtuelle chiffrée. Il est assez difficile d’en faire
beaucoup avec une machine virtuelle chiffrée lorsqu’elle ne peut pas démarrer. La
figure 14.7 montre comment la plateforme Azure utilise la clé de chiffrement pour
démarrer une machine virtuelle chiffrée.
2. La plateforme Azure demande
1. La plateforme Azure tente Plateforme à la clé de chiffrement du coffre
de démarrer une machine Azure de clés de déchiffrer et de
virtuelle chiffrée. Elle obent démarrer la machine virtuelle
des détails pour la clé de
chiffrement requise. 3. Coffre de clés
acvé pour le
4. La machine chiffrement de
virtuelle a démarré disque et renvoie Azure Key Vault
avec succès la clé requise
MV Azure
Clé de chiffrement

Figure 14.7 Lorsqu’une chambre forte est activée pour un chiffrement de disque, elle
accorde l’autorisation à la plateforme Azure de demander et d’utiliser la clé de chiffrement
pour démarrer correctement une machine virtuelle chiffrée.

Les clés peuvent être créées et stockées dans un logiciel, ou elles peuvent être stockées
dans des modules de sécurité matérielle (HSM) pour garantir une sécurité supplémen-
taire. Pour de nombreux objectifs, les clés logicielles fonctionnent très bien, même si vous
pouvez avoir des mandats de sécurité nécessitant l’utilisation de HSM. Nous en discute-
rons plus en détail dans le prochain chapitre.
3 Pour créer une clé, spécifiez le coffre que vous avez créé à l’étape précédente,
tel que azuremanikeyvault, puis fournissez un nom de clé, tel que azuremo-
lencryptionkey:
az keyvault key create \
--vault-name azuremolkeyvault \
--name azuremolencryptionkey \
--protection software

14.4.2 Contrôle de l’accès aux coffres et aux clés avec Azure Active Directory
Dans le chapitre 6, nous avons examiné la façon dont vous sécurisez et contrôlez l’accès
aux ressources grâce aux contrôles d’accès basés sur les rôles (RBAC). Ces contrôles vous
permettent de spécifier des utilisateurs et des groupes et de définir des autorisations gra-
nulaires quant à ce que ces utilisateurs et ces groupes peuvent faire avec chaque ressource.
Au cœur de ces contrôles se trouve Azure Active Directory (AAD).
AAD pourrait être le sujet d’un livre entier. Il pourrait probablement être le sujet
d’une série de livres! Il s’appuie sur la solution d’identité et de gestion éprouvée par
l’entreprise, Active Directory. Avec AAD, vous pouvez créer et gérer des autorisations
d’utilisateurs ou de groupes sur des ressources dans Azure, Office 365 ou un scénario
hybride pour les partages de fichiers sur place ou les ressources réseau telles que les impri-
mantes.
Il est difficile de couvrir AAD dans un seul chapitre de la série de livres Month of
Lunches. Il y a tellement de choses à couvrir qu’il est presque certain que vous voudrez en
savoir plus. Les scénarios hybrides avec un environnement Active Directory sur place,
228 CHAPITRE 14 Chiffrement des données

l’authentification multifactorielle pour les applications infonuagiques et la gestion des uti-


lisateurs et des groupes dans AAD sont des tâches d’administration spécifiques que seul
un petit nombre d’administrateurs Azure peuvent exécuter. Il existe une abondance
d’excellente documentation à l’adresse https://docs.microsoft.com/azure/active-
directory si vous voulez plonger dans AAD.
Pour l’instant, vous souhaitez utiliser AAD pour vous authentifier auprès d’Azure Key
Vault et accéder aux clés de chiffrement. Pour ce faire, vous utilisez un type spécial de
compte d’utilisateur appelé un principal de service. Un principal de service ne peut pas être
utilisé pour une connexion à une machine virtuelle à l’aide d’un nom d’utilisateur et d’un
mot de passe comme un compte d’utilisateur ordinaire, mais il peut être utilisé pour une
authentification auprès des services et des ressources.

Essayer maintenant
Pour créer un principal de service Azure Active Directory à utiliser avec Azure Key Vault,
procédez comme suit.

1 Ouvrez le portail Azure et sélectionnez l’icône Cloud Shell dans le menu du haut.
2 Créez un principal de service par défaut et affichez l’identifiant et le secret (un mot
de passe). Vous utilisez ces identifiants pour vous authentifier auprès des ressources
Azure, telles que votre chambre forte. Ce principal de service peut être utilisé pour
les ressources sur l’ensemble de votre abonnement. Comme pour les ressources
réseau, dans le monde réel, vous devez planifier les chambres fortes de longue
durée dont vous aurez besoin, créer des principaux de service qui leur sont attri-
bués, puis utiliser ces identifiants avec vos applications :
az ad sp create-for-rbac \
--query "{spn_id:appId,secret:password}"
L’exemple de sortie de cette commande est le suivant. Notez vos propres
valeurs, car vous en aurez besoin dans les étapes restantes :
{
"secret": "2575580b-3610-46b2-b3db-182d8741fd43",
"spn_id": "4d1ab719-bd14-48fd-95d0-3aba9500b12f"
}
3 Accordez à votre principal de service l’accès à la chambre forte avec les autori-
sations d’encapsuler ou d’utiliser la clé de chiffrement. Indiquez le nom de
votre chambre forte, tel que azuremolkeyvault, puis le SPN fourni dans la sor-
tie de l’étape précédente :
az keyvault set-policy \
--name azuremolkeyvault \
--spn 4d1ab719-bd14-48fd-95d0-3aba9500b12f \
--key-permissions wrapKey \
--secret-permissions set

14.4.3 Chiffrement d’une machine virtuelle Azure


La figure 14.8 répète la figure 14.6, pour voir comment vous avez créé un principal de service
AAD avec les autorisations d’utiliser une clé de chiffrement qui a été créée dans une chambre
forte Azure. Ce principal de service et cette clé de chiffrement peuvent être utilisés pour chiffrer
de nombreuses machines virtuelles. Une approche consiste à utiliser la même clé de chiffre-
ment pour toutes les machines virtuelles dans un déploiement d’application donné. Cela vous
Chiffrement de machines virtuelles 229

permet de réduire au minimum la surcharge de la gestion des clés et, si vous utilisez des
ensembles de machines virtuelles identiques, cela vous permet d’adapter automatiquement le
nombre d’instances de machine virtuelle sans avoir besoin de générer des clés de chiffrement
chaque fois. Dans le laboratoire de fin de chapitre, vous chiffrez une seule machine virtuelle,
bien que le même processus puisse fonctionner avec un ensemble d’échelles. Particulièrement
lorsque vous travaillez avec des applications de mise à l’échelle plus volumineuses, assurez-vous
de concevoir et de créer des fonctionnalités de sécurité.

1. Vous, l’administrateur Administra-


Azure, devez préciser le teur Azure
principal du service Azure
Acve Directory et la
machine virtuelle à chiffrer

4. Clé de chiffrement ulisée


pour chiffrer la machine
Azure Acve Directory virtuelle Azure
MV Azure
Principal de service

3. Clé de chiffrement retournée


du coffre de clés
2. Le principal de
service demande la clé
de chiffrement d’Azure Azure Key Vault
Key Vault
Clé de chiffrement

Figure 14.8 (Répétition de la figure 14.6) Vous pouvez désormais utiliser votre principal de
service AAD pour demander l’utilisation d’une clé de chiffrement stockée dans une chambre forte.
Cette clé de chiffrement peut être utilisée pour chiffrer une machine virtuelle. Vous créez et chiffrez
cette machine virtuelle dans le laboratoire de fin de chapitre.

Lorsque vous chiffrez une machine virtuelle, une extension de machine virtuelle Azure est
installée. L’extension contrôle le chiffrement du disque du système d’exploitation, du
disque temporaire, des disques de données attachés et des données en mémoire, comme
l’illustre la figure 14.9. Pour les machines virtuelles Windows, le mécanisme de chiffrement
BitLocker est utilisé. Pour les machines virtuelles Linux, dm-crypt est utilisé pour traiter le
chiffrement. L’extension de machine virtuelle peut ensuite faire rapport sur l’état du chif-
frement et déchiffrer la machine virtuelle comme vous le souhaitez.
Lorsque vous chiffrez une
machine virtuelle, l’extension
de chiffrement de disque de MV Azure
machine virtuelle est installée Extension du
dans la machine virtuelle. chiffrement Processus
Extension de disque de BitLocker/
L’extension gère les processus
machine au niveau du système DM-Crypt
virtuelle d’exploitaon pour
chiffrer/déchiffrer des données.

Figure 14.9 Lorsque vous chiffrez une machine virtuelle, l’extension de chiffrement de disque Azure
est installée. Cette extension gère l’utilisation de BitLocker sur les machines virtuelles Windows ou
dm-crypt sur les machines virtuelles Linux, pour effectuer le chiffrement des données sur votre
machine virtuelle. L’extension est également utilisée lorsque vous interrogez l’état de chiffrement pour
une machine virtuelle.
230 CHAPITRE 14 Chiffrement des données

Étant donné que l’extension de chiffrement de disque de machine virtuelle repose sur
BitLocker ou dm-crypt, il existe certaines limitations concernant l’utilisation du chiffre-
ment de machine virtuelle. La plupart des images dans la Place de marché Azure
prennent en charge le chiffrement de disque, bien que certaines restrictions existent sur
les tailles des machines virtuelles qui prennent en charge le chiffrement ou sur le chiffre-
ment des partages de fichiers réseau connectés tels que les fichiers Azure. Pour obtenir les
informations les plus complètes sur les limitations et considérations prises en charge pour
le chiffrement des machines virtuelles, lisez les derniers documents Azure à l’adresse
http://mng.bz/NjPB.
Ce chapitre vous a présenté rapidement les fonctionnalités de sécurité et de chiffre-
ment des données dans Azure. Le chiffrement automatique pour les disques gérés et la
fonction SSE ne nécessitent pas beaucoup de configuration, il n’y a donc aucun obstacle
pouvant vous empêcher de les utiliser.

14.5 Lab : Chiffrement d’une machine virtuelle


Voyons comment vous mettez tout cela en action en chiffrant une machine virtuelle avec
la clé de chiffrement que vous avez stockée dans votre chambre forte :
1 Créez une machine virtuelle. La plupart des images Linux dans la Place de mar-
ché Azure prennent en charge le chiffrement, tout comme les images Windows
Server de Server 2008 R2 et de versions ultérieures. Pour vous faciliter la tâche,
créez une machine virtuelle Ubuntu LTS, tout comme vous l’avez fait durant la
plus grande partie de ce livre :
az vm create \
--resource-group azuremolchapter14 \
--name molvm \
--image ubuntults \
--admin-username azuremol \
--generate-ssh-keys
2 Activez le chiffrement sur la machine virtuelle. Fournissez votre propre identi-
fiant SPN et votre secret, lequel a été établi plus tôt, pour créer votre principal
de service :
az vm encryption enable \
--resource-group azuremolchapter14 \
--name molvm \
--disk-encryption-keyvault azuremolkeyvault \
--key-encryption-key azuremolencryptionkey \
--aad-client-id 4d1ab719-bd14-48fd-95d0-3aba9500b12f \
--aad-client-secret 2575580b-3610-46b2-b3db-182d8741fd43
Il faut quelques minutes pour installer l’extension de chiffrement de disque de
machine virtuelle Azure et lancer le processus de chiffrement de la machine vir-
tuelle.
3 Une fois le chiffrement démarré, surveillez la progression et soyez prêt à redé-
marrer la machine virtuelle pour terminer le processus de chiffrement. Affi-
chez l’état comme suit :
az vm encryption show \
--resource-group azuremolchapter14 \
--name molvm
Voici un exemple de sortie d’une machine virtuelle en train d’être chiffré. Au
début, l’état de osDisk indique EncryptionInProgress :
Lab : Chiffrement d’une machine virtuelle 231

{
"dataDisk": "NotMounted",
"osDisk": "EncryptionInProgress",
"osDiskEncryptionSettings": {
"diskEncryptionKey": {
"secretUrl":
"https://azuremolkeyvault.vault.azure.net/secrets/[CA]
e77098c9-8c8b-4c1b-9181-[CA]
3c6e3c1d865b/c6a38e90212a453f94027ebca75e5d87",
"sourceVault": {
"id":
"/subscriptions/guid/resourceGroups/
azuremolchapter14/providers/Microsoft.KeyVault/
vaults/azuremolkeyvault"
}
},
"enabled": true,
"keyEncryptionKey": {
"keyUrl":
"https://azuremolkeyvault.vault.azure.net/keys/
azuremolencryptionkey/5be845a38dd443949bdc963dba7c84b4",
"sourceVault": {
"id":
"/subscriptions/guid/resourceGroups/
azuremolchapter14/providers/Microsoft.KeyVault/
vaults/azuremolkeyvault"
}
}
},
"osType": "Linux",
"progressMessage": "OS disk encryption started"
}
Le chiffrement de disque peut mettre un certain temps à s’exécuter, ce peut
donc être un autre bon exercice de laboratoire sur lequel vous pourrez revenir
dans une heure ou plus – à moins que vous vouliez une longue pause repas! Je
ne suis pas votre patron, mais cela devient ennuyeux de regarder le même mes-
sage d’état de chiffrement.
4 Lorsque l’état de chiffrement indique VMRestartPending, redémarrez la
machine virtuelle :
az vm restart --resource-group azuremolchapter14 --name molvm
Vous pouvez ensuite vérifier de nouveau l’état du chiffrement de la machine
virtuelle avec az vm encryption show pour confirmer que la machine indique
Chiffré.

Rappelez-vous vos corvées de ménage


Ces deux derniers laboratoires de fin de chapitre n’ont pas été très longs à faire, mais ils
ont peut-être pris un certain temps pour s’exécuter. N’oubliez pas de revenir en arrière et
de supprimer les ressources lorsque vous en avez fini avec elles.
Dans le chapitre 13, n’oubliez pas que vous devez désactiver la protection de sauvegarde
Azure et de récupération de site Azure avant de pouvoir supprimer le coffre de services de
récupération et le groupe de ressources. Assurez-vous de revenir en arrière et de nettoyer
ces ressources de laboratoire afin d’éviter d’utiliser un trop grand nombre de vos crédits
Azure gratuits.
Sécurisation des informations
avec Azure Key Vault

Presque chaque semaine, les bulletins de nouvelles font état d’un incident de cybersé-
curité dans une grande entreprise. De la même manière que vous utilisez diverses
formes d’automatisation pour développer ou répliquer vos applications et vos données,
les pirates automatisent leurs propres actions. Il est peu probable qu’une seule per-
sonne essayera manuellement de compromettre la sécurité de vos systèmes. Ce concept
rend difficile la défense de vos systèmes 24 heures sur 24, 7 jours sur 7, c’est-à-dire toute
l’année durant.
Le chapitre 14 décrit la façon de chiffrer vos données et vos machines virtuelles.
C’est une excellente première étape, et nous avons brièvement examiné la façon de
créer et d’utiliser des clés de chiffrement stockées avec le service Azure Key Vault. Les
données sécurisées, telles que les clés, les secrets et les certificats, sont mieux stockées
dans un coffre-fort numérique, comme une chambre forte, qui peut gérer, émettre et
auditer de manière centralisée l’utilisation de vos identifiants et de vos données cri-
tiques. Comme vos applications et services ont besoin d’accéder à différentes res-
sources, ils peuvent automatiquement demander, récupérer et utiliser ces clés, ces
secrets et ces identifiants. Dans ce chapitre, vous apprendrez pourquoi et comment
créer une chambre forte sécurisée, contrôler l’accès, puis stocker et récupérer des
secrets et des certificats.

15.1 Sécurisation des informations dans le nuage


Au fur et à mesure que les applications se complexifient et que les risques de cyberat-
taques augmentent, la sécurité devient un élément crucial de la conception et de l’exé-
cution de vos services. En particulier dans le nuage et avec les applications orientées sur
Internet, s’assurer de réduire au minimum le risque d’accès non autorisé aux données

232
Sécurisation des informations dans le nuage 233

devrait être l’une des principales zones de conception sur lesquelles vous devez vous
concentrer. Il n’y a aucun intérêt à offrir aux clients le plus grand choix au monde si ceux-
ci ne vous font pas confiance concernant le détail des paiements ou l’utilisation de leurs
informations personnelles.
La sécurité des applications et des services est assurée de manière courante par l’utili-
sation de clés numérique, de secrets et de certificats, comme l’illustre la figure 15.1. Plutôt
que d’utiliser un nom d’utilisateur et un mot de passe qui doivent être saisis manuelle-
ment à maintes reprises ou, pire encore, qui sont écrits dans un fichier de configuration
non chiffré, vous utilisez un coffre numérique pour stocker ces identifiants et données
sécurisés. Lorsqu’une application ou un service nécessite un accès, ils demandent la clé ou
le secret spécifique dont ils ont besoin, et une piste d’audit est également créée pour retra-
cer toute mauvaise utilisation ou violation éventuelle de la sécurité.

Machines
Applicaons Services
virtuelles

Les applicaons et les


services, ou les ressources
Azure telles que les
machines virtuelles, peuvent Les éléments tels que les
afficher, créer et mere à
jour des éléments dans le
Key Vault cerficats, les clés et les secrets
(comme les mots de passe)
coffre. peuvent être stockés en toute
sécurité dans le coffre et leurs
accès vérifiés.

Cerficats Secrets Clés

Figure 15.1 Azure Key Vault offre un moyen sécurisé de stocker des informations numériques
telles que des certificats, des clés et des secrets. Vos applications et services, ou des ressources
Azure telles que les machines virtuelles, peuvent alors accéder directement à ces éléments de
sécurités. Avec une interaction humaine minimale, vous pouvez répartir de manière centralisée des
identifiants et des certificats sécurisés dans vos environnements d’application.

Lorsqu’ils sont conçus et mis en œuvre correctement, ces coffres numériques sont
presque entièrement automatisés et sécurisés. Les services peuvent demander un nouveau
certificat numérique, en recevoir un qui est ensuite stocké en toute sécurité dans le coffre
et l’utiliser pour s’autoriser contre d’autres composants de l’application. Les serveurs
peuvent configurer des logiciels en récupérant des secrets tels que des mots de passe du
coffre numérique, puis en installant des composants d’application, sans que les identi-
fiants soient stockés dans un fichier de configuration textuel. Un administrateur d’appli-
cation peut gérer de manière centralisée tous les secrets, clés et certificats d’un service, et
les mettre à jour régulièrement selon les besoins.
Azure Key Vault fournit toutes ces fonctionnalités de sécurité numérique et vous per-
met de contrôler étroitement les utilisateurs et ressources qui peuvent accéder aux don-
nées sécurisées. Les coffres peuvent être répliqués en toute sécurité pour assurer la
redondance et améliorer les performances des applications, et peuvent s’intégrer aux res-
sources Azure courantes telles que les machines virtuelles, les applications Web et les
comptes de stockage Azure.
234 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

15.1.1 Coffres de logiciels et modules de sécurité matérielle


Avant de nous lancer dans un exemple pratique de la façon de créer et d’utiliser une
chambre forte, il est important de comprendre la façon dont vos informations sécurisées
sont stockées dans un coffre. Comme l’illustre la figure 15.2, tous les certificats, les secrets
et les clés dans une chambre forte sont stockés dans un module de sécurité matérielle
(HSM). Ces périphériques ne sont pas uniques dans Azure: ce sont des périphériques
matériels à l’échelle de l’industrie qui fournissent un niveau élevé de sécurité pour toutes
les données qui y sont stockées.

Azure Key Vault

Tous les cerficats, secrets et Coffre protégé par logiciel


clés d’un coffre de clés sont
stockés dans des modules de Opéraons
sécurité matérielle à l’intérieur Pour les coffres protégés par cryptographiques
des centres de données Azure. logiciel, les opéraons de
chiffrement/déchiffrement sont
exécutées dans un logiciel, en
dehors de la limite HSM.

Module de sécurité matérielle (HSM)

Cerficats Secrets Clés

Figure 15.2 Azure Key Vault est une ressource logique dans Azure, mais tous les certificats, les
secrets et les clés sont stockés dans un module de sécurité matérielle. Pour les scénarios de
développement ou de test, un coffre protégé par logiciel peut être utilisé, lequel effectue ensuite
toutes les opérations cryptographiques, telles que le chiffrement ou le déchiffrement des données,
dans le logiciel, et non dans le matériel sur le HSM. Pour la production, vous devez utiliser un coffre
protégé par HSM, où tout le traitement est effectué sur le matériel.

Il existe actuellement deux types différents de chambres fortes que vous pouvez utiliser:
chambre forte protégée par logiciel et la chambre forte protégée par HSM. Cela peut être
déroutant, c’est pourquoi je veux éclaircir pour vous la différence avant de commencer :
 Un coffre protégé par logiciel stocke les clés, les secrets et les certificats dans un
HSM, mais toutes les opérations de chiffrement requises pour chiffrer ou
déchiffrer son contenu sont exécutées par la plateforme Azure dans le logiciel.
Les coffres protégés par logiciel sont excellents pour les scénarios de dévelop-
pement et de test, bien que vous puissiez décider que les charges de production
nécessitent un moyen un peu plus sécurisé pour effectuer les opérations crypto-
graphiques.
 Encore une fois, un coffre protégé par HSM stocke les clés, les secrets et les certificats
dans un HSM, mais les opérations de chiffrement qui sont requises pour chiffrer ou
déchiffrer son contenu sont exécutées directement sur le HSM. Vous pouvez égale-
ment générer vos propres clés sécurisées dans un HSM sur place, puis les importer
dans Azure. Il y a d’autres outils et processus à suivre, mais, de cette façon, vous
Sécurisation des informations dans le nuage 235

vous assurez que vous contrôlez complètement les clés et qu’elles ne quittent jamais
la limite HSM.
Pour maximiser la sécurité et l’intégrité de vos données, les coffres protégés
par le matériel sont l’approche préférée pour les charges de production.
Quel que soit le type de coffre que vous utilisez, il est important de vous rappeler que
toutes vos données sont stockées en toute sécurité en conformité avec une norme FIPS
(norme fédérale de traitement de l’information) 140 – 2 de niveau 2 validée (au mini-
mum) HSM, et que Microsoft ne peut pas accéder à vos clés ni les récupérer. Il y a un coût
supplémentaire pour les coffres protégés par HSM. Alors, comme pour tout ce qui
concerne Azure et l’infonuagique, vous devez équilibrer le coût par rapport au risque que
vos données soient compromises.

15.1.2 Création d’une chambre forte et d’un secret


Les termes « coffre numérique » font bon effet, mais vous pouvez ne pas être tout à fait
certain de la façon de faire usage de la puissance qu’Azure Key Vault fournit. Nous allons
créer un exemple d’un serveur de base qui exécute une base de données telle que MySQL
Server, comme l’illustre la figure 15.3.

2. Si l’accès au coffre de
1. La machine virtuelle clés et au secret est
demande le secret du autorisé, le secret est
coffre de clés. récupéré du coffre. Mot de passe
MV Linux Key Vault de base de
données
3. Secret retourné à
la machine virtuelle

4. Le secret est ulisé pour


fournir un mot de passe
sécurisé pour l’installaon
du serveur MySQL.

Installaon du
serveur MySQL

Figure 15.3 Dans les exercices suivants, vous allez créer un exemple de secret stocké dans une
chambre forte qui peut être utilisé comme mot de passe de base de données pour une installation de
serveur MySQL. Une machine virtuelle est créée et dispose des autorisations requises pour demander
le secret de la chambre forte. Le secret récupéré est ensuite utilisé pour entrer automatiquement des
identifiants sécurisés pendant le processus d’installation de l’application.

Au début de ce livre, l’un des premiers exercices consistait à créer une machine virtuelle,
puis à installer la pile de serveurs Web LAMP. Vous avez probablement été invité à saisir un
mot de passe de serveur MySQL, ou un mot de passe vide a été automatiquement utilisé.
Maintenant que vous savez tout sur les chambres fortes, vous pouvez automatiquement
récupérer un mot de passe à partir du coffre et l’utiliser dynamiquement pour installer et
configurer le serveur.
236 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

Essayer maintenant
Pour créer une chambre forte et ajouter un secret, procédez comme suit.

1 Ouvrez le portail Azure, puis lancez Cloud Shell. Créez un groupe de res-
sources, tel que azuremolchapter15 :
az group create --name azuremolchapter15 --location eastus
2 Créez une chambre forte, telle que azuremol, et activez-la pour le déploiement
afin que vous puissiez utiliser le coffre pour injecter des clés et des certificats
dans une machine virtuelle :
az keyvault create \
--resource-group azuremolchapter15 \
--name azuremol \
--enable-soft-delete \
--enabled-for-deployment
Par défaut, votre compte d’utilisateur Azure se voit attribuer des autorisations
complètes pour la chambre forte. Pour ces exercices, c’est bien, mais pour vous
assurer d’appliquer une meilleure pratique de sécurité, vous devez envisager
d’accorder l’accès à votre chambre forte à un nombre limité d’utilisateurs. Vous
pouvez ajouter le paramètre --no-self-perms pour ignorer l’attribution
d’autorisation à votre compte.
3 Créez un secret, tel que databasepassword, et attribuez une valeur de mot de
passe, telle que SecureP@ssw0rd (oui, vraiment sécurisé, non?) Ce secret peut
être utilisé comme identifiant pour un serveur de base de données, que vous
allez déployer dans les exercices suivants :
az keyvault secret set \
--name databasepassword \
--vault-name azuremol \
--description "Database password" \
--value "SecureP@ssw0rd"
4 Vous disposez des autorisations complètes pour la chambre forte, de sorte que
vous pouvez afficher le contenu de votre secret :
az keyvault secret show \
--name databasepassword \
--vault-name azuremol

Du point de vue de la gestion, vous pouvez également effectuer des actions courantes
telles que la sauvegarde et la restauration, le téléchargement, la mise à jour et la suppres-
sion d’éléments stockés dans une chambre forte. Une autre propriété que vous avez défi-
nie lors de la création de la chambre forte est l’option --enable-soft-delete. Si vos
applications et services ne peuvent pas récupérer les secrets dont ils ont besoin de la
chambre forte, vous pourriez avoir à résoudre une assez grande panne d’application! Une
chambre forte peut stocker des métadonnées pour des secrets jusqu’à 90 jours après leur
suppression réelle, ce qui vous permet de récupérer des données supprimées malen-
contreusement ou malicieusement.
5 Supprimez la clé que vous venez de créer pour simuler une erreur, ou peut-être
une intention malveillante :
az keyvault secret delete \
--name databasepassword \
--vault-name azuremol
Identités des services gérées 237

6 Récupérez le secret de sorte que vous puissiez continuer à utiliser le mot de


passe de la base de données avec votre application et vos services :
az keyvault secret recover \
--name databasepassword \
--vault-name azuremol
Si vous voulez vraiment supprimer un secret, vous avez aussi la possibilité de purger un
secret supprimé. Cette option permet de supprimer définitivement le secret sans attendre
que la période de récupération de 90 jours par défaut se soit écoulée.
N’hésitez pas à utiliser az keyvault secret show de nouveau pour afficher les infor-
mations sur votre secret et confirmer que le mot de passe que vous avez stocké est bien là.
Voyons maintenant comment une machine virtuelle peut accéder à une chambre forte et
utiliser le secret pour installer le serveur MySQL.

15.2 Identités des services gérées


La possibilité d’utiliser Azure Key Vault pour stocker des secrets ou des clés est géniale,
mais comment accéder à ces secrets? L’interface de ligne de commande Azure ou Azure
PowerShell peuvent accéder aux informations stockées dans une chambre forte, mais il
peut être souvent plus pratique d’autoriser vos machines virtuelles ou applications à récu-
pérer directement des secrets ou des clés lorsqu’elles en ont besoin. Une façon de le faire
consiste à utiliser une identité de service géré (MSI), comme l’illustre la figure 15.4.
Un fichier MSI (à ne pas confondre avec le paquet. msi Windows Installer permettant
d’installer des applications) vous permet de créer un type spécial de compte ou d’identité
qui identifie une ressource de machine virtuelle. Si vous avez utilisé un service de réper-

Azure Acve
1. Principal de service, un Directory
type de compte spécial, créé
dans Azure Acve Directory Principal de service

Acver l’identé du
service géré sur une
machine virtuelle Service de 3. La machine virtuelle ulise
Azure le service de métadonnées
métadonnées d’instance pour demander
d’instance un jeton d’accès pour se
connecter à un service
ou à une ressource
2. Identé de service managé
appliquée à une machine Ressource
virtuelle qui accorde l’accès MV Azure
aux ressources Azure 4. Jeton d’accès ulisé Azure
pour se connecter à une
ressource, par exemple
pour récupérer le secret
du coffre de clés
Figure 15.4 Lorsque vous créez une identité de service géré pour une machine virtuelle, un principal de service
est créé dans Azure Active Directory. Ce principal de service est un type de compte spécial qui peut être utilisé
pour que les ressources s’authentifient. Cette machine virtuelle utilise ensuite le point de terminaison du service
de métadonnées d’instance pour faire des demandes d’accès aux ressources. Le point de terminaison se
connecte à AAD pour demander des jetons d’accès lorsque la machine virtuelle doit demander des données à
partir d’autres services. Lorsqu’un jeton d’accès est retourné, il peut être utilisé pour demander l’accès à des
ressources Azure, telles qu’une chambre forte.
238 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

toire tel qu’Active Directory, un compte d’ordinateur est souvent utilisé pour identifier
l’ordinateur et lui accorder l’accès aux diverses ressources réseau dont il a besoin. Vous ne
créez pas et n’utilisez pas de comptes d’utilisateur ordinaires pour ce type d’authentifica-
tion, ce qui améliore la sécurité: vous pouvez accorder un ensemble restrictif d’autorisa-
tions uniquement à un ordinateur, et n’avez donc pas à vous soucier des autorisations
utilisateur et de l’accès aux dossiers partagés, par exemple.
Un MSI est comme un compte d’ordinateur, mais il est stocké dans Azure Active Direc-
tory (AAD). L’identité, appelée principal de service, est unique pour chaque machine vir-
tuelle et peut être utilisée pour attribuer des autorisations à d’autres ressources Azure,
telles qu’un compte de stockage Azure ou une chambre forte. La machine virtuelle dis-
pose d’autorisations pour accéder à ces ressources, de sorte que vous pouvez scripter des
tâches (comme avec Azure Automation, que nous explorerons dans le chapitre 18) qui ne
nécessitent aucune intervention de l’utilisateur ni d’invites de saisie de noms d’utilisateurs
et de mots de passe. Les machines virtuelles s’authentifient et la plateforme Azure autorise
l’accès aux ressources attribuées.
Voyons comment vous pouvez utiliser un MSI pour demander le secret database-
password d’une chambre forte. Une fois que la machine virtuelle peut récupérer le
secret, le mot de passe peut être utilisé pour installer automatiquement un serveur de
base de données MySQL. Avec une chambre forte et des MSI, vous pouvez exécuter
quelques commandes pour récupérer le secret de la chambre forte, exécuter le pro-
gramme d’installation de MySQL Server et fournir automatiquement le mot de passe
sécurisé.

Service de métadonnées d’instance Azure


Une machine virtuelle qui est activée avec un MSI utilise un point de terminaison REST
par l’intermédiaire du service de métadonnées d’instance (IMDS) pour demander un jeton
d’accès à partir d’AAD, qu’il peut ensuite utiliser pour demander des données à partir
d’Azure Key Vault. Mais qu’est-ce que le service de métadonnées d’instance?
IMDS est un point de terminaison REST qui est uniquement accessible en interne aux
machines virtuelles. Le point de terminaison est disponible à l’adresse non routable de
169.254.169.254. Une machine virtuelle peut faire une demande au point de terminai-
son IMDS pour récupérer des informations sur elle-même, telles que la région Azure ou le
nom du groupe de ressources. Cette capacité permet à la machine virtuelle de com-
prendre la façon dont elle est exécutée et l’endroit où elle est exécutée dans la plate-
forme Azure. Le point de terminaison IMDS est accessible à partir de plusieurs langages
différents, notamment Python, C#, Go, Java et PowerShell.
Pour les événements de maintenance, le point de terminaison IMDS peut également être
interrogé afin que la machine virtuelle prenne connaissance d’un événement de mise à
jour ou de redémarrage en attente. Toutes les tâches de pré-mise à jour ou de redémar-
rage requises peuvent alors être exécutées. Étant donné que IMDS est un point de termi-
naison REST sur une adresse IP non routable, il n’y a aucun agent ou extension pour la
machine virtuelle à installer, et aucun souci de sécurité réseau ou de routage.
Pour les besoins de MSI, le point de terminaison IMDS est utilisé pour relayer la demande
d’un jeton d’accès à AAD. Cette approche permet aux machines virtuelles de demander
un accès sans avoir à communiquer directement avec AAD.
Identités des services gérées 239

Essayer maintenant
Pour créer une machine virtuelle avec un MSI, procédez comme suit.

1 Créez une machine virtuelle Ubuntu. Fournissez votre groupe de ressources, tel
que azuremolchapter15, et un nom pour la machine virtuelle, tel que molvm.
Un compte d’utilisateur nommé azuremol est créé, et les clés SSH que vous avez
utilisées dans les chapitres précédents sont ajoutées à la machine virtuelle :
az vm create \
--resource-group azuremolchapter15 \
--name molvm \
--image ubuntults \
--admin-username azuremol \
--generate-ssh-keys
2 Afin d’appliquer la meilleure pratique de sécurité, vous ne devez pas autoriser
les comptes à accéder à toutes les ressources sur l’ensemble de votre abonne-
ment Azure. En particulier pour les MSI, n’accordez que la quantité minimale
d’autorisations nécessaires. Pour cet exercice, déterminez l’étendue à votre seul
groupe de ressources, tel que azuremolchapter15. Vous définissez l’étendue en
interrogeant l’identifiant du groupe de ressources avec --query id. Cet identi-
fiant est ensuite attribué à une variable nommée scope:
scope=$(az group show --resource-group azuremolchapter15
--query id --output tsv)
3 Créez un MSI pour la machine virtuelle en mode lecture afin qu’elle ne puisse
lire que les ressources sans pouvoir y apporter des modifications. Définissez
l’étendue de l’identité au groupe de ressources. La variable que vous avez créée
à l’étape précédente qui contient l’identifiant du groupe de ressources est
fournie :
az vm identity assign \
--resource-group azuremolchapter15 \
--name molvm \
--role reader \
--scope $scope
La sortie est similaire à ce qui suit. Notez votre propre system-
AssignedIdentity, car il est utilisé pour identifier votre machine virtuelle et
définir des autorisations à l’étape suivante:
{
"role": "reader",
"scope":"/subscriptions/8fa5cd83-7fbb-431a-af16-
4a20dede8802/resourceGroups/azuremolchapter15",
"systemAssignedIdentity": "f5994eeb-4be3-4cf5-83d2-552c6ccb0bed",
}
4 Obtenez des informations sur le principal du service AAD pour votre identité
gérée. Demandez l’ objectId, et entrez votre propre systemAssignedIdentity
qui a été affiché dans la sortie obtenue à l’étape précédente :
az ad sp list \
240 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

--query "[?contains(objectId, 'f5994eeb-4be3-4cf5-83d2-


552c6ccb0bed')].servicePrincipalNames”
La sortie est semblable à l’exemple condensé suivant. Notez le premier ser-
vicePrincipalName. Cette valeur est utilisée pour attribuer des autorisations
sur des ressources Azure telles que votre chambre forte et est requise à l’étape
suivante :
[
"887e9665-3c7d-4142-b9a3-c3b3346cd2e2",
]
5 Définissez la stratégie sur la chambre forte de telle sorte que le principal de ser-
vice de votre machine virtuelle puisse lire les secrets. Entrez votre service-
PrincipalName de l’étape précédente :
az keyvault set-policy \
--name azuremol \
--secret-permissions get \
--spn 887e9665-3c7d-4142-b9a3-c3b3346cd2e2

Il est important de noter ici que, lorsque le MSI a été créé et étendu au groupe de res-
sources, cela ne signifiait pas que la machine virtuelle pouvait alors faire tout ce qu’elle
voulait. Premièrement, le seul rôle créé pour l’identité était celui des autorisations de lec-
ture des ressources. Mais il vous restait encore à attribuer des autorisations à la chambre
forte elle-même. Ces couches de sécurité et d’autorisations vous procurent un contrôle
précis sur les ressources exactes auxquelles chaque identité peut accéder.
Maintenant que vous avez accès à une chambre forte, vous voulez probablement savoir
comment récupérer le secret, n’est-ce pas?

15.2.1 Obtenir un secret dans une machine virtuelle avec une identité
de service géré
Vous avez stocké un secret dans une chambre forte pour un mot de passe de base de don-
nées, et vous avez une machine virtuelle disposant d’un MSI qui fournit l’accès à la lecture
de ce secret depuis la chambre forte. Et maintenant? Comment récupérez-vous le secret et
comment l’utilisez-vous? La figure 15.5 montre comment une machine virtuelle utilise
l’IMDS pour demander l’accès à une ressource, telle qu’une chambre forte. Examinons
les étapes pour voir comment la machine virtuelle récupère le secret.

Essayer maintenant
Pour récupérer et utiliser un secret sur une machine virtuelle avec une identité de service
géré, procédez comme suit.

1 Obtenez l’adresse IP publique de la machine virtuelle que vous avez créée dans
l’exercice précédent, telle que molvm :
az vm show \
--resource-group azuremolchapter15 \
--name molvm \
--show-details \
--query [publicIps] \
--output tsv
2 Protocole SSH à votre machine virtuelle, tel que ssh azuremol@publicIps.
Identités des services gérées 241

1. La machine virtuelle fait une requête HTTP au point de


terminaison du service de métadonnées d’instance (IMDS)
curl 'hp://169.254.169.254/metadata/identy/oauth2/token?apiv-
ersion=2018-02-01&resource=hps%3A%2F%2Fvault.azure.net'
Service de
MV Azure métadonnées
3. Jeton d’accès retourné à d’instance
5. Secret de coffre de parr d’Azure Acve Directory
clés pour motdepasse- 2. IMDS transmet la deman
basededonnées 4. Jeton d’accès ulisé par la de la machine virtuelle pou
retourné à la machine machine virtuelle pour demander jeton d’accès à Azure Acv
virtuelle l’accès à une ressource, comme le Directory pour la ressource
coffre de clés.
Azure Acve
Azure Key Vault
Directory
Secret de motde- Principal de service
passebasededonnées

Figure 15.5 La machine virtuelle utilise l’IMDS pour demander l’accès à une chambre forte. Le point de
terminaison communique avec AAD pour demander un jeton d’accès. Le jeton d’accès est retourné à la
machine virtuelle et est ensuite utilisé pour demander l’accès de la chambre forte. Si l’accès est accordé
par la chambre forte, le secret pour databasepassword est retourné à la machine virtuelle.

3 Pour accéder à une chambre forte, vous avez besoin d’un jeton d’accès. Ce
jeton d’accès est demandé à l’IMDS. Il s’agit d’une simple requête HTTP et, sur
une machine virtuelle Linux, vous pouvez utiliser le programme curl pour
faire la demande. L’IMDS transmet votre demande à AAD :
curl 'http://169.254.169.254/metadata/identity/oauth2/token?
api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
-H Metadata:true
4 La sortie est un peu difficile à lire, car elle ressemble à un fouillis de texte. Elle
est au format JWT (JSON Web Token). Pour traiter la sortie JSON et rendre les
choses plus lisibles pour un humain, installez un analyseur JSON appelé jq :
sudo apt-get -y install jq
5 Refaites votre demande curl, mais cette fois regardez la sortie avec jq :
curl 'http://169.254.169.254/metadata/identity/oauth2/token?
api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
-H Metadata:true --silent | jq
Ces premières étapes vous permettent d’être en mesure de voir comment les demandes
sont faites et à quoi ressemble la sortie, comme l’illustre la figure 15.6. Si vous vous
connectez toujours à la machine virtuelle et que vous demandez manuellement un jeton
d’accès, à quoi sert une identité de service géré? Vous pourriez simplement fournir vos
propres identifiants. Dans un cadre de production, vous utiliseriez probablement un
script qui s’exécute sur la machine virtuelle pour effectuer automatiquement la demande
d’un jeton d’accès et récupérer le secret de la chambre forte. Allons plus loin et voyons
comment vous automatisez ce processus et récupérez le secret.
242 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

1. La machine virtuelle fait une requête HTTP au point de


terminaison du service de métadonnées d’instance (IMDS)
curl 'hp://169.254.169.254/metadata/identy/oauth2/token?apiver-
sion=201802-01&resource=hps%3A%2F%2Fvault.azure.net'-
Service de
MV Azure métadonnées
3. Jeton d’accès retourné à d’instance
5. Secret de coffre parr d’Azure Acve Directory 2. IMDS transmet la
de clés pour demande de la machine
motdepassebasede- 4. Jeton d’accès ulisé par la virtuelle pour le jeton
données retourné à la machine virtuelle pour demander d’accès à Azure Acve
machine virtuelle l’accès à une ressource, comme Directory pour la
le coffre de clés. ressource cible
Azure Acve
Azure Key Vault
Directory
Secret de motde- Principal de service
passebasededonnées

Figure 15.6 La demande curl couvre les trois premières étapes de ce diagramme. La demande curl est
effectuée, le point de terminaison communique avec AAD et un jeton d’accès est émis.

6 Pour simplifier les choses – et si vous vous apprêtiez à faire tout cela dans un
script – vous pouvez utiliser jq pour traiter la réponse curl, extraire unique-
ment le jeton d’accès et le définir comme une variable nommée access_token :
access_token=$(curl
'http://169.254.169.254/metadata/identity/oauth2/token?
api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
-H Metadata:true --silent | jq -r '.access_token')
7 Dans une étape manuelle pour vous aider à comprendre à quoi cela ressemble,
consultez la variable access_token :
echo $access_token
8 Maintenant, la partie amusante! Utilisez le jeton d’accès pour demander votre
secret de la chambre forte. Commençons par le faire manuellement afin que
vous compreniez ce qui se passe. Récupérez le secret avec une autre demande
curl et formatez la sortie avec jq :
curl https://azuremol.vault.azure.net/secrets/databasepassword?
api-version=2016-10-01 -H "Authorization: Bearer $access_token"
--silent | jq
Identités des services gérées 243

La sortie ressemble à celle-ci, qui montre la valeur du mot de passe stocké dans
le secret, ainsi que quelques métadonnées supplémentaires sur le secret dont
vous n’avez pas à vous préoccuper :
{
"value": "SecureP@ssw0rd!",
"contentType": "Database password",
"id":
"https://azuremol.vault.azure.net/secrets/databasepassword/
87e79e35f57b41fdb882c367b5c1ffb3",
}
Cette demande curl est la deuxième partie du flux de travail, comme l’illustre
la figure 15.7.
1. La machine virtuelle fait une requête HTTP au point de
terminaison du service de métadonnées d’instance (IMDS)

curl 'hp://169.254.169.254/metadata/identy/oauth2/token?api-ver-
sion=2018-02-01&resource=hps%3A%2F%2Fvault.azure.net'
Service de
MV Azure métadonnées
3. Jeton d’accès retourné à d’instance
5. Secret de coffre parr d’Azure Acve Directory
de clés pour
4. Jeton d’accès ulisé 2. IMDS transmet la demande
par la machine de la machine virtuelle pour le
motdepassebasede-
virtuelle pour jeton d’accès à Azure Acve
données retourné à
demander l’accès à Directory pour la ressource cible
la machine virtuelle
une ressource, comme
le coffre de clés
Azure Acve
Azure Key Vault
Directory
Secret de motdepasse- Principal de service
basededonnées

Figure 15.7 Cette deuxième demande curl couvre les deux dernières étapes du diagramme. Le jeton
d’accès est utilisé pour demander le secret de la chambre forte. La réponse JSON est retournée, laquelle
inclut la valeur du secret.

9 De la même manière que vous avez utilisé une variable pour stocker le jeton
d’accès, dans un script, vous pouvez également attribuer la valeur du secret à
une variable. Cette fois, utilisez jq pour traiter la réponse, n’extrayez que la
valeur secrète et définissez-la comme une variable nommée
database_password :
database_password=$(curl
https://azuremol.vault.azure.net/secrets/databasepassword?
api-version=2016-10-01 -H "Authorization: Bearer $access_token"
--silent | jq -r '.value')
10 Encore une fois, dans une étape manuelle pour vous aider à comprendre le
processus, affichez le contenu de la variable database_password :
echo $database_password

J’espère que vous me suivez! Si vous écrivez une application dans Python, ASP.NET ou
node.js, par exemple, le processus sera semblable, car vous effectuerez une demande pour
le jeton d’accès, puis utiliserez le jeton pour demander un secret d’une chambre forte. Il
existe probablement d’autres bibliothèques que vous pourriez utiliser dans votre code plu-
tôt que l’utilitaire jq à partir de la ligne de commande.
244 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

Rappelons rapidement que toutes ces étapes peuvent être condensées en deux lignes,
comme l’indique la liste suivante.

Listing 15.1 Demander un jeton d’accès, puis un secret d’une chambre forte
access_token=$(curl
'http://169.254.169.254/metadata/identity/oauth2/token?
api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net'
-H Metadata:true --silent | jq -r '.access_token')
database_password=$(curl
https://azuremol.vault.azure.net/secrets/databasepassword?
api-version=2016-10-01 -H "Authorization: Bearer $access_token"
--silent | jq -r '.value')
Et maintenant? Le MSI de votre machine virtuelle peut récupérer un secret d’une chambre
forte; voyons comment vous pouvez l’utiliser pour installer et configurer MySQL Server.
Dans Ubuntu, vous pouvez définir des sélections de configuration pour les installateurs de
paquets, tels que MySQL Server. Ces sélections de configuration vous permettent de fournir
des valeurs telles que des noms d’utilisateur et des mots de passe et de les utiliser automatique-
ment dans la partie pertinente du processus d’installation. Les invites manuelles à fournir un
mot de passe, comme vous l’avez peut-être vu dans le chapitre 2, ont disparu :
11 Définissez les sélections de configuration pour les mots de passe du serveur
MySQL avec la variable database_password que vous avez créée au cours des
étapes précédentes :
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password
password $database_password"
sudo debconf-set-selections <<< "mysql-server mysql-
server/root_password_again password $database_password"
12 Installez le serveur MySQL. Il n’y a pas d’invites, car le mot de passe est fourni
par les sélections de configuration :
sudo apt-get -y install mysql-server
13 Nous allons prouver que tout cela a fonctionné! Affichez la variable database_-
password afin que vous puissiez voir clairement ce que votre mot de passe doit
être :
echo $database_password
14 Connectez-vous au serveur MySQL. Lorsque vous êtes invité à entrer un mot de
passe, entrez la valeur de database_password, qui est la valeur du secret de la
chambre forte :
mysql -u root -p
Vous êtes connecté au serveur MySQL, ce qui confirme que le secret de la
chambre forte a été utilisé pour créer avec succès les identifiants du serveur
SQL! Tapez exit deux fois pour fermer l’invite de commandes du serveur
MySQL, puis fermez votre session SSH sur la machine virtuelle.
Il s’agissait d’un exemple de base, et vous auriez encore besoin de sécuriser le serveur
MySQL et de fournir des identifiants supplémentaires afin que les applications puissent
accéder à des bases de données ou à des tableaux, par exemple. L’avantage d’utiliser un
secret d’une chambre forte est que vous avez la garantie que tous les mots de passe sont les
mêmes. Si vous utilisez des jeux de mise à l’échelle de machines virtuelles, par exemple,
chaque instance de machine virtuelle peut automatiquement demander le secret et instal-
ler le serveur MySQL afin qu’il soit prêt à servir vos données d’application. Ces mots de
Création et injection de certificats 245

passe ne sont jamais définis dans les scripts, et personne n’a besoin de voir ce que sont les
mots de passe. Vous pouvez même générer des mots de passe au hasard et les utiliser en
rotation comme pour les secrets dans une chambre forte.
Vous vous dites peut-être: stocker des mots de passe dans une chambre forte est excel-
lent, mais n’est-ce pas tout le monde qui utilise des certificats numériques pour l’authenti-
fication et la sécurité? Pouvez-vous utiliser une chambre forte pour stocker des certificats
et les récupérer automatiquement à partir de vos applications ou de vos machines vir-
tuelles? Bien sûr que vous le pouvez!

15.3 Création et injection de certificats


Les certificats numériques sont une forme commune de sécurité et d’authentification
dans les services et applications Web. Les certificats sont émis par une autorité de certifica-
tion, qui est (espérons-le!) approuvée par les utilisateurs finaux. Le certificat permet aux
utilisateurs de vérifier qu’un site ou une application Web est réellement ce qu’il dit qu’il
est. Chaque fois que vous voyez un site Web ayant une adresse de navigateur Web qui com-
mence par https:// and has a padlock symbol, that means the traffic is encrypted and
secured by a digital certificate. et un symbole de cadenas, cela signifie que le trafic est chif-
fré et sécurisé par un certificat numérique.
La gestion des certificats numériques peut souvent devenir une tâche de gestion
majeure. Un problème courant consiste à savoir comment stocker les certificats et accor-
der leur accès à mesure que les services et les applications en ont besoin. Dans les exer-
cices précédents, nous avons examiné comment une chambre forte peut être utilisée pour
partager des secrets sécurisés et des clés avec des services et des applications, mais une
chambre forte peut également faire la même chose avec des certificats. Comme l’illustre
la figure 15.8, une chambre forte peut être utilisée pour demander, émettre et stocker des
certificats.
1. Demande de 2. Demande de signature
créaon d’un de cerficat (CSR)
cerficat envoyée envoyée à l’autorité de
au coffre de clés cerficaon (CA)
Ulisateur,
applicaon ou Key Vault Autorité de
service cerficaon
4. Cerficat délivré 3. Cerficat X.509
du coffre de clés signé et retourné
dans le coffre de clés
où il est conservé
Figure 15.8 Un utilisateur, une application ou un service peut demander un nouveau certificat
d’une chambre forte. Une demande de signature de certificat (CSR) est envoyée par la chambre
forte à une autorité de certification. Cela peut être une autorité de certification tierce externe ou
une autorité de certification interne de confiance. Azure Key Vault peut également agir comm
e sa propre autorité de certification pour générer des certificats auto-signés. L’autorité de
certification émet alors un certificat X.509 signé, lequel est stocké dans la chambre forte.
Enfin, la chambre forte renvoie le certificat au demandeur initial.
Dans un cadre de production, vous devez toujours utiliser une autorité de certification
approuvée pour émettre vos certificats. Pour une utilisation interne, vous pouvez émettre
des certificats auto-signés que vous créez vous-même. Ces certificats auto-signés ne sont pas
approuvés par d’autres services et applications, de sorte qu’ils génèrent généralement un
avertissement, mais les certificats auto-signés vous permettent de devenir rapidement opé-
rationnel et de vous assurer que votre code fonctionne comme prévu avec le trafic chiffré.
Azure Key Vault peut générer des certificats auto-signés pour vous. Dans sa conception,
Key Vault agit comme sa propre autorité de certification pour demander, émettre et stoc-
ker des certificats. Nous allons utiliser cette capacité pour générer un certificat auto-signé
246 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

et voir comment l’injecter facilement dans une machine virtuelle. Le certificat est ensuite
utilisé pour un serveur Web de base afin de vous montrer comment activer rapidement
SSL pour sécuriser votre trafic Web.

Essayer maintenant
Pour créer et injecter un certificat dans une machine virtuelle, procédez comme suit.

1 Créez un certificat auto-signé dans Azure Key Vault et entrez un nom, tel que
molcert. Les stratégies sont utilisées pour définir des propriétés telles que les
délais d’expiration, la force de chiffrement et le format de certificat. Vous pou-
vez créer différentes stratégies pour répondre aux besoins de vos applications et
services. Pour cet exercice, utilisez la stratégie par défaut qui crée un certificat
de 2 048 bits et est valide pour un an :
az keyvault certificate create \
--vault-name azuremol \
--name molcert \
--policy "$(az keyvault certificate get-default-policy)"
2 Pour voir le certificat en action, créez une autre machine virtuelle, telle que
molwinvm. Cette fois, créez une machine virtuelle Windows qui utilise Windows
Server 2016, de manière à vous déployer autour du système d’exploitation.
Fournissez votre propre nom d’utilisateur et mot de passe d’administrateur :
az vm create \
--resource-group azuremolchapter15 \
--name molwinvm \
--image win2016datacenter \
--admin-username azuremol \
--admin-password P@ssw0rd1234
3 Vous pouvez ajouter automatiquement le certificat à la machine virtuelle direc-
tement à partir de l’interface de ligne de commande Azure. Cette approche ne
repose pas sur un MSI. Ajoutez votre certificat, tel que molcert, à la machine vir-
tuelle que vous avez créée à l’étape précédente, telle que molwinvm :
az vm secret add \
--resource-group azuremolchapter15 \
--name molwinvm \
--keyvault azuremol \
--certificate molcert
4 Connectez-vous à la machine virtuelle et vérifiez que le certificat a été injecté
correctement. Pour vous connecter à votre machine virtuelle, commencez par
obtenir son adresse IP publique :
az vm show \
--resource-group azuremolchapter15 \
--name molwinvm \
--show-details \
--query [publicIps] \
--output tsv
Utilisez un client de connexion Bureau à distance Microsoft local sur votre ordi-
nateur pour vous connecter à votre machine virtuelle. Utilisez les identifiants
pour vous connecter à localhost\azuremol, et non les identifiants par défaut de
Création et injection de certificats 247

votre ordinateur local que votre client Bureau à distance peut essayer d’utiliser,
comme l’illustre la figure 15.9.

Figure 15.9 Votre client Bureau à


distance peut essayer d’utiliser vos
identifiants d’ordinateur local par
défaut. Au lieu de cela, sélectionnez
Utiliser un compte différent, puis
fournissez les identifiants
localhost\azuremol que vous avez
indiqués lors de la création de la
machine virtuelle.

5 Une fois que vous êtes connecté, sélectionnez le bouton Démarrer de Windows,
puis tapez mmc et ouvrez Microsoft Management Console. Choisissez Fichier >
Ajouter/supprimer un composant logiciel enfichable, puis sélectionnez Ajouter
le composant logiciel enfichable Certificats.
6 Choisissez d’ajouter des Certificats pour le compte de l’ordinateur, sélectionnez
Suivant, puis sélectionnez Terminer. Choisissez OK pour fermer la fenêtre Ajou-
ter/supprimer un composant logiciel enfichable.
7 Développez le dossier Certificats (ordinateur local) > Certificats > personnels.
Le certificat d’Azure Key Vault que vous avez injecté dans la machine virtuelle
est répertorié, tel que CLIGetDefaultPolicy, comme l’illustre la figure 15.10.

Figure 15.10 Dans la console de gestion Microsoft, ajoutez le composant logiciel enfichable
Certificats sur l’ordinateur local. Développez le magasin de Certificats > personnels pour
afficher les certificats installés. Le certificat injecté de Key Vault est répertorié.
248 CHAPITRE 15 Sécurisation des informations avec Azure Key Vault

C’est tout ce qu’il y a à faire! Créez le certificat dans Key Vault, puis ajoutez le certificat à la
machine virtuelle. Le certificat est placé dans le magasin de certificats local de l’ordina-
teur, ce qui permet à tout service ou application d’y accéder. Sur une machine virtuelle
Windows, les certificats sont stockés dans le cache de certificat local, comme le montre cet
exercice. Sur les machines virtuelles Linux, les fichiers .prv et .crt pour les parties privées
et publiques du certificat sont stockés dans /var/lib/waagent/. Vous pouvez ensuite
déplacer les certificats à l’endroit où vous en avez besoin pour votre application ou ser-
vice.
Les certificats peuvent être utilisés à la fois pour l’authentification du serveur à
d’autres applications ou services, et pour leur propre application ou service. Un exemple
courant est un serveur Web qui utilise un certificat SSL; c’est ce que vous ferez dans le
laboratoire de fin de chapitre.

15.4 Lab : Configuration d’un serveur Web sécurisé


Dans le dernier exercice, vous avez injecté un certificat auto-signé à partir d’Azure Key Vault
dans une machine virtuelle Windows. Pour ce laboratoire, installez et configurez le serveur
Web IIS pour utiliser le certificat :
1 Ouvrez PowerShell sur votre machine virtuelle Windows, puis installez le ser-
veur Web IIS :
Add-WindowsFeature Web-Server -IncludeManagementTools
2 Ouvrez le gestionnaire d’Internet Information Server (IIS). Vous pouvez le
faire à partir du menu Outils dans Server Manager.
3 Pour le site Web par défaut, choisissez Modifier les liaisons.
4 Ajoutez une liaison HTTPS sur toutes les adresses IP non attribuées sur le
port 443. Sélectionnez le certificat auto-signé que vous avez créé et injecté à
partir de Key Vault, généralement nommé d’un nom qui ressemble à CLIGet-
DefaultPolicy.
5 Ouvrez un navigateur Web sur la machine virtuelle, puis entrez
https://localhost. Vous avez généré un certificat auto-signé dans Key Vault,
de sorte que le navigateur Web ne lui fait pas confiance. Acceptez l’avertisse-
ment pour continuer et vérifiez que la liaison HTTPS fonctionne.
6 De retour dans Azure Cloud Shell ou le portail, créez une règle NSG pour la
machine virtuelle sur le port TCP 443. Entrez https://yourpublicipaddress
dans un navigateur Web sur votre ordinateur local. C’est ce que vos utilisateurs
éprouveraient comme expérience, avec un avertissement que le certificat auto-
signé n’est pas approuvé. Pour la plupart des cas d’utilisation, n’oubliez pas
d’utiliser une autorité de certification interne ou tierce digne de confiance
pour générer des certificats approuvés et les stocker dans une chambre forte.
Centre de sécurité Azure
et mises à jour

Ce serait génial si Azure était assez intelligent pour surveiller toutes les ressources de
vos applications de base et vous alerter au moindre problème de sécurité, n'est-ce pas?
Et si votre entreprise possède des politiques de sécurité définies (et si vous n'en avez
pas, arrêtez-vous tout de suite et notez qu'il faut en créer), comment vous assurez-vous
de la conformité permanente de vos déploiements Azure? Si vous avez déjà fait l'objet
d'un audit de sécurité informatique, vous avez une idée du plaisir qu'on peut avoir à
éplucher la liste d'erreurs de configuration d'un environnement, surtout les défail-
lances de sécurité évitables!
Le Centre de sécurité Azure centralise les alertes et les recommandations de sécu-
rité que vous pouvez lire au seul et même endroit. Définissez vos propres politiques de
sécurité et laissez Azure surveiller l'état de vos ressources et déterminer leur confor-
mité. Dans ce chapitre, nous verrons comment le Centre de sécurité vous informe des
problèmes et vous fournit les étapes de leur résolution. Nous verrons aussi comment
utiliser l'accès juste à temps aux machines virtuelles pour contrôler les connexions à
distance et comment la gestion des mises à jour actualise continuellement vos
machines virtuelles en y appliquant les plus récents correctifs de sécurité.

16.1 Centre de sécurité Azure


Dans ce livre, nous avons abordé la sécurité sous ses différents aspects comme la créa-
tion et la configuration de groupes de sécurité réseau (NSG) pour restreindre l'accès
aux machines virtuelles et ne permettre que le trafic chiffré vers les comptes Azure Sto-
rage. Mais pour ce qui est de vos propres déploiements, au-delà des exercices de ce livre,
comment savoir par où commencer et comment être sûr d'avoir appliqué toutes les
meilleures pratiques de sécurité? C'est justement là-dessus que peut vous aider le Centre
de sécurité Azure. Il vérifie votre environnement et détecte ce qui a pu vous échapper.

249
250 CHAPITRE 16 Centre de sécurité Azure et mises à jour

Le Centre de sécurité Azure analyse vos ressources, recommande des correctifs et vous
aide à remédier aux problèmes de sécurité, comme le montre la figure 16.1. Quand votre
abonnement Azure ne compte que deux ou trois machines virtuelles et un seul réseau vir-
tuel, faire le suivi des restrictions de sécurité à mettre en place peut paraître simple. Mais
s'y retrouver dans les configurations de sécurité à appliquer à des dizaines, à des centaines,
voire à des milliers de machines virtuelles en employant des méthodes manuelles devient
impensable.

Machines Réseaux
Stockage Applicaons
virtuelles virtuels

Surveiller les Générer des alertes et


ressources Azure fournir des conseils en
pour les problèmes vue de correcfs
de sécurité

Centre de sécurité Azure

Foncons de sécurité dédiées


pour compléter les recomman-
daons de stratégie

Accès aux Geson des Mise en liste verte


machines virtuelles d’applicaons
juste à temps mises à jour

Figure 16.1 Le Centre de sécurité Azure surveille vos ressources Azure et utilise des politiques de
sécurité définies pour vous informer des menaces et des vulnérabilités potentielles. Il vous propose des
recommandations et des mesures à prendre pour remédier aux problèmes. Il vous permet aussi
d'utiliser un accès juste à temps aux machines virtuelles, de surveiller la disponibilité des mises à jour
de sécurité et de les appliquer et de contrôler les applications inscrites sur la liste blanche autorisées
à être exécutées sur vos machines virtuelles.

Le Centre de sécurité peut aussi vous prévenir d'appliquer une pratique recommandée,
comme, par exemple, activer la fonction de diagnostic d'une machine virtuelle qui n'en
aurait pas. Rappelez-vous, au chapitre 12, nous avons vu comment surveiller et dépanner
des machines virtuelles. Il faut installer et configurer un agent de diagnostic avant qu'un
problème ne survienne. Si vous soupçonnez une faille de sécurité, l'accès aux machines
virtuelles et aux journaux pourrait être impossible. Mais si vous avez configuré une exten-
sion de diagnostic qui transfère en continu les journaux vers Azure Storage, vous pouvez
alors savoir ce qui s'est passé et espérer remonter à la source du problème et en connaître
l'ampleur.

Essayer maintenant
Pour commencer à utiliser le Centre de sécurité Azure, suivez les étapes ci-dessous.

1 Ouvrez le portail Azure et sélectionnez l’icône Cloud Shell dans le menu du


haut.
Centre de sécurité Azure 251

2 Créez un groupe de ressources. Indiquez un nom commeazuremolchapter16


et un emplacement comme eastus :
az group create --name azuremolchapter16 --location eastus
3 Créez une machine virtuelle Linux de base pour que le Centre de sécurité
puisse surveiller quelque chose et faire des recommandations pour :
az vm create \
--resource-group azuremolchapter16 \
--name azuremol \
--image ubuntults \
--admin-username azuremol \
--generate-ssh-keys
4 Une fois la machine virtuelle déployée, fermez le Cloud Shell. Dans le portail
Azure, cliquez sur Centre de sécurité dans la liste des services à gauche. Le
tableau de bord met quelques secondes à s'afficher la première fois pour prépa-
rer toutes les fonctions disponibles (voir la figure 16.2)

Figure 16.2 La vue d'ensemble du Centre de sécurité Azure propose une liste de recommandations, d'alertes et
d'événements. Cliquez sur une ressource de base comme Puissance de calcul ou Mise en réseau pour voir une
liste des éléments de sécurité propre à cette ressource.

Le Centre de sécurité analyse le déploiement des ressources comme les machines vir-
tuelles, les règles NSG et le stockage. Le système se base sur des référentiels de sécurité
intégrés pour détecter les problèmes et faire des recommandations. Disons, par exemple,
que la machine virtuelle que vous venez tout juste de déployer génère des avertissements,
comme le montre la figure 16.3. Vous avez la possibilité, en fait l'obligation, de mettre en
place vos propres politiques de sécurité. Ces politiques indiquent à Azure comment res-
treindre certains accès ou ce qui doit être fait pour assurer le respect des mandats de votre
252 CHAPITRE 16 Centre de sécurité Azure et mises à jour

entreprise. À mesure que vous créez ou mettez à jour des ressources, Azure surveille les
cas de non-respect de ces politiques et vous informe des mesures à prendre pour remédier
au problème de sécurité. Vous utilisez les politiques de sécurité Azure par défaut qui vous
sont proposées dans ce chapitre, mais pensez à toutes les configurations de sécurité parti-
culières que vous voulez appliquer à vos machines virtuelles et à la façon de les définir
dans vos propres politiques.

Figure 16.3 La machine virtuelle que vous avez créée a déjà déclenché des avertissements de sécurité. Dans cet
exemple, le premier avertissement concerne la non-détection d'un dispositif pare-feu autre que les groupes de
sécurité réseau. Le deuxième avertissement indique que le groupe de sécurité réseau autorise le trafic vers tous
les appareils connectés à Internet, au lieu de restreindre l'accès à une plage d'adresses IP en particulier.

5 Cliquez sur l'icône Mise en réseau du tableau de bord du Centre de sécurité


pour afficher les alertes de sécurité. Même si vous venez de créer cette machine
virtuelle et d'utiliser les valeurs par défaut de l'interface de ligne de commande
d'Azure, cet exemple montre certains avertissements de sécurité :
– Aucun pare-feu nouvelle génération détecté : Les règles NSG sont parfaites pour
contrôler le trafic vers et depuis les machines virtuelles, mais elles n'offrent
pas le même niveau de fonctions que les vrais dispositifs pare-feu comme
ceux que proposent Cisco, Barracuda ou Fortinet. L'utilisation d'un disposi-
tif pare-feu supplémentaire n'est pas nécessaire. Cela dit, vous avez certaine-
ment intérêt à discuter avec vos meilleurs amis de l'équipe de réseautique
pour savoir ce qu'ils comptent utiliser pour sécuriser le trafic du réseau vir-
tuel. On vous avait bien dit que les membres de cette équipe deviendraient
vos meilleurs alliés, n'est-ce pas?
– Accès entrant autorisé depuis n'importe quelle origine sur Internet : Quand vous
avez créé la machine virtuelle, une règle NSG par défaut s'est aussi créée.
Cette règle autorise les connexions entrantes à distance provenant de
n'importe quelle origine sur Internet. Il est recommandé de limiter l'accès
entrant à une plage d'adresses IP ou à un sous-réseau. L'interface de ligne de
commande Azure (ou PowerShell, le portail ou les modèles) ne peut pas
garantir cette règle à moins d'indiquer une plage entrante autorisée. Vous
pouvez modifier les règles existantes pour limiter le trafic entrant, comme le
suggère le Centre de sécurité.
Accès juste à temps 253

16.2 Accès juste à temps


Dans la section précédente, vous venez de voir les suggestions que vous fait le Centre de
sécurité pour limiter le nombre de connexions entrantes à distance. Vous pourriez indi-
quer une plage d'adresses pour limiter le trafic, mais idéalement, il ne faut ouvrir la
connectivité entrante qu'au besoin. De cette manière, la machine virtuelle n'accepte
aucune connexion à distance et n'est accessible que pendant un court laps de temps,
quand il le faut. Et oui, vous devriez quand même limiter cette connectivité de courte
durée à une plage d'adresses IP bien précises, d'où l'utilité de l'accès juste à temps aux
machines virtuelles, comme le montre la figure 16.4.
1. L’ulisateur 4. Règles NSG
demande un accès à configurées pour
la machine virtuelle accorder un accès
juste-à-temps (JIT). défini.
Centre de sécurité Azure Règles de groupe
Ulisateur
de sécurité
Azure
6. L’ulisateur peut Accès à la machine 5. Les règles NSG réseau (NSG)
accéder à la machine virtuelle juste-à-temps autorisent l’accès
virtuelle pendant une pendant une période
période définie. définie.

2. Autorisaons 3. Si les autorisaons


RBAC vérifiées pour RBAC sont obtenues,
l’accès à la ressource l’accès JIT est accordé
de machine et configuré.
virtuelle.
Autorisaons de
contrôle d’accès
en foncon des
rôles (RBAC)

Figure 16.4 Avec l'accès juste à temps, les règles NSG sont configurées de manière à refuser les
connexions à distance aux machines virtuelles. Quand un utilisateur demande l'accès à une machine
virtuelle, le système vérifie les autorisations au moyen d'un contrôle RBAC. Ces demandes sont vérifiées,
et si elles sont accordées, les règles NSG sont mises à jour et autorisent le trafic provenant d'une plage
d'adresses IP donnée, pour une période définie. L'utilisateur ne peut avoir accès à la machine virtuelle que
durant cette période. Une fois le temps écoulé, les règles NSG réappliquent automatiquement un refus.

L'accès juste à temps permet au Centre de sécurité d'adapter dynamiquement les restric-
tions d'accès à une machine virtuelle. Quand il est activé, des règles NSG sont créées et ces
règles refusent tout le trafic provenant des connexions à distance. Un utilisateur peut par
la suite demander l'accès à une machine virtuelle seulement au besoin. Le Centre de sécu-
rité détermine, en tenant compte des contrôles RBAC vus au Chapitre 6, si l'utilisateur qui
demande une connexion possède les droits d'accès à une machine virtuelle. Si l'utilisateur
en a l'autorisation, le Centre de sécurité met à jour les règles NSG visées, qui permettent
alors le trafic entrant. Ces règles ne sont appliquées que durant un laps de temps bien pré-
cis. Une fois ce temps écoulé, les règles cessent de s'appliquer et la machine virtuelle
recommence à bloquer les connexions à distance.
Quand utiliser un accès juste à temps pour votre magasin de pizza fonctionnel? Pensez
aux machines virtuelles sur lesquelles s'exécuteraient vos applications Web, votre système
de commandes ou vos applications logiques opérationnelles. Voudriez-vous que ces
machines soient connectées à Internet et accessibles à tous en tout temps? Assurément
pas! Un accès à distance par SSH ou RDP se justifie valablement, mais cherchez toujours à
réduire le plus possible la disponibilité d'un tel accès. Même si vos règles NSG restreignent
déjà l'accès à certaines plages d'adresses IP, l'accès juste à temps ajoute une couche de pro-
tection. Il vous permet de déterminer les ressources auxquelles peuvent accéder les utilisa-
254 CHAPITRE 16 Centre de sécurité Azure et mises à jour

teurs Azure et laisse une piste d'audit plus facile à suivre et sur laquelle le Centre de
sécurité peut produire des rapports.

Essayer maintenant
Pour activer l'accès juste à temps aux machines virtuelles, suivez les étapes ci-dessous.

1 Ouvrez le portail Azure et cliquez sur Centre de sécurité dans le menu de


gauche. Sous Défenses infonuagiques avancées, cliquez sur Accès juste à temps
aux machines virtuelles.
2 Si le système vous le demande, choisissez l'option Essayer l'accès juste à temps
aux machines virtuelles ou Passer au niveau standard du Centre de sécurité.
L'essai gratuit dure 60 jours et ne se prolonge pas automatiquement. Il est inté-
gré à votre compte Azure gratuit et ne vous coûte rien à l'utilisation. Cliquez sur
l'option Appliquer le forfait standard et patientez quelques instants le temps
qu'il s'active. Une fois qu'il est activé, vous aurez peut-être à fermer et à rouvrir
le portail Azure avant de passer aux étapes suivantes.
3 Cliquez encore une fois sur Accès juste à temps aux machines virtuelles dans la
fenêtre Centre de sécurité. Une fois votre compte standard activé, vous pouvez
afficher une liste des machines virtuelles à utiliser. Cliquez sur Recommandé et
choisissez votre machine virtuelle, puis cliquez sur Activer l'accès juste à temps
sur une machine virtuelle, comme le montre la figure 16.5.

Figure 16.5 Sélectionnez une machine virtuelle sous l'onglet Recommandé, puis cliquez sur Activer
l'accès juste à temps sur une machine virtuelle. Le système indique que la machine virtuelle accepte
tous les accès à distance, ce qui fait que le système associe au problème de sécurité un niveau de
gravité élevé.

4 Par défaut, les règles de l'accès juste à temps permettent d'ouvrir les ports SSH
(port 22) et RDP (port 3389) ainsi que l'accès distant PowerShell (ports 5985 et
5986) pendant trois heures. Si vous le voulez, sélectionnez une règle et modi-
fiez les options Adresses IP sources autorisées ou Durée maximale des
demandes, puis cliquez sur OK. Sinon, ne changez rien aux valeurs par défaut
et cliquez sur Enregistrer, comme le montre la figure 16.6.
5 Une fois l'accès juste à temps activé, naviguez jusqu'à votre groupe de res-
sources, puis sélectionnez votre machine virtuelle. Cliquez sur Mise en réseau
pour afficher la configuration appliquée au réseau virtuel associé à la machine
virtuelle. La liste des règles NSG attribuées est affichée comme le montre la
figure 16.7.
Accès juste à temps 255

Figure 16.6 Quand vous activez l'accès juste à temps, vous pouvez modifier les règles par défaut
autorisées, les adresses IP sources autorisées et la durée maximale des demandes (en heures). Ces
règles vous permettent de contrôler avec précision ce qui est autorisé et donc de réduire la
connectivité à son plus strict minimum.

Les règles d'accès juste à temps figurent en tête de liste, parce que leur priorité
est la plus faible. Le trafic est refusé vers l'adresse IP de la machine virtuelle. Ce
qui semble étrange ici, c'est que la règle default-allow-ssh continue à exister et à
autoriser tout le trafic. Rappelez-vous les groupes de sécurité réseau vus au cha-
pitre 5. Arrivez-vous à voir ce qui se passe ici?

Figure 16.7 Les règles des accès juste à temps créées avec la priorité la plus faible. Ces priorités donnent aux
règles d'accès juste à temps préséance sur toutes les règles appliquées plus tard au niveau du sous-réseau.
256 CHAPITRE 16 Centre de sécurité Azure et mises à jour

L'accès juste à temps ne s'applique qu'à la machine virtuelle. La destination de la


règle d'accès juste à temps indique l'adresse IP de la machine virtuelle. Dans
l'exemple de la figure 16,7, il s'agit de l'adresse 10.0.0.4. Le trafic est refusé. Mais,
en réalité, la règle d'accès juste à temps est appliquée à l'ensemble du sous-
réseau. La règle default-allow-ssh s'applique au niveau du sous-réseau. Les règles
NSG sont traitées par ordre de priorité, de la plus faible à la plus élevée. Une
action de refus s'applique indépendamment des autres règles.
Donc, même si vous autorisez le protocole SSH au niveau du sous-réseau, la
règle ayant la priorité la plus faible refuse visiblement le trafic vers la machine
virtuelle en question. Et c'est tout à fait sensé parce que, encore une fois, l'accès
juste à temps se situe niveau de la machine virtuelle, et non à celui du sous-
réseau. Les autorisations RBAC peuvent varier d'une machine virtuelle connec-
tée au même sous-réseau à une autre. Ce niveau de précision vous permet donc
d'indiquer qui peut accéder à telle ou telle machine virtuelle quand l'accès
juste à temps est activé.
6 Revenez au Centre de sécurité et cliquez sur Accès juste à temps aux machines
virtuelles. Choisissez votre machine virtuelle dans la liste, puis cliquez sur
Demande d'accès.
7 La plateforme Azure vérifie vos autorisations RBAC pour déterminer si vous
pouvez bel et bien activer un tel accès. Si vous y est autorisé, la fenêtre montrée
à la figure 16.8 s'affiche. Elle vous permet d'activer et de désactiver chaque port.
Par défaut, l'accès juste à temps s'effectue seulement depuis Mon IP. Pour ce
faire, la plateforme Azure vérifie l'adresse IP de la connexion actuelle et limite
l'accès juste à temps aux connexions provenant de cette adresse.
8 Activez la règle du port 22, puis cliquez sur Ports ouverts.
Revenez à votre machine virtuelle et regardez encore une fois les règles NSG. La règle
d'accès juste à temps est maintenant activée pour les ports que vous avez indiqués, comme
le montre la figure 16.9.

Figure 16.8 Quand vous demandez un accès, seuls certains ports et certaines sources IP sont
autorisés. Les valeurs affichées par défaut proviennent des réglages que vous avez définis au moment
d'activer la machine virtuelle associée à l'accès juste à temps. Mais, vous pouvez maintenant les
Gestion des mises à jour d’Azure 257

Figure 16.9 La règle d'accès juste à temps autorise maintenant le trafic transitant par le port 22 de votre
machine virtuelle, mais seulement à partir de votre adresse IP publique. Après le laps de temps indiqué (par
défaut, trois heures), cette règle NSG recommence à refuser le trafic.

La règle NSG réapplique automatiquement une action de refus aussitôt le laps de


temps écoulé. Par défaut, ce laps de temps dure trois heures. Après quoi, la machine vir-
tuelle revient à son état plus sécurisé et pour y accéder de nouveau, il faut redemander
l'accès.
Cette procédure d'accès juste à temps sert à contrôler les demandes et les octrois d'accès à
la machine virtuelle. Et ce n'est pas parce que quelqu'un arrive à demander l'accès à une
machine virtuelle qu'on le lui accorde forcément. Et, dans Azure, tout cela se traduit par
la mise à jour des règles NSG définies. Il est impossible pour le Centre de sécurité et
l'accès juste à temps d'ajouter, de supprimer ou d'actualiser les authentifiants sur la
machine virtuelle.
Toutes les demandes d'accès juste à temps sont aussi enregistrées. Dans le Centre de
Sécurité, cliquez sur l'option Accès juste à temps aux machines virtuelles, puis choisissez
votre règle. À droite, cliquez sur les points de suspension dans le menu, puis sur Journal
des activités. Ce journal sert à vérifier l'auteur des demandes accès à la machine en cas de
problème.
L'accès juste à temps aux machines virtuelles est l'un des moyens qu'emploient le
Centre de sécurité et Azure pour mieux sécuriser vos machines virtuelles. La sécurité
passe grandement par le contrôle des accès aux machines virtuelles, mais qu'en est-il des
applications, des bibliothèques et des services exécutés sur une machine virtuelle? Voilà
pourquoi vous devez veiller à l'application rigoureuse de toutes les mises à jour de sécurité
à vos machines virtuelles dès qu'il le faut.

16.3 Gestion des mises à jour d’Azure


Le Centre de sécurité Azure vous informe sur un certain nombre d'aspects, dont les mises
à jour de système d'exploitation que nécessite votre machine virtuelle. Dans votre magasin
de pizza, essayez d'installer les plus récents correctifs de sécurité et d'application. Vous
n'avez pas intérêt à exécuter un système miné par des vulnérabilités ou des zones
d'attaques connues. Automatiser la mise à jour de ces systèmes et suivre leur conformité
est l'un des moyens de mieux les sécuriser. Si vous utilisez des applications qui renferment
des données clients et des informations de paiement, n'exécutez aucun système sans y
avoir installé les correctifs les plus récents. Et n'oubliez pas de créer un environnement de
test pour y appliquer sans risque les correctifs de sécurité et être sûr qu'ils ne posent aucun
problème avant de les appliquer à vos systèmes en production.
Les machines virtuelles Azure intègrent une fonction de gestion des mises à jour
capable d'analyser, de signaler et de corriger les mises à jour de système d'exploitation.
Sérieux avantage, cette fonction est compatible avec Windows et Linux, et même dans
Linux, avec des distributions comme Ubuntu, Red Hat et SUSE. La figure 16.10 montre
comment la fonction de gestion des mises à jour surveille et peut installer les mises à jour
nécessaires.
258 CHAPITRE 16 Centre de sécurité Azure et mises à jour

Log
Analycs
2. Collecte et analyse les données
de l’agent sur la machine virtuelle
pour déterminer l’état de la mise
à jour

Agent Automasa-
Geson des mises à jour on Azure
VM OMS 1. Agent installé sur 3. Procédures
la machine virtuelle opéraonnelles
pour rapporter des exécutées selon un
données sur des calendrier défini
mises à jour installées pour appliquer les
mises à jour requises

Figure 16.10 La fonction de gestion des mises à jour installe un agent de machine virtuelle qui collecte
des informations sur les mises à jour installées sur chaque machine virtuelle. Ces données sont analysées
par Log Analytics qui transmet les résultats à la plateforme Azure. La liste des mises à jour nécessaires peut
alors être intégrée aux runbooks Azure Automation pour leur installation automatique.

Il ne faut que quelques minutes à la machine virtuelle pour se préparer et vous infor-
mer de l'état de ses mises à jour, alors configurons vos machines virtuelles et voyons ce qui
se passe en arrière-plan.

Essayer maintenant
Pour intégrer la gestion des mises à jour à votre machine virtuelle, configurez-la en suivant
ces étapes.

1 Ouvrez le portail Azure et cliquez sur Groupes de ressources dans le menu de


gauche. Cliquez sur votre groupe de ressources, comme azuremolchapter16,
puis sur votre machine virtuelle, comme azuremol.
2 Sous Opérations, cliquez sur Gestion des mises à jour.
3 Laissez telles quelles les valeurs par défaut des champs Emplacement et celles
qui servent à créer un espace de travail Log Analytics et un compte Azure Auto-
mation. Nous reviendrons plus en détail sur ces éléments plus loin dans cette
section. Pour activer la gestion des mises à jour pour la machine virtuelle en
question, cliquez sur Activer.
4 Vous revenez à la fenêtre Vue d'ensemble de la gestion des mises à jour, mais il
faut que quelques minutes pour configurer la machine virtuelle et être informé
sur son état. Continuez à lire pendant que le processus poursuit son cours.
Voyons plus en détail ce qui fait fonctionner cet outil de gestion des mises à jour. Un nou-
veau module de gestion des mises à jour a été automatiquement installé lors de la configu-
ration de la machine virtuelle. Il s'agit de Operations Management Suite, intégré à Azure
Automation.

16.3.1 Operations Management Suite


Si vous avez déjà travaillé avec n'importe laquelle des technologies Microsoft sur place,
vous êtes sûrement déjà tombé sur la suite System Center. System Center System Center
propose plusieurs outils comme Configuration Manager, Operations Manager, Orchestra-
Gestion des mises à jour d’Azure 259

tor et Data Protection Manager. Il y a en quelques autres, mais ces outils vous permettent
de faire ce qui suit :
 Définir les configurations et l'état voulu
 Installer les applications et les mises à jour
 Générer un rapport sur l'état et la sécurité du système
 Automatiser le déploiement de services et d'applications d'envergure
 Sauvegarder et répliquer des données
Compte tenu du passage des entreprises à l'infonuagique ces dernières années, il a fallu
mettre à jour les composants System Center plus traditionnels pour les rendre fonction-
nels dans un environnement hybride. Operations Management Suite (OMS) propose une
solution conçue au départ pour le nuage, mais dotées de certaines des fonctionnalités qui
la rend compatible avec les systèmes sur place. Nous avons déjà vu deux des composants
OMS dans les chapitres précédents, même si vous ne vous en êtes pas rendu compte :
 Le service de sauvegarde Azure offre un moyen de sauvegarder des machines vir-
tuelles ou des fichiers individuels, de définir des stratégies de conservation et
de restaurer des données.
 La récupération de sites Azure vous permet de répliquer des machines virtuelles
dans différentes régions géographiques en cas de catastrophe naturelle ou de
panne prolongée.
La sauvegarde Azure et la récupération de sites vous ont aidé à protéger vos données au
chapitre 13. À présent, vous allez utiliser deux autres composants OMS avec l'outil de ges-
tion des mises à jour :
 Log Analytics collecte des informations provenant de sources ou d'agents variés
et vous sert à définir des stratégies et des requêtes pour vous tenir au courant
des conditions qui pourraient survenir. Ces requêtes et alertes vous aident à
suivre l'état des mises à jour d'une machine virtuelle ou vous avisent d'un pro-
blème de configuration ou de sécurité.
 Azure Automation vous permet de créer des runbooks capables d'exécuter des com-
mandes ou des scripts entiers. Ces runbooks peuvent s'appliquer à des déploie-
ments volumineux et complexes et peuvent appeler plusieurs autres runbooks.
Nous verrons Azure Automation plus en détail au chapitre 18.
 L'intégration de ces composants au seul et même système d'exploitation est
montrée à la figure 16.11.
Log Analytics et Azure Automation sont de puissants outils tant et si bien que des cha-
pitres de livre entiers peuvent leur être consacrés à eux seuls. Avec un si faible nombre de
machines virtuelles à gérer, on peut facilement omettre l'utilité nécessaire d'un référentiel
centralisé de journaux destiné aux requêtes et aux alertes ou d'un moyen d'automatiser
les configurations et les déploiements sur toutes les machines virtuelles. Si vous n'avez
encore fait la liste des composants Azure qui demandent un suivi de votre part après avoir
fini de lire ce livre, commencez tout de suite à en dresser une et ajoutez-y ces deux compo-
sants.
Ce qu'il faut surtout comprendre, c'est que dans Azure, il y a plusieurs services et com-
posants capables d'interagir entre eux et de se compléter. C'est un peu comme les
machines virtuelles Azure et les réseaux virtuels Azure qui sont deux services séparés, mais
à la fois complémentaires, voire interdépendants. Le service de sauvegarde Azure et
l'extension de diagnostics Azure, bien qu'excellents séparément, sont réellement à leur
meilleur quand Log Analytics est utilisé pour surveiller leur état et réunir tous les événe-
ments et les avertissements générés. Vous avez sûrement dû commencer à déterminer cer-
260 CHAPITRE 16 Centre de sécurité Azure et mises à jour

Log Automasa-
Analycs on Azure
Rassemble et analyse les
journaux de différentes Exécute automaquement les
sources pour fournir des procédures opéraonnelles;
requêtes et des alertes plusieurs cibles de l’hôte

Operaons Management
Suite (OMS)

Sauvegarde des données Réplique les données vers des


ou des machines virtuelles régions définies en foncon des
enères en foncon des stratégies de planificaon et de
stratégies de planificaon rétenon
et de rétenon
Service de Azure Site
sauvegarde
Azure Recovery

Figure 16.11 Operations Management Suite (OMS) englobe plusieurs services


Azure parfaitement intégrés les uns aux autres qui offrent des fonctions de gestion
et de configuration dans tout l'environnement de vos applications. Les services qui
font appel à OMS ne se limitent pas aux machines virtuelles ni aux ressources Azure.
Ces services sont compatibles avec ce qu'offrent les autres fournisseurs de services
infonuagiques ou avec des systèmes sur place adéquatement configurés.

tains de ces composants connexes et à voir comment se complètent les services Azure.
Maintenant que nous en sommes aux deniers chapitres et aux options de sécurité et de
surveillance, vous devez vous assurer de la bonne santé et de la stabilité des applications
que vous exécutez sur Azure, c'est votre objectif.

Ce petit détail qu'on appelle « identité »


Puisqu'on parle de services complémentaires, un mot sur Azure Active Directory (AAD), un
gros (vraiment très gros) aspect d'Azure qu'on a seulement effleuré. L'identité est cœur
de tout dans Azure, et AAD propose certaines des fonctions de sécurité que nous avons
vues au chapitre 6 avec le modèle de déploiement Azure Resource Manager. La possibi-
lité d'utiliser les contrôles RBAC pour limiter les actions que peuvent exécuter une res-
source en fonction des utilisateurs et des groupes est rattachée à un outil central de
gestion des identités. Même la possibilité de se connecter au portail Azure ou à l'interface
de ligne de commande Azure dépend d'AAD.
Ce livre ne traite pas d'AAD, parce que ses fonctionnalités sont bien plus vastes et diffé-
rentes que ce qu'offrent les services Azure IaaS et PaaS comme les machines virtuelles,
les groupes et les applications Web. Même si, dans certains cas, un sujet peut intéresser
plus d'un public, pour ce qui est de l'apprentissage des fonctionnalités d'AAD, les objec-
tifs de la plupart des développeurs diffèrent de ceux d'un gestionnaire d'applications ou
d'un pro des TI qui déploie une infrastructure.
Gestion des mises à jour d’Azure 261

Le type de compte Azure peut aussi limiter ce que vous pouvez faire avec AAD. Quand
vous ouvrez un compte d'essai gratuit Azure, le système crée pour vous une instance AAD
par défaut. Ce compte est le compte principal dans ce répertoire et vous jouissez de tous
les droits d'administrateur. Si vous vous connectez à Azure en utilisant le compte de votre
entreprise ou de votre établissement d'enseignement, il y a fort à parier que vous n'aurez
aucun droit d'administration ou presque. Donc, même si nous tombions d'accord sur deux
ou trois sujets à aborder, vous n'arriveriez sûrement à faire aucun des exercices directe-
ment. Et nous ne vous recommandons pas d'aller fouiller un peu partout dans un environ-
nement AAD réel pour chercher à en découvrir les rouages.
ADD est un autre de ces services essentiels dans Azure qui lie de nombreux autres ser-
vices et composants ensemble. L'infonuagique ne facilite pas les choses par magie pas
plus qu'elle ne décloisonne les façons de faire par miracle. Il vous faut quand même col-
laborer avec différentes équipes et différents intervenants et il vous faut les compétences
pour y arriver. Vous avez, à la lecture de tous ces chapitres, appris les compétences de
base que demandent ces différents services Azure, enfin nous l'espérons. Ces compé-
tences vous aideront à créer des applications redondantes de grande envergure et à com-
prendre avec plus de justesse et d'acuité ce à quoi font face les autres équipes.

Pour les besoins de la gestion des mises à jour sur votre machine virtuelle, il n'est pas
nécessaire d'interagir directement avec OMS ni avec Log Analytics. Sachez qu'il y a actuel-
lement un tableau de bord OMS distinct auquel vous pouvez accéder depuis le portail
Azur pour avoir plus d'informations. Le tableau de bord OMS contient peu d'informa-
tions, parce que vous n'avez qu'une seule machine virtuelle et qu'un seul compte rendu,
comme le montre la figure 16.12. Par contre, plus vous augmentez le nombre de
machines virtuelles à surveiller, plus le tableau de bord est utile. Pour l'instant, vous pou-
vez utiliser le portail Azure ordinaire pour mettre à jour vos machines virtuelles.

Figure 16.12 Le tableau de bord OMS pour la gestion des mises à jour vous informe de l'état des machines
virtuelles configurées. À mesure que vous ajoutez des machines virtuelles au service, vous pouvez rapidement
déterminer les machines qui ont besoin de correctifs de même que l'importance des correctifs manquants du point
de vue de la sécurité et la conformité. Les graphiques circulaires montrent le nombre d'ordinateurs Windows et
Linux auxquels il faut des mises à jour, puis le nombre de mises à jour nécessaires par machine virtuelle.

Maintenant que vous en savez un peu plus sur OMS et sur le fonctionnement en arrière-
plan de la gestion des mises à jour, revenons en arrière pour voir l'information que vous
fournit votre machine virtuelle et comment appliquer certaines mises à jour.
262 CHAPITRE 16 Centre de sécurité Azure et mises à jour

16.3.2 Examen et application des mises à jour


L'agent de machine virtuelle peut prendre un certain temps pour effectuer la première
analyse et vous informer de l'état des mises à jour appliquées. La liste des composants ins-
tallés doit aussi être comparée avec la liste des mises à jour disponibles pour un système
d'exploitation donné et ses différentes versions. Si votre machine virtuelle n'a toujours pas
terminé et que vous n'êtes toujours pas informé de son état, continuez à lire, puis revéri-
fiez dans quelques minutes. La vue d'ensemble, une fois générée, ressemble à celle de la
figure 16.13.

Figure 16.13 L'agent de machine virtuelle analyse la conformité des mises à jour disponible et en
fournit ensuite une liste. Selon le système d'exploitation et la version, l'outil de gestion des mises à jour
peut, en faisant appel à Log Analytics, classer les mises à jour en fonction de leur importance ou fournir
des liens vers la page des correctifs pertinents.

Une liste des mises à jour nécessaires, c'est bien, mais comment les installer? C'est juste-
ment là toute l'utilité d'Azure Automation! L'activation de l'outil de gestion des mises à
jour a créé un certains nombre de runbooks Azure Automation qui gèrent automatique-
ment l'application des mises à jour nécessaires.
Gestion des mises à jour d’Azure 263

Essayer maintenant
Pour appliquer les mises à jour nécessaires à votre machine virtuelle, suivez les étapes
ci-dessous.
Si la chance (ou la malchance) vous sourit, votre machine virtuelle vous dira peut-être qu'il
n'y a aucune mise à jour à installer. Les images de machine virtuelle sont fréquemment
mises à jour dans Azure, donc si vous déployez une machine virtuelle peu de temps après
la création de l'image, toutes les mises à jour nécessaires seront déjà installées. Si c'est
le cas, lisez les étapes ci-dessous pour comprendre ce qu'il faut faire quand vos
machines virtuelles doivent être mises à jour.

1 Dans la section Gestion des mises à jour de votre machine virtuelle, cliquez sur
Planifier le déploiement des mises à jour.
2 Entrez un nom à donner au déploiement des mises à jour ,comme azuremo-
lupdates, puis vérifiez les classifications de mises à jour. Vous pouvez choisir les
ensembles de mises à jour à appliquer. Pour l'instant, conservez toutes les
valeurs par défaut.
3 L'option Mises à jour à exclure vous permet d'indiquer les mises à jour à ne pas
installer. Si vous savez qu'il faut à votre application une version de progiciel et
de bibliothèque bien précise, vous pouvez éviter l'installation d'un progiciel à
jour mais potentiellement nuisible.
4 Cliquez sur Réglage de la planification, puis choisissez, en cliquant dans le calen-
drier, la date et l'heure auxquelles les mises à jour doivent être appliquées.
L'heure de début doit précéder l'heure actuelle d'au moins cinq minutes pour
donner à la plateforme Azure le temps de traiter et de planifier votre runbook
dans Azure Automation. Lorsque vous êtes prêt, cliquez sur OK.
5 Le délai de maintenance (minutes) indique le temps alloué à l'installation des
mises à jour avant le retour au fonctionnement normal (et nécessaire) de la
machine virtuelle. Ce délai évite les mises à jour interminables qui peuvent
rendre une machine virtuelle indisponible pendant des heures à la fois. Vous
pouvez allonger ou écrouter ce délai selon les accords sur les niveaux de service
auxquels sont assujetties les applications exécutées sur les machines virtuelles
en question ou le nombre et la taille des mises à jour nécessaires. Laissez la
valeur par défaut du délai de maintenance telle quelle, puis cliquez sur Créer.
6 Revenez à la fenêtre Gestion des mises à jour, puis cliquez sur Planifier le
déploiement des mises à jour. Les mises à jour sont affichées comme prévu et
s'installeront à la date et à l'heure que vous avez choisies, comme le montre la
figure 16.14.

Figure 16.14 Vous voyez ici la liste des tâches de déploiement planifiées. S'il le faut, vous pouvez supprimer
une tâche donnée, autrement les mises à jour s'appliquent automatiquement à la date et à l'heure indiquées.
264 CHAPITRE 16 Centre de sécurité Azure et mises à jour

7 Au haut de la fenêtre Gestion des mises à jour, cliquez sur Gérer plusieurs ordi-
nateurs. Vous verrez apparaître le compte Azure Automation automatiquement
créé à l'activation de gestion des mises à jour pour la machine virtuelle en ques-
tion. Pour l'instant, ne portez pas trop attention à ce que font les runbooks.
Vous n'avez rien à personnaliser et nous reviendrons à Azure Automation au
chapitre 18.
Notez que vous pouvez cliquez sur Ajouter une machine virtuelle Azure ou
Ajouter une machine virtuelle autre, comme le montre la figure 16.15. Cette
option le montre bien, OMS ramène à une seule approche la gestion des mises
à jour destinées à l'ensemble de l'environnement de vos applications, pas seule-
ment celles des machines virtuelles Azure.

Figure 16.15 Le compte Azure Automation vous permet de gérer plusieurs ordinateurs et de voir l'état des mises
à jour ou des les appliquer. Ce compte centralise la surveillance et le contrôle tant des machines virtuelles Azure
que des ordinateurs autres. OMS peut, en arrière-plan, s'intégrer aux outils d'un autre fournisseur pour permettre
l'installation d'agents sur des ordinateurs dans un environnement hybride. Cette intégration permet la gestion de
vos mises à jour dans un seul tableau de bord et une seule plateforme.

8 Sous Automatisation des processus, cliquez sur Tâches. Quand le déploiement


des mises à jour s'amorce, l'état est indiqué comme le montre la figure 16.16.
Vous pouvez surveiller l'état d'une tâche et voir les résultats au fur et à mesure.

Figure 16.16 Vous pouvez surveiller l'état des tâches d'Azure Automation dans le portail. Pour mieux examiner
ou corriger une tâche, il suffit de cliquer sur la tâche en question pour voir les résultats et les journaux générés.

9 À la fin du déploiement des mises à jour, revenez à votre groupe de ressources,


cliquez sur votre machine virtuelle, puis sur Gestion des mises à jour. Il faut
peut-être attendre quelques minutes avant que l'agent se mette à jour et
informe Log Analytics de l'application réussie des mises à jour. Vous verrez
ensuite, dans le tableau de bord, que la machine virtuelle a été mise à jour et
qu'aucune autre mise à jour n'est nécessaire.
Laboratoire : Activation de l'accès juste à temps pour une machine virtuelle Windows 265

Voilà donc un tour d'horizon rapide du Centre de sécurité et de ses composants, comme
l'accès juste à temps aux machines virtuelles et la gestion des mises à jour. Commencez à
penser au-delà du simple déploiement et de la simple exécution d'une machine virtuelle
ou d'une application Web, et planifiez plutôt la gestion à plus grande échelle des applica-
tions qui vient avec. C'est votre objectif. L'infonuagique ne change rien à la nécessité des
politiques de sécurité : il faut sans doute sécuriser encore plus les différentes ressources.
Laissez-vous guider par les solutions Azure comme le Centre de sécurité qui vous
indiquent la marche à suivre et utilisez les outils intégrés comme la gestion des mises à
jour et Azure Automation pour tout sécuriser en tout temps.

16.4 Laboratoire : Activation de l'accès juste à temps pour


une machine virtuelle Windows
Dans ce chapitre, nous avons vu quelques composants qui ont peut-être pris un certain
temps à s'activer et à nous informer de leur état prévu. Ce laboratoire, facultatif, sert à
montrer que ces fonctions peuvent s'utiliser, quel que soit le système d'exploitation. Si
vous n'avez pas le temps ou sentez que vous savez comment appliquer ces fonctions à une
machine virtuelle Windows, sautez ce laboratoire. Sinon, essayez de faire ce qui suit pour
mieux maîtriser le Centre de sécurité et la gestion des mises à jour. C'est en forgeant qu'on
devient forgeron, non?
1 Créez une machine virtuelle Windows Server de votre choix dans le même
groupe de ressources que celui que vous avez utilisé dans les exercices précé-
dents, comme azuremolchapter16.
2 Activez l'accès juste à temps sur la machine virtuelle. Affichez les règles NSG,
puis vérifiez, au moyen de votre client de connexion de bureau à distance, si les
connexions RDP sont bloquées.
3 Demandez un accès juste à temps, réexaminez les règles NSG et confirmez que
vous pouvez maintenant vous connecter à votre machine virtuelle par RDP.
4 Activez la gestion des mises à jour sur votre machine virtuelle Windows. Cette
fois-ci, vous devriez être capable d'utiliser l'espace de travail OMS existant et les
comptes d'Azure Automation. Attendez que l'agent OMS vous informe de l'état
des mises à jour nécessaire, puis planifiez les mises à jour à appliquer au moyen
d'Azure Automation.
Partie 4

Des fonctionnalités géniales

M aintenant, des fonctionnalités vraiment géniales! Dans ces derniers cha-


pitres, nous allons découvrir quelques-unes des technologies à venir que vous pou-
vez utiliser dans Azure, comme l’intelligence artificielle et l’apprentissage
automatique, les conteneurs et Kubernetes ainsi que l’Internet des objets. Ces ser-
vices ne sont peut-être pas des domaines que vous ou votre entreprise utilisez en ce
moment, mais avec les tendances informatiques actuelles, ils le seront probablement
bientôt. Pour moi, ce sont quelques-unes des technologies les plus intéressantes avec
lesquelles travailler; bien que nous avançons assez rapidement pour couvrir ces
sujets durant votre dîner, c’est un bon moyen de conclure et de vous montrer ce que
vous pouvez créer dans Azure.
Apprentissage automatique et
intelligence artificielle

Heureusement, nous ne retrouverons pas dans un monde où des films comme Termina-
tor et La Matrice deviennent réalité. Dans ces films, l’avènement de l’intelligence artifi-
cielle (IA) cause presque la chute de l’humanité, tandis que les machines se battent
pour prendre le contrôle de leur environnement. Une cause de préoccupation dans
l’informatique d’aujourd’hui est comment le développement de l’intelligence artifi-
cielle est principalement effectué par de grandes entreprises privées, avec peu ou pas
de réglementation et de surveillance centrale. Cela ne veut pas du tout dire que l’intel-
ligence artificielle est une mauvaise chose! Les assistants numériques sur les téléphones
intelligents peuvent vous aider avec de nombreuses tâches quotidiennes, et l’apprentis-
sage automatique dans les applications de navigation et les commandes de chauffage
résidentiel permet à la conduite quotidienne ou à la température de la pièce de l’utili-
sateur de s’ajuster automatiquement en fonction de la température extérieure, du
moment de la journée ou du fait qu’on soit en été ou en hiver.
Au moment où vous entamez cette section finale du livre, vous découvrirez les ser-
vices Azure pour l’apprentissage automatique et l’intelligence artificielle. Dans un seul
chapitre. Pendant votre dîner. Soyons réalistes : vous ne deviendrez pas un expert de
l’apprentissage automatique ni de l’intelligence artificielle au cours des 45 prochaines
minutes! Si vous mangez votre sandwich rapidement, vous pourrez en apprendre suffi-
samment sur les nombreux services offerts par Azure pour comprendre comment inté-
grer certains de ces services d’apprentissage automatique et d’intelligence artificielle à
vos applications. Pour de nombreux services d’apprentissage automatique et d’intelli-
gence artificielle Azure, on s’attend à ce que vous ayez au moins une certaine expé-
rience en matière d’algorithmes de données, de langages de programmation, de
traitement par lots ou de compréhension du langage, alors ne vous attendez pas à deve-
nir un expert dans la prochaine heure!
Dans ce chapitre, nous ferons une visite éclair de certains des services cognitifs
Azure offrant des fonctions d’apprentissage automatique et d’intelligence artificielle.
Vous apprendrez comment utiliser ces services pour effectuer un apprentissage auto-
matique de base sur des modèles de données, puis vous serez en mesure d’utiliser une
269
270 CHAPITRE 17 Apprentissage automatique et intelligence artificielle

petite partie du service Azure Web Apps et de Microsoft Bot Framework pour appliquer
certains des services d’intelligence artificielle pouvant exécuter un bot de magasin de
pizza pour que les clients commandent une pizza.

17.1 Présentation et relations de l’intelligence artificielle et


de l’apprentissage automatique
Tenez-vous bien, car nous sommes sur le point de passer de 0 à 966 km/h en quelques
pages seulement! L’intelligence artificielle et l’apprentissage automatique se chevauchent
souvent lorsque vous créez des applications dans Azure. Explorons ce en quoi chacune
consiste, puis voyons comment elles travaillent ensemble.

17.1.1 Intelligence artificielle


L’intelligence artificielle permet aux ordinateurs d’effectuer des tâches avec un certain
niveau de souplesse et de conscience, et d’ajuster leurs décisions en fonction des facteurs
externes ou sans avoir besoin d’interaction humaine. L’objectif n’est généralement pas de
construire un système complètement autonome pouvant évoluer et développer des pen-
sées pour lui-même, mais plutôt d’utiliser un ensemble de modèles de données et d’algo-
rithmes pour aider à guider le processus décisionnel.
L’intelligence artificielle courante sur les ordinateurs personnels et les téléphones
intelligents comprend Siri, Cortana et Google Assistant. Comme le montre la figure 17.1,
ces ressources d’intelligence artificielle vous permettent de communiquer, souvent au
moyen de commandes vocales, pour demander votre chemin, mettre en place des rap-
pels, effectuer des recherches sur le Web et plus encore.
Ce genre d’assistants numériques n’impliquent généralement pas une grande quan-
tité de ce que vous pouvez considérer comme des renseignements. Ils écoutent les entrées
que vous fournissez et y répondent. Cependant, ces renseignements peuvent varier et ne

Commandes vocales
Définir un Commandes de texte
Vérifier
rappel
le temps Créer une Envoyer un
Appeler note courriel
Assistants numériques pour
Bob Déclencher
l’intelligence arficielle
le minuteur
Google
Assistant Cortana

Siri

Applicaons intégrées
Rendez-
vous au Noficaons
calendrier. par courriel
Trafic +
trajet

Figure 17.1 Les assistants numériques tels que Cortana, Siri et Google Assistant constituent une
utilisation courante de l’intelligence artificielle dans la vie de tous les jours. Vous pouvez utiliser des
commandes vocales ou textuelles pour interagir avec eux, et ils peuvent surveiller votre calendrier
quotidien et les conditions de transport pour vous avertir des problèmes de trafic.
Présentation et relations de l’intelligence artificielle et de l’apprentissage automatique 271

sont pas toujours des commandes précises. Songez à la façon dont un assistant numérique
vous permet de configurer un rappel. Vous pouvez utiliser l’une des phrases suivantes :
 « Rappelez-moi à 17 heures d’acheter du lait. »
 « Rappelez-moi d’acheter du lait sur le chemin du retour. »
 « Je dois acheter du lait quand je serai au magasin. »
Si vous avez développé une application traditionnelle, vous devez écrire du code pouvant
gérer toutes les variantes possibles de comment un utilisateur peut fournir des instruc-
tions. Vous pouvez créer des expressions courantes pour aider à capturer certaines des
variantes, mais que se passe-t-il si l’utilisateur arrive avec une phrase que vous n’aviez pas
programmée? Ou s’ils interagissent par texte et ont une coquille dans leur demande que
vous n’aviez pas anticipée? Ces types d’interactions conviennent parfaitement à l’intelli-
gence artificielle. Comme le montre la figure 17.2, l’application est programmée pour
plusieurs phrases courantes et est ensuite en mesure de faire une supposition éclairée
basée sur ce qu’elle « pense » que l’utilisateur demande.
L’ulisateur ne veut
probablement pas être
réveillé à 5 heures du
man pour aller acheter
« Rappelez-moi à du lait.
Rappel fixé à 17
17 heures d’acheter heures pour aller
du lait » Assistants numériques pour
acheter du lait
l’intelligence arficielle L’ulisateur quie
l’édifice et entre dans sa
« Rappelez-moi d’acheter Google voiture pour commencer Surveiller et détecter
du lait sur le chemin du Assistant Cortana trajet du domicile le trajet vers la maison
retour » au bureau.
Siri
« Je dois acheter du Uliser l’emplacement
lait quand je serai au GPS pour repérer
magasin » L’emplacement GPS de l’épicerie
l’ulisateur et la recherche
indiquent l’épicerie.
Figure 17.2 L’intelligence artificielle peut prendre les renseignements de l’utilisateur et prendre les décisions
qui conviennent le mieux à l’action prévue. L’intelligence artificielle n’est pas préprogrammée avec toutes ces
réponses possibles et les arbres de décision. Elle utilise plutôt des modèles de données et des algorithmes pour
appliquer le contexte aux renseignements de l’utilisateur et interpréter la signification et résultat approprié.

Il ne s’agit pas de vraie intelligence (pas encore), même dans les formes complexes
d’intelligence artificielle; c’est une supposition éclairée basée sur un modèle de données
avec lequel l’intelligence artificielle a été formée. Ce modèle de données peut inclure de
nombreuses variantes et phrases différentes et peut être en mesure d’apprendre de nou-
velles significations au fil du temps. Comment l’apprentissage se fait-il, et d’où ces
modèles de données viennent-ils? C’est là où l’apprentissage automatique devient impor-
tant.

17.1.2 Apprentissage automatique


Un mot très à la mode au cours des dernières années dans le domaine de l’informatique a
été les big data (ou mégadonneés). Le concept est que les systèmes informatiques, en par-
ticulier dans le nuage, sont une excellente ressource pour traiter de grandes quantités de
données. De très grandes quantités de données. Ces tâches de traitement peuvent s’exécu-
ter pendant quelques minutes ou quelques heures selon la taille des données et les calculs
requis, et vous permettent de préparer et d’analyser de grands volumes de données pour
272 CHAPITRE 17 Apprentissage automatique et intelligence artificielle

Données Les applicaons


Algorithmes
Données prétraitées Modèle de ulisent un
ML appliqués
massives et préparées/ données modèle de
aux données
neoyées données
Figure 17.3 De grandes quantités de données brutes sont traitées et préparées à être utilisées. Différentes
techniques de préparation et de nettoyage des données peuvent être appliquées, selon les intrants bruts. Les
algorithmes d’apprentissage automatique sont ensuite appliqués aux données préparées pour créer un modèle
de données approprié reflétant la meilleure corrélation entre tous les points de données. Différents modèles de
données peuvent être produits et affinés au fil du temps. Les applications peuvent ensuite utiliser les modèles
de données sur leurs propres entrées de données pour aider à orienter leur prise de décision et à comprendre les
modèles.
déterminer des schémas et des corrélations précis. Ces apprentissages forment des
modèles de données que les autres applications ou l’intelligence artificielle peuvent utili-
ser pour aider à prendre des décisions. Comme le montre la figure 17.3, l’apprentissage
automatique comporte quelques étapes différentes et inclut à la fois des données
entrantes et sortantes.
Voici comment fonctionne la forme la plus simple d’apprentissage automatique :
1 Pour commencer le processus, de grandes quantités de données brutes sont
fournies comme entrée.
2 Ces données sont traitées et préparées dans un format utilisable pour se
concentrer sur les points de données précis requis pour l’analyse.
3 Les algorithmes d’apprentissage automatique sont appliqués aux données. C’est
là où la vraie exécution de calculs en masse intervient. Les algorithmes sont
conçus pour détecter et calculer les similitudes ou les différences entre le grand
nombre de points de données.
4 D’après l’analyse des algorithmes, un modèle de données est produit pour défi-
nir des modèles au sein des données. Ces modèles de données peuvent être
améliorés au fil du temps si des parties du modèle se révèlent incorrectes ou
incomplètes lorsque des données réelles supplémentaires sont appliquées.
5 Les applications utilisent les modèles de données pour traiter leurs propres
jeux de données. Ces jeux de données sont généralement beaucoup plus petits
que les données brutes fournies aux algorithmes d’apprentissage automatique.
Si le modèle de données est valide, alors même avec une petite entrée de don-
nées de l’application, il est possible de déterminer le résultat correct ou la
bonne corrélation.
L’apprentissage automatique implique souvent des algorithmes complexes qui sont
conçus pour traiter tous les points de données fournis. Hadoop et Apache Spark sont
deux piles d’applications courantes utilisées pour traiter les big data. Azure HDInsight est
un service géré qui vous permet d’analyser les grands jeux de données traités par ces piles
d’applications. Pour approfondir un peu les analyses et les algorithmes, le langage de pro-
grammation R est courant auprès des scientifiques des données pour aider à développer
les modèles requis. Ne vous souciez pas trop de ce que sont Hadoop ou R. Le point clé est
qu’Azure peut exécuter les outils d’apprentissage automatique courants qui sont large-
ment acceptés au sein de l’industrie.
Présentation et relations de l’intelligence artificielle et de l’apprentissage automatique 273

17.1.3 Unification de l’intelligence artificielle et de l’apprentissage automatique


Une application courante sur un téléphone intelligent est l’application de navigation,
comme l’illustre la figure 17.4. Votre fournisseur, par exemple Google, peut suivre l’itiné-
raire que vous empruntez vers le travail chaque jour, à quelle heure vous quittez générale-
ment la maison, et combien de temps cela vous prend pour vous rendre.

Prévisions
Ulisateur 1 météorologiques
Trajet quodien Météo en Pilote
Trajet quodien temps réel acf 1
Trajet quodien
Pilote
acf 2
Ulisateur 2 Pilote
Trajet quodien acf 3
Service
Trajet quodien Google Maps
Trajet quodien

Ulisateur 3 Alertes rouères


et suggesons
Trajet quodien
Trajet quodien Votre téléphone
intelligent
Trajet quodien

Figure 17.4 Le service Google Maps reçoit chaque jour plusieurs points de données des
utilisateurs qui enregistrent les détails de leur trajet. Ces données peuvent être préparées et
traitées, ainsi que les prévisions météorologiques et la météo en temps réel durant ces trajets. Des
algorithmes d’apprentissage automatique peuvent être appliqués à ces grands jeux de données et
un modèle de données est produit. Comme un plus petit échantillon de pilotes actifs alimentent
ensuite leurs conditions de voyage actuelles ou des données météorologiques dans le service
Google Maps, le modèle de données peut être appliqué pour prédire votre trajet et générer une
alerte de trafic sur votre téléphone intelligent qui suggère un autre chemin vers la maison.

Cet exemple avec Google Maps montre l’intelligence artificielle et l’apprentissage auto-
matique travaillant ensemble. L’intelligence artificielle est appliquée pour savoir quand
générer une notification basée sur les données reçues après le traitement du modèle de
données d’apprentissage automatique. Un autre exemple de l’intelligence artificielle et
de l’apprentissage qui travaillent ensemble est cette idée précédente de configurer un
rappel pour acheter du lait. Si l’intelligence artificielle a été formée avec des modèles de
données d’apprentissage automatique, l’assistant saura que vous achetez probablement
du lait à l’épicerie, alors il ne vous enverra pas de rappel si vous allez à la quincaillerie. Le
modèle de données d’apprentissage automatique peut également aider l’intelligence arti-
ficielle à comprendre qu’il est beaucoup plus probable que vous vouliez qu’on vous rap-
pelle quelque chose à 17 h et non à 5 h, de sorte qu’elle ne vous réveille pas à 5 h pour
acheter du lait. Si votre téléphone intelligent détecte que vous entrez dans votre voiture à
17 h pour quitter le travail, l’apprentissage automatique va générer un modèle de don-
nées prédisant que vous conduisez vers la maison, et que c’est donc un bon moment pour
l’intelligence artificielle de vous rappeler d’acheter du lait.
Ce sont des exemples de base, mais puissants, qui montrent comment l’apprentissage
automatique est utilisé pour améliorer l’intelligence artificielle. Vous formez l’intelligence
artificielle en fournissant un ensemble de points de données qui sont traités par l’appren-
tissage automatique pour améliorer la précision ou la prise de décisions.
274 CHAPITRE 17 Apprentissage automatique et intelligence artificielle

17.1.4 Outils d’apprentissage automatique Azure pour les scientifiques des données
Je veux rapidement couvrir quelques façons dont du travail réel d’exécution de calculs de
masse et d’apprentissage automatique peut être fait. Pour rendre ce chapitre accessible à
tous, les exercices utilisent Microsoft Bot Framework pour l’intelligence artificielle et
l’apprentissage automatique avec le Language Understanding Intelligent Service (LUIS).
Pour que vous mettiez la main à la pâte avec l’apprentissage automatique, nous devons
nous concentrer un peu plus sur le traitement des données et les algorithmes.
Dans Azure, il existe quelques composants intéressants pour vous aider à explorer des
données à grande échelle. Tout d’abord, il y a Azure Machine Learning Studio, un service
basé sur le Web qui vous permet de créer virtuellement des expériences en ajoutant des
jeux de données et des modèles d’analyse. Ces expériences peuvent utiliser des sources de
données comme Hadoop et SQL et la prise en charge supplémentaire de la programma-
tion de Machine Learning Studio grâce à des langages comme R et Python. Vous pouvez
glisser-déposer des sources de données, des techniques de préparation des données et des
algorithmes d’apprentissage automatique. Vous pouvez ajuster ces algorithmes, puis véri-
fier et modifier les modèles de données produits.
L’objectif de Machine Learning Studio est d’offrir de faibles barrières à l’entrée vers
les ressources de calcul à grande échelle disponibles dans Azure. L’un des principaux
avantages de l’exécution du traitement de données par apprentissage automatique dans
Azure est vous pouvez accéder à une grande quantité de puissance de calcul et l’utiliser
uniquement durant le temps nécessaire pour effectuer vos calculs. Dans les environne-
ments traditionnels, ces ressources de calcul resteraient inactives pendant de longues
périodes de temps entre les tâches de traitement des données.
Une autre ressource intéressante qui vous aide à effectuer un apprentissage automa-
tique sérieux et l’exécution de calculs en masse dans Azure est les machines virtuelles
Science des données (DSVM). Ces machines virtuelles sont offertes pour Linux et Win-
dows. Elles sont assorties de nombreuses applications courantes préinstallées, y compris
Azure Machine Learning Studio, Jupyter Notebooks, Anaconda Python et R Server ou SQL
Server; voir la figure 17.5. Il n’est pas nécessaire d’installer tous les outils et dépendances
sur votre ordinateur local – vous pouvez créer des DSVM avec autant de ressources d’unité
centrale et de mémoire qu’il vous faut pour traiter rapidement vos données, puis suppri-
mer la machine virtuelle lorsque votre tâche de traitement est terminée et que vous avez les
modèles de données dont vous avez besoin.

17.2 Azure Cognitive Services


OK, alors qu’en est-il des services d’intelligence artificielle pour rendre vos applications
plus intelligentes? Dans Azure, un ensemble de services connexes constituent la suite
Cognitive Services. Les services couvrent quelques domaines courants de l’intelligence
artificielle qui vous permettent d’intégrer rapidement ces ressources intelligentes à vos
applications. Les éléments centraux des services cognitifs sont les suivants :
 Vision, qui comprend
– L’API Vision par ordinateur pour l’analyse, la capture et l’étiquetage d’images.
– L’API Face pour analyser et détecter les visages dans les images.
– Le filtre de contenu pour vérifier et modérer les photos, les vidéos et les textes.
 Reconnaissance vocale, qui comprend
– L’API Bing Speech pour analyser et convertir la parole en texte et vice versa.
– L’API Translator Speech pour la traduction de langues en temps réel.
Azure Cognitive Services 275

 Language, qui comprend


– Language Understanding Intelligent Service (LUIS) pour aider à comprendre et à
traiter les interactions avec les utilisateurs. Nous allons explorer LUIS plus
dans ce chapitre durant l’exercice pratique.
– L’API de vérification orthographique Bing et l’API Translator Speech pour analyser
et corriger les fautes d’orthographe ou effectuer des traductions.
 Connaissances, qui comprend
– L’API Recommandations pour analyser les modèles et fournir des recomman-
dations aux clients.
– L’API QnA Maker pour consommer un ensemble d’informations ou de res-
sources et être en mesure de fournir des réponses aux questions des clients.
 Recherche, qui comprend
– L’API Recherche personnalisée Bing pour effectuer des recherches sur vos don-
nées personnalisées et au sein des applications.
– L’API Suggestions automatiques Bing pour fournir des suggestions automa-
tiques lorsque les utilisateurs entrent des phrases de recherche et des
demandes.

Figure 17.5 Les machines virtuelles Science des données (DSVM) sont disponibles pour Windows et Linux.
Ces DSVM Windows Server 2016 sont fournies avec plusieurs applications de science des données
préinstallées, telles que R Server, Jupyter Notebooks et Azure Machine Learning Studio. Les DSVM vous
permettent de devenir opérationnel rapidement avec le traitement des big data et la création d’algorithmes
d’apprentissage automatique.
276 CHAPITRE 17 Apprentissage automatique et intelligence artificielle

Comme vous pouvez le voir, de nombreux services Azure combinent des fonctions d’intel-
ligence artificielle et d’apprentissage automatique. Ce chapitre est axé sur le langage, en
particulier LUIS. Ce service est couramment utilisé pour créer un bot intelligent pouvant
aider les clients sur votre site Web. Vous pouvez ensuite créer une intelligence artificielle
pouvant interpréter des phrases et des questions, et fournir la réponse appropriée pour
guider un utilisateur dans un processus de commande ou une demande de soutien.

17.3 Création d’un bot intelligent pour aider avec les commandes de pizzas
Un bot est une application programmée pour répondre aux tâches et aux entrées d’un uti-
lisateur. Si cela ressemble beaucoup à une application normale, c’est en effet à peu près le
cas! La différence est comment l’application de bot détermine la réponse.
Un bot courant de base n’est souvent rien de plus qu’une application fournissant une
certaine forme d’automatisation. Lorsqu’un utilisateur envoie un message, établit une éti-
quette pour un message électronique ou soumet un terme de recherche, le bot effectue
des tâches préprogrammées qui exécutent une action précise. Il ne s’agit pas vraiment
d’intelligence artificielle ni d’apprentissage automatique ici. L’application de bot répond
seulement aux entrées de l’utilisateur.
Avec la bonne infrastructure, il est possible d’étendre un bot et de lui donner un peu
plus de liberté et d’intelligence. Au début de notre présentation de l’intelligence artifi-
cielle, j’ai expliqué comment une application typique doit être préprogrammée avec
toutes les entrées prévues des utilisateurs ainsi que les résultats correspondants possibles.
Mais il n’y a pas de flexible si l’utilisateur entre une phrase différente ou une faute
d’orthographe, par exemple.
Microsoft produit le Bot Framework, qui permet à un bot Azure d’intégrer facilement les
kits de développement logiciel Bot Builder et de se connecter aux Azure Cognitive Services.
Avec une expérience minimale en matière de code, vous pouvez créer des bots intelligents qui
utilisent la puissance d’Azure pour offrir une excellente expérience client. N’essayez juste pas
la conception Skynet à moins de savoir comment Terminator se termine!

17.3.1 Création d’un bot d’application Web Azure


Déployons un bot et intégrons des services d’intelligence artificielle et d’apprentissage
automatique. Le bot s’exécute dans une application Web Azure et utilise Microsoft Bot
Framework pour se connecter à LUIS et permettre au client de commander une pizza. La
figure 17.6 décrit ce qui a été créé dans ces exercices et quels sont les services utilisés.

Abonnement Azure
Plan de service d’applicaon

Compréhension Applicaon Web


et intenon de
la langue Microso Bot Applica-
Applicaon
Connector on
LUIS
Framework Node.js
Figure 17.6 Dans les
exercices à venir, vous allez
Stocke les données de robot créer un bot d’application Web
persistantes et l’état de session qui intègre plusieurs services
d’intelligence artificielle et
Compte de stockage d’apprentissage automatique
Azure pour interagir avec un
Tableau client et l’aider à commander
une pizza.
Création d’un bot intelligent pour aider avec les commandes de pizzas 277

Essayer maintenant
Pour créer un bot d’application Web Azure, procédez comme suit.

1 Ouvrez le portail Azure, et sélectionnez Create a Resource (créer une ressource) dans le
coin supérieur gauche. Recherchez et sélectionnez Web App Bot (bot d’application
Web), puis sélectionnez Create (créer).
2 Entrez le nom de votre bot, par exemple azuremol. Choisissez Create New Resource
Group (créer un nouveau groupe de ressources), et indiquez un nom, par exemple
azuremolchapter17.
3 Sélectionnez la région la plus appropriée pour vous, puis choisissez le niveau de tarifica-
tion F0. Votre bot ne traitera pas beaucoup de message, donc le niveau gratuit (F0) est
parfait.
4 Sélectionnez Bot Template (modèle de bot), puis choisissez le modèle Node.js pour la
compréhension du langage. Cette étape crée une application LUIS que vous pouvez uti-
liser pour effectuer la formation linguistique et l’apprentissage automatique. Choisissez
la région la plus appropriée pour votre application LUIS.
5 Choisissez App Service Plan (plan de service d’applications), puis sélectionnez Create
New (créer nouveau). Indiquez un nom, par exemple azuremol, et encore une fois,
sélectionnez la région la plus appropriée pour vous.
6 Laissez l’option par défaut à Create a Storage Account (créer un compte de stockage);
on l’utilise pour stocker l’état du bot. Cela comprend l’état de la session et du message.
Votre bot de base ne s’en servira pas, mais les bots plus complexes oui.
7 Désactivez App Insights, car votre bot ne s’en servira pas. Comme dans les chapitres pré-
cédents sur les applications Web, pour l’utilisation de la production, vous pouvez exploi-
ter la puissance d’App Insights pour obtenir de la visibilité sur la performance de votre
application en diffusant des données et des analyses directement à partir du code.
8 Laissez l’option cochée à Auto Create App ID and Password (créer automatiquement
l’ID et le mot de passe de l’application), puis acceptez l’entente et choisissez Create
(créer).
Il faut quelques minutes pour créer le bot d’application Web est les composants associés. Beau-
coup de choses se passent en arrière-plan :
 Un plan Azure App Service plan est créé.
 Une application Web est déployée, ainsi qu’un exemple d’application Web Node.js.
 Une application LUIS est créée, et les clés de connexion sont configurées avec votre
application Web.
 Un bot est créé avec le Microsoft Bot Connector, et les clés de connexion sont configu-
rées à partir de votre application Web.
 Un compte et un tableau Azure Storage sont créés pour que votre bot conserve les don-
nées en cours d’exécution et interagisse avec les clients.

17.3.2 Langue et compréhension de l’intention avec LUIS


L’un des domaines d’Azure Cognitive Service que nous avons examinés plus tôt était le
langage. C’est logique, car une certaine forme de langage est souvent utilisée pour intera-
gir avec l’intelligence artificielle. Vous pouvez utiliser LUIS pour traiter un message ou
une phrase de l’utilisateur et déterminer son intention. Cette intention aide alors votre
application à fournir une réponse appropriée. Étendez votre bot avec LUIS.
278 CHAPITRE 17 Apprentissage automatique et intelligence artificielle

Essayer maintenant
Pour créer une application LUIS et utiliser l’apprentissage automatique pour la former,
procédez comme suit.

1 Ouvrez un navigateur Web à l’adresse www.luis.ai. Connectez-vous avec les mêmes


informations d’identification Microsoft que pour votre abonnement Azure.
2 Sélectionnez Go to My Apps (aller à mes applications) et choisissez votre appli-
cation, par exemple azuremol. Le nom de votre application LUIS comporte
probablement des caractères numériques supplémentaires ajoutés à partir du
nom de bot que vous avez indiqué dans le portail Azure.
3 Des intentions préconstruites ont été créées, mais nous vous suggérons de rem-
placer l’application LUIS par un exemple plus axé sur un magasin de pizza.
Tout d’abord, téléchargez le fichier azuremol.json de GitHub sur votre ordina-
teur local à l’adresse http://mng.bz/Wx0Y. Pour vous simplifier la vie, sélec-
tionnez le bouton Raw (brut) dans GitHub, afin de voir uniquement le contenu
du fichier. De retour dans votre application LUIS, choisissez Settings (para-
mètres) en haut à droite, puis Import New Version (importer une nouvelle ver-
sion). Accédez au fichier azuremol.json que vous avez téléchargé, entrez le nom
de version 1.0, puis sélectionnez Done (terminé).
4 Retournez à Build (créer) dans le menu supérieur pour voir les intentions
importées à partir de l’exemple d’application. Choisissez une ou deux inten-
tions, comme greetings ou orderFood, et jetez un coup d’œil à des exemples
de phrases qu’un client pourrait utiliser pour communiquer avec le bot.
5 Avant de pouvoir voir l’application en action, vous devez la former. Sélection-
nez Train (formation), puis attendez quelques secondes pour que le processus
se termine. La figure 17.7 montre les processus d’apprentissage automatique au
travail pour former votre application LUIS.

Intenons

Salutaons

afficherMenu

commander
Nourriture Modèle de
Former données Bot d’applicaon
d’applicaon Compréhension Web
Entés LUIS linguisque et
traitement d’intenon
« Un pepperoni »

« Une pizza végétari-


enne, s’il vous plaît »

Figure 17.7 Lorsque vous formez l’application LUIS, les intentions et les entités sont traitées pour
créer un modèle de données. Ce modèle de données est ensuite utilisé par votre bot d’application Web
pour traiter la compréhension et l’intention de la langue. Le nombre d’entrées d’intentions et d’entités
pour le traitement est petit, de sorte que le modèle de données n’est pas parfait. Dans le monde réel,
beaucoup plus d’intentions et d’entités seraient fournies, et vous formeriez, testeriez et affineriez le
modèle de données de façon répétée pour créer progressivement de plus grands jeux de données afin
de construire un modèle précis pour traiter la langue et l’intention.
Création d’un bot intelligent pour aider avec les commandes de pizzas 279

Dans une application plus complexe du monde réel, le processus de formation


peut prendre plus de temps, car toutes vos intentions et entités sont traitées par
les algorithmes d’apprentissage automatique afin de créer le modèle de don-
nées requis pour votre application et ainsi répondre de manière appropriée
aux communications des clients.
6 Une fois l’application LUIS formée, sélectionnez Test (tester). Entrez quelques
salutations, comme salut et bonjour. Sous chacun de vos messages se trouve la
meilleure intention, ainsi que la probabilité que le message ou l’énoncé que
vous avez entré corresponde à l’intention. Ces salutations de base doivent bien
correspondre à l’intention des salutations.
7 Essayez d’entrer une salutation différente, comme (bon) après-midi ou (bonne) soi-
rée. La salutation en un mot basée sur le moment de la journée peut retourner
la meilleure intention comme étant incorrecte, par exemple orderStatus.
Essayez d’autres phrases jusqu’à ce que quelque chose ne corresponde pas à
l’intention prévue, ce qui indique que l’application LUIS ne comprend pas
entièrement ce que vous voulez dire. Sélectionnez l’un de vos messages incor-
rects, par exemple matin, puis choisissez Inspect (inspecter).
8 Dans le menu Inspect (inspecter), choisissez de modifier la meilleure intention
qui est incorrecte. Dans le menu déroulant Assign to Intent (attribuer à l’inten-
tion), choisissez salutation, ou l’intention la plus appropriée pour votre
phrase incorrecte. Vous avez apporté un changement à votre application, alors
choisissez de former l’application LUIS de nouveau. La figure 17,8 montre
comment fournir des entrées supplémentaires pour les algorithmes d’appren-
tissage automatique et ainsi traiter le modèle de données et affiner la compré-
hension et l’intention de la langue.
9 Dans la fenêtre des messages de test, entrez le message incorrect de nouveau,
par exemple matin. Cette fois, l’entrée principale devrait être correctement iden-
tifiée comme étant une salutation.
10 Pour rendre l’application LUIS mise à jour disponible pour votre bot d’applica-
tion Web, sélectionnez l’option Publish (publier) dans le menu du haut.
Conservez toutes les valeurs par défaut, puis sélectionnez Publish to Production
Slot (publier vers l’emplacement de production). Il faut quelques secondes
pour terminer le processus de publication.

Intenons

Salutaons

afficherMenu

commander Figure 17.8 Lorsque vous reclassez


Nourriture Modèle de l’intention des messages et formez
Former données l’application LUIS à nouveau, le
d’applicaon modèle de données est affiné à
Entés LUIS mesure que des entrées de données
supplémentaires sont fournies aux
« Un pepperoni » algorithmes d’apprentissage
automatique. Quand vous entrerez
« Une pizza des salutations similaires à l’avenir,
végétarienne, s’il vous Reclasser
plaît » nous espérons que le modèle de
l’intenon du
données sera amélioré er répondra de
message
façon plus appropriée.
280 CHAPITRE 17 Apprentissage automatique et intelligence artificielle

N’oubliez pas que votre bot s’exécute sur une application Web, donc il a des emplace-
ments de production et intermédiaires comme vous l’avez appris précédemment au
chapitre 3. Dans le monde réel, vous devez publier vers un emplacement intermédiaire,
vérifier que tout fonctionne comme prévu et ensuite publier vers l’emplacement de pro-
duction. Ces mêmes fonctions PaaS qui vous ont permis de tester et déplacer le code Web
entre les cycles de développement et de production profitent également au cycle de vie de
votre bot d’application Web propulsé par LUIS.
L’exemple de base montre que l’apprentissage automatique a été en mesure de considérer
votre entrée de données de (bon) matin comme une salutation et de comprendre qu’une saluta-
tion similaire comme (bonne) soirée est également une salutation. L’apprentissage automatique
fonctionne mieux quand un grand jeu de donnée peut être entré dans le modèle de données,
donc il est important de soigneusement tester et aider à former votre application. L’intelli-
gence artificielle, dans ce cas l’application LUIS, est seulement aussi bonne que la taille et la
qualité des données fournies aux algorithmes d’apprentissage automatique.

17.3.3 Création et exécution d’un bot d’application Web avec LUIS


Vous avez maintenant un bot d’application Web de base dans Azure et une application LUIS
qui gère le traitement de la langue et retourne l’intention du client. Pour intégrer les deux, le
code de votre bot doit être modifié pour utiliser LUIS. Les kits de développement logiciel sont
offerts pour les langages de programmation C# et Node.js. Je trouve que Node.js vous permet
de comprendre plus rapidement et facilement ce qui se passe dans le code, si tout cela est nou-
veau pour vous. Si vous connaissez C#, vous pouvez explorer le kit de développement logiciel
C# après avoir terminé ce chapitre. Pour l’instant, nous utiliserons une application Node.js de
base à partir du référentiel GitHub pour voir votre bot en action avec LUIS.

Essayer maintenant
Pour mettre à jour votre bot d’application Web avec votre bot LUIS formé, procédez comme
suit.

1 Dans le portail Azure, sélectionnez Resource Groups (groupes de ressources) dans


le menu à gauche, puis choisissez votre groupe de ressources, par exemple azure-
molchapter17. Sélectionnez votre bot d’application Web, par exemple azuremol.
2 Sous Bot Management (gestion de bot) à gauche, choisissez Build (créer), puis
sélectionnez Open Online Code Editor (ouvrir l’éditeur de code en ligne).
3 Un éditeur de code en ligne charge l’application de bot Node.js créé à partir
du modèle de compréhension linguistique dans un exercice précédent. Vous
êtes nouveau sur Node.js? Ne vous tracassez pas! Vous n’allez pas faire de vraie
programmation ici, mais plutôt utiliser un exemple de code de dialogue LUIS
du référentiel GitHub.
4 Dans l’explorateur de fichiers qui énumère le contenu de votre bot d’applica-
tion Web, sélectionnez app.js pour ouvrir la partie principale de l’application
qui gère l’intégration de l’application LUIS que vous avez formée plus tôt.
5 Sélectionnez tout le contenu existant du fichier app.js et supprimez-le. Copiez
et collez le contenu du site http://mng.bz/ERJD sur GitHub. Pour vous simpli-
fier la vie, sélectionnez le bouton Raw (brut) dans GitHub, afin de voir unique-
ment le contenu du fichier. Le code s’enregistre automatiquement une fois que
vous le collez dans l’éditeur en ligne du bot d’application Web. Vous pouvez
vérifier l’état de l’enregistrement dans le coin supérieur droit de l’éditeur en
ligne, qui doit indiquer Saved (enregistré).
Création d’un bot intelligent pour aider avec les commandes de pizzas 281

Il n’y a rien à créer ou à déployer : votre application Web exécute automatiquement la ver-
sion sauvegardée de votre bot! Votre application Web comprend des paramètres d’appli-
cation définissant votre ID d’application LUIS et votre clé d’API, de sorte qu’aucune
modification du code n’est requise.
REMARQUE L’éditeur de code en ligne est un excellent moyen d’apporter
des modifications rapides au code, mais pour tout travail réel, je vous suggère
d’utiliser Visual Studio Code, qui a été présenté au chapitre 1. VS Code est un
éditeur léger, idéal pour le développement Node.js. Si vous voulez utiliser C#,
il existe une édition gratuite de Visual Studio Community qui vous permet
d’utiliser Microsoft Bot Framework et de faire un clic droit pour publier dans
les applications Web Azure (avec soin et à des fins de test uniquement).

Jetons un coup d’œil à la figure 17.9 pour voir ce que vous avez déployé. L’application
LUIS est maintenant formée avec les algorithmes d’apprentissage automatique, et votre
modèle de données est prêt pour que l’application Node.js permette aux clients d’intera-
gir et de commander de la pizza.
De retour dans le portail Azure pour votre bot d’application Web, sélectionnez Test in
Web Chat (tester dans le clavardage Web). Cela prend quelques secondes la première fois
que vous vous connectez au bot, mais vous devriez ensuite être en mesure d’interagir, de
voir la liste de pizzas sur le menu et de créer une commande, comme le montre la
figure 17.10. Faites-en l’essai!

Abonnement Azure
Plan de service d’applicaon

Compréhension Applicaon Web


et intenon de la Le client affamé
langue Microso Bot Applica- en ligne veut
Applicaon on
Connector commander une
LUIS Node.js Le client s’entreent
Framework pizza
avec le robot, qui est
traité par LUIS.
Stocke les données
de robot persistantes
et l’état de session

Compte de stockage

Tableau

Figure 17.9 Le client peut maintenant accéder à votre bot en ligne et demander à voir le menu ou
commander une pizza. LUIS fournit la compréhension de la langue, ce qui permet au bot de traiter
les commandes et de les envoyer à Azure Storage pour un traitement supplémentaire.
282 CHAPITRE 17 Apprentissage automatique et intelligence artificielle

Figure 17.10 Une fois que votre bot d’application Web s’exécute, lancez une conversation et essayez de
commander une pizza. Dans la boîte de dialogue de cet exemple, vous pouvez voir le menu, commander une pizza
et vérifier l’état de la commande. L’application est rudimentaire et ne va pas vraiment créer de commandes ou
mettre à jour l’état au-delà de quelle pizza a été commandée, mais l’exercice (espérons-le!) montre à quel point
vous pouvez déployer rapidement un bot dans Azure.

J’espère que ces exercices de base vous ont donné une idée de ce qu’Azure peut offrir
pour l’intelligence artificielle et l’apprentissage automatique. Le bot d’application Web
avec LUIS peut être étendu pour inclure des services cognitifs Azure supplémentaires
comme l’API de vérification orthographique Bing et l’API de traduction. Ces services vous
permettent d’interpréter des mots et des phrases si l’utilisateur les épelle incorrectement,
ou permettent à votre bot d’avoir des conversations dans plusieurs langues. Sinon, vous
pourriez utiliser l’API Face et l’API Recommandations pour détecter quel client effectuait
une commande en vous basant sur la reconnaissance faciale de sa caméra et suggérer
automatiquement une pizza qu’il pourrait aimer.
L’apprentissage automatique faisait partie de l’application LUIS, mais il y a beaucoup
plus de ressources et d’outils d’apprentissage automatique offerts dans Azure. La capacité
de traiter de grands jeux de données et de calculer des modèles de données d’apprentis-
sage automatique avec des ressources de calcul Azure haute performance réduit les
entrées pour vous permettre de créer des applications soutenues par d’importants jeux de
données. Les applications sont plus précises et efficaces, et il n’y a pas de matériel à ache-
ter ou d’outils spéciaux à installer, car les DSVM comprennent tous les composants requis.
Ce ne sont pas toutes les applications qui conviennent bien à l’intelligence artificielle et à
l’apprentissage automatique, mais à mesure que vos clients commencent à s’attendre
davantage à ce que votre entreprise peut offrir, ces services Azure peuvent souvent vous
aider à vous différencier.
Exercice pratique : ajout de canaux pour la communication du bot 283

Traitement de charges de travail par lots


Une autre partie d’Azure qui peut être intéressante quant aux données massives et au
calcul pour l’apprentissage automatique sont les services Azure Batch et HPC. Azure
Batch vous permet d’effectuer des tâches de calcul volumineuses et répétitives sans
devoir gérer des grappes de planificateurs pour le travail. Batch exécute des tâches sur
les machines virtuelles avec une gestion et un planificateur qui lui sont propres pour vous
aider, tout comme les jeux de mise à l’échelle comprennent la mise à l’échelle automa-
tique et l’équilibrage de charge pour les machines virtuelles. Bien que cela ne soit pas
directement lié à l’apprentissage automatique, si vous avez besoin d’autres tâches impor-
tantes de traitement de calculs, les lots sont parfaits.
Il existe également des composants de calculs complexes (HPC) dans Azure pour les
machines virtuelles de grande taille ou l’accès aux machines virtuelles de processeur gra-
phique (GPU). Des outils et des suites précis comme DataSynapse et Microsoft HPC Pack
peuvent également être utilisés pour exécuter des applications demandant une grande
puissance de calcul.
Les domaines comme l’apprentissage automatique, Azure Batch et HPC sont de bons
exemples de comment utiliser les fournisseurs d’infonuagique comme Azure pour exécu-
ter des tâches de calcul volumineuses. Vous payez seulement pour les ressources infor-
matiques que vous utilisez, alors vous n’avez pas besoin d’acheter et de maintenir des
équipements coûteux dont l’utilisation est minime.

17.4 Exercice pratique : ajout de canaux pour la


communication du bot
Dans les exemples précédents, vous avez communiqué avec votre bot au moyen d’une
fenêtre de test dans le portail Azure. Les canaux vous permettent d’étendre votre manière
d’interagir avec votre bot. Vous pouvez permettre à votre bot de communiquer avec Skype
ou Facebook Messenger, ou avec des applications comme Microsoft Teams et Slack. Azure
Bot Service simplifie les étapes nécessaires à l’intégration d’un bot à ces services externes :
1 Dans le portail Azure, sélectionnez votre bot d’application Web, puis choisissez
Channels (canaux). Choisissez un canal que vous aimez, comme Skype.
Les autres canaux vous demandent souvent de créer une connexion de déve-
loppeur, par exemple pour Facebook ou Slack. Skype vous permet de copier et
coller du code HTML pour le faire fonctionner.
2 Fournissez toutes les informations nécessaires, comme l’ID d’application de
bot. Vous pouvez trouver cet ID sous Settings for Bot Management (paramètres
pour la gestion de bot).
3 Au besoin, utilisez l’éditeur de code en ligne pour créer une page HTML de
base, par exemple default.htm, dans le répertoire wwwroot, puis collez
n’importe quel code intégré pour votre canal. Vous pouvez ouvrir votre applica-
tion Web à partir du portail Azure, puis sélectionner son URL pour ouvrir la
page default.htm qui inclut votre code de canal, par exemple http://azure-
mol.azurewebsites.net/default.htm.
Azure Automation

Dans la mesure du possible, vous ne devez pas vous connecter manuellement à un ser-
veur et apporter des modifications. Le logiciel n’a pas besoin d’être installé en cliquant
sur des boutons dans une interface utilisateur graphique, et les mises à jour n’ont pas
besoin d’être apportées aux fichiers de configuration dans un éditeur de texte. Ces
actions manuelles introduisent une possibilité d’erreurs, ce qui peut entraîner de mau-
vaises configurations et des défaillances d’application. Si vous voulez répliquer la confi-
guration d’un serveur, pouvez-vous vous rappeler de toutes les étapes nécessaires pour
que le serveur existant devienne opérationnel? Que se passerait-il si vous deviez recom-
mencer dans six mois?
Dans le chapitre 16, nous avons abordé un moyen de vérifier automatiquement et
d’appliquer les mises à jour aux serveurs. Cette magie s’est opérée grâce à Azure Auto-
mation. Dans ce chapitre, nous examinons comment vous pouvez créer, exécuter et
modifier des procédures opérationnelles, et utiliser la configuration de l’état souhaité
de PowerShell pour installer des applications et configurer des serveurs automatique-
ment.

18.1 Qu’est-ce qu’Azure Automation?


Un compte Azure Automation rassemble de nombreux éléments différents, comme
l’illustre la figure 18.1. Une fonction de base crée et exécute des scripts à la demande
ou selon une planification définie. Vous pouvez créer des scripts dans PowerShell ou
Python, et laisser la plateforme Azure gérer la planification et l’exécution de ces procé-
dures opérationnelles. Vous pouvez partager des informations d’identification et des
objets de connexion, puis les appliquer automatiquement aux configurations souhai-
tées de serveurs, puis en rendre compte. La gestion des mises à jour, que nous avons
examinée au chapitre 16, garde vos serveurs sécurisés et à jour grâce aux correctifs et
mises à jour de l’hôte les plus récents tout au long du cycle de vie de votre environne-
ment d’application.

284
Qu’est-ce qu’Azure Automation? 285

Configuraon de
l’état souhaité
Procédures opéraonnelles • Définit les applicaons, les
• Automaser les tâches configuraons et les fichiers
avec PowerShell ou Python • Applique, signale et
• Ouls de concepon graphique corrige la dérive
• Exécuon planifiée • Prise en charge de Windows
+ Linux

Automasaon
Azure

Geson des mises à jour Ressources partagées


• Informaons d’idenficaon,
• Mises à jour des hôtes cerficats et connexions
Windows/Linux • Importer des modules
• Rapports de conformité supplémentaires
• Mises à jour planifiées • Réuliser les calendriers

Figure 18.1 Azure Automation fournit de nombreuses fonctions connexes. Un ensemble partagé de
ressources, comme des informations d’identification, des certificats, des planifications et des objets
de connexion, peut être utilisé pour exécuter automatiquement des scripts PowerShell ou Python sur
les serveurs cibles. Vous pouvez déterminer l’état souhaité d’un serveur, et Azure Automation installe
et configure le serveur de manière appropriée. Les mises à jour de l’hôte et les correctifs de sécurité
peuvent être appliqués automatiquement. Toutes ces fonctions peuvent être utilisées sur l’ensemble
des serveurs Windows et Linux, dans Azure et sur place ou sur d’autres fournisseurs infonuagiques.
Pour aider à simplifier la gestion de plusieurs procédures opérationnelles ou configura-
tions d’état souhaité dans un compte Automation, vous pouvez partager les ressources
suivantes :
 Les planifications vous permettent de déterminer un ensemble de moments et de
récurrences pouvant être appliqués à chaque procédure opérationnelle ou
tâche de gestion des mises à jour. Si vous souhaitez modifier ultérieurement
une occurrence régulière, vous pouvez changer l’une des planifications parta-
gées au lieu de chaque procédure opérationnelle ou tâche de gestion des mises
à jour individuelle qui l’utilise.
 Les modules étendent la fonctionnalité principale en stockant des modules
PowerShell supplémentaires. Les modules Windows PowerShell et Azure de base
sont déjà disponibles, mais des modules supplémentaires, par exemple pour la ges-
tion Linux, peuvent être ajoutés et utilisés dans les procédures opérationnelles.
 Les informations d’identification pour les différents comptes autorisés à exécuter diffé-
rentes procédures opérationnelles sont stockées comme des actifs, au lieu d’être
définies dans chaque procédure opérationnelle. Cette approche vous permet de
mettre à jour et de réinitialiser les informations d’identification au besoin, et
chaque procédure opérationnelle qui les utilise est automatiquement mise à jour.
Ainsi, les informations d’identification ne sont pas stockées en texte brut dans les
procédures opérationnelles, ce qui accroît la sécurité de ces dernières.
 Les connexions déterminent les propriétés d’authentification pour les principaux de
service AAD. Il s’agit d’un type spécial de compte d’utilisateur qui permet aux pro-
cédures opérationnelles d’accéder à vos ressources Azure. Ces connexions utilisent
généralement des certificats numériques, et non des noms d’utilisateur et des mots
de passe, pour fournir une couche supplémentaire de sécurité.
286 CHAPITRE 18 Azure Automation

 Les certificats sont souvent intégrés aux actifs de connexion pour fournir un moyen
sécurisé de vérifier l’identité d’un principal de service. Comme pour les informa-
tions d’identification de base, vous pouvez régulièrement mettre à jour ces certifi-
cats dans un emplacement central, et chaque procédure opérationnelle qui les
utilise peut accéder automatiquement aux nouveaux certificats. Vous pouvez créer
et stocker vos propres certificats à utiliser avec les procédures opérationnelles ou
avec les définitions de configuration d’état souhaité.
 Les variables fournissent un endroit central où stocker les valeurs d’exécution
comme les noms, les chaînes d’emplacement et les entiers. Lorsque vos procédures
opérationnelles sont exécutées, ces variables sont injectées. Cette approche limite
la quantité de ressources codées en dur à l’intérieur de chaque procédure opéra-
tionnelle.

Travailler plus intelligemment, pas plus fort


Dans le chapitre 16, nous avons abordé la façon dont Operations Management Suite
(OMS) peut être utilisé pour surveiller les serveurs dans Azure, sur place ou sur d’autres
fournisseurs infonuagiques et créer des rapports sur ces derniers. Vous installez et confi-
gurez les agents requis sur les serveurs à distance, puis vous leur fournissez un moyen
de se reconnecter à l’infrastructure OMS.
Azure Automation peut également fonctionner sur l’ensemble des plateformes et de
l’infrastructure. Par exemple, l’agent de procédure opérationnelle hybride peut exécuter
des procédures opérationnelles Automation sur des serveurs à l’extérieur d’Azure. Vous
continuez d’utiliser les actifs Automation partagés qui définissent les informations d’iden-
tification, les connexions et les certificats, mais cette fois, ces actifs peuvent être utilisés
pour définir les composants d’authentification pour les différentes plateformes. Vous pou-
vez également utiliser les configurations d’état souhaité sur des machines virtuelles
autres qu’Azure, que ce soit sur Windows ou Linux.
Dans tous les cas, un composant de passerelle est installé dans l’environnement distant
pour agir comme un proxy pour les commandes Automation lorsqu’elles sont envoyées
aux cibles désignées. Cette approche de proxy de passerelle fournit un point de connexion
unique pour Automation dans les environnements distants et réduit les problèmes de
sécurité, car il n’y a pas d’accès direct aux autres serveurs distants.
Les procédures opérationnelles et les définitions de configuration de l’état souhaité
peuvent devoir être légèrement modifiées pour s’exécuter sur des serveurs physiques sur
place au lieu de sur des machines virtuelles Azure. Comme avec OMS et la gestion des
mises à jour, l’avantage d’Azure Automation est qu’il fournit un panneau de gestion
unique et un ensemble d’outils pour offrir l’automatisation sur l’ensemble de vos
infrastructures et de vos serveurs différents.

18.1.1 Création d’un compte Azure Automation


Lançons-nous et créons un compte Azure Automation et regardons les procédures opéra-
tionnelles par défaut qui sont comprises. Les procédures opérationnelles de démonstra-
tion fournissent un cadre idéal pour créer vos propres procédures opérationnelles, et il y a
également un éditeur graphique que vous pouvez utiliser pour glisser et déposer des blocs
de construction afin de générer des scripts d’automatisation.
Qu’est-ce qu’Azure Automation? 287

Essayer maintenant
Pour créer un compte Azure Automation et des exemples de procédures opérationnelles,
procédez comme suit.

1 Dans le portail Azure, sélectionnez Create a Resource (Créer une ressource)


dans l’angle supérieur gauche. Recherchez et sélectionnez Automation (auto-
matisation), puis sélectionnez Create (créer).
L’option d’automatisation et de contrôle crée également un espace de tra-
vail OMS, comme nous en avons discuté au chapitre 16, et configure Automa-
tion Hybrid Worker pour gérer les ressources à l’extérieur d’Azure. Pour
l’instant, choisissez de créer uniquement la ressource d’automatisation.
2 Entrez un nom comme azuremol, puis créez un nouveau groupe de ressources,
par exemple azuremolchapter18. Sélectionnez la région Azure la plus appro-
priée près de vous, et laissez l’option cochée à Create Azure Run As Account
(créer un compte Azure Exécuter en tant que).
L’option Create Run As Account (créer un compte Exécuter en tant que) crée des
comptes supplémentaires dans AAD. Les certificats de sécurité sont également créés pour
permettre aux comptes de s’authentifier de manière automatisée, sans avoir besoin
d’invites d’utilisateur ou d’enregistrement d’un mot de passe. Vous pouvez créer et indi-
quer des informations d’identification de compte standard supplémentaires, définies
comme étant un actif Automation, pour fournir un contrôle plus granulaire des comptes
utilisés pour exécuter certaines procédures opérationnelles.
En combinaison avec les contrôles d’accès basés sur les rôles (RBAC), que nous avons
examinés au chapitre 6, vous pouvez créer des comptes Run As (exécuter en tant que)
spécifiques qui fournissent un ensemble limité de permissions nécessaires pour accomplir
les tâches exigées par chaque procédure opérationnelle ou ensemble de procédures opé-
rationnelles. Du point de vue de la sécurité, cette approche vous permet d’auditer et de
contrôler comment et quand ces comptes sont utilisés. Évitez la tentation de créer un
compte Run As (exécuter en tant que) unique qui fournit des permissions d’administra-
teur, car cette approche offre peu de protection contre les abus.

18.1.2 Actifs et procédures opérationnelles Azure Automation


Le compte Azure Automation que vous avez créé dans la section précédente inclut
quelques exemples de procédures opérationnelles. Des exemples PowerShell et Python
sont disponibles. Les actifs et les certificats de connexion sont également ajoutés au
compte Automation pour les comptes Run As (exécuter en tant que) qui ont été créés.
Explorons ces actifs de connexion partagée.

Essayer maintenant
Pour voir les actifs configurés et les exemples de procédures opérationnelles, procédez
comme suit.

1 Dans le portail Azure, sélectionnez Resource Groups (groupes de ressources) à


gauche, puis choisissez votre groupe, par exemple azuremolchapter18. Sélec-
tionnez votre compte Azure Automation, par exemple azuremol.
2 Sous Shared Resources (ressources partagées) dans le menu à gauche, sélec-
tionnez Connections (connexions).
288 CHAPITRE 18 Azure Automation

3 Deux comptes Run As (exécuter en tant que) sont affichés. Ignorez AzureClassicRunA-
sAccount. Comme pour les disques non gérés, que j’ai mentionnés comme étant
quelque chose à éviter dans le chapitre 4, il ya quelques traces d’un ancien format clas-
sique des machines virtuelles dans Azure. Pour maintenir la compatibilité avec les ver-
sions antérieures, certains services offrent des options de gestion pour ces machines
virtuelles classiques. Vous ne pouvez plus créer de machines virtuelles classiques dans le
portail Azure, et l’interface de ligne de commande Azure ne prend également pas en
charge les ressources classiques. Donc, ignorez toutes les références classiques que vous
pouvez encore voir.
4 Pour afficher des informations sur le compte standard, sélectionnez Azure-
RunAsConnection, comme le montre la figure 18.2.

Figure 18.2 Les informations sur le com


pte Run As (exécuter en tant que) sont
affichées, et comprennent un ID
d’application et un ID de locataire. Il s’agit
de propriétés spécifiques à AAD qui aident à
déterminer les informations d’identification
pour ce compte. Une empreinte de certificat
est affichée, qui correspond à un certificat
numérique que nous examinerons à la
prochaine étape.

5 Sélectionnez Certificates (certificats) dans le menu principal du compte Auto-


mation sous Shared Resources (ressources partagées). Encore une fois, un cer-
tificat classique est également disponible, mais ignorez-le, et choisissez le
AzureRunAsCertificate standard. Comme le montre la figure 18.3, l’empreinte
digitale correspond à RunAsConnection de l’étape précédente.
6 Maintenant que vous comprenez les actifs pour les connexions et les certificats,
examinons l’un des exemples de procédure opérationnelle. Sélectionnez
Runbooks (procédures opérationnelles) dans le menu à gauche du compte
Automation. Quelques exemples de procédures opérationnelles sont dispo-
nibles. Choisissez la procédure opérationnelle PowerShell appelée AzureAuto-
mationTutorialScript.
Qu’est-ce qu’Azure Automation? 289

Figure 18.3 L’empreinte du


RunAsCertificate correspond à celle
affichée dans RunAsConnection.
Dans vos procédures opérationnelles,
vous déterminez l’actif de connexion
à utiliser. Le certificat approprié est
utilisé pour vous connecter au
compte Azure.

7 Dans le haut de l’exemple de procédure opérationnelle, vous verrez des


options pour lancer, afficher et modifier la procédure opérationnelle. Cela
devrait être explicite!
D’autres options comprennent Schedule (planification), qui vous permet de
créer ou de sélectionner une ressource partagée qui définit une planification
pour exécuter la procédure opérationnelle à un moment donné, et Webhook,
qui vous permet de créer une URL webhook pour exécuter la procédure opéra-
tionnelle à partir d’un autre script ou d’une autre action.
Choisissez View (afficher).

Azure Automation et contrôle de codes sources avec GitHub


Les procédures opérationnelles peuvent être intégrées à un système de contrôle de codes
sources comme GitHub. L’un des grands avantages d’un système de contrôle de codes
sources pour vos procédures opérationnelles est qu’il fournit un moyen de documenter la
gestion du changement et de revenir aux versions antérieures des procédures opération-
nelles en cas de problème.
Chaque fois que vous enregistrez une procédure opérationnelle Azure Automation, une
nouvelle version est affectée au contrôle de codes sources. Vous n’avez pas besoin de
quitter l’éditeur de procédure opérationnelle pour que cela se produise, car la plateforme
Azure et le système de contrôle de codes sources configuré sont conçus pour fonctionner
par allers-retours. Si vous éprouvez un problème avec la nouvelle procédure opération-
nelle, vous pouvez extraire la version précédente à partir du contrôle de codes sources
qui permet aux tâches de continuer à s’exécuter sans délai, puis résoudre pourquoi la
version mise à jour a eu un problème.
L’utilisation du contrôle de codes sources fournit un relevé des changements qui se sont
produits et à quel moment. Si vous devez auditer vos procédures opérationnelles ou com-
prendre comment elles se sont développées au fil du temps, les systèmes de contrôle de
codes sources offrent un excellent moyen de voir les différences pour chaque révision.
290 CHAPITRE 18 Azure Automation

18.2 Exemple de procédure opérationnelle Azure Automation


Examinons comment l’exemple de procédure opérationnelle PowerShell, AzureAutoma-
tionTutorialScript, se connecte à Azure et recueille des informations sur vos ressources.
Vous pouvez continuer avec l’exemple de procédure opérationnelle Python si vous préfé-
rez; la présentation est similaire. PowerShell et Python sont les seuls langages actuellement
pris en charge par les procédures opérationnelles Azure Automation. La liste suivante
définit les informations d’identification de connexion dans la procédure opérationnelle.

Listing 18.1 Configuration des informations d’identification de connexion


$connectionName = "AzureRunAsConnection" Crée un objet pour $connectionName
try Effectue la demande de connexion
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name
$connectionName Crée un objet de principal de service

"Logging in to Azure..."
Add-AzureRmAccount `
-ServicePrincipal ` Se connecte
-TenantId $servicePrincipalConnection.TenantId ` à Azure
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint
$servicePrincipalConnection.CertificateThumbprint
}

Le code commence par créer un objet pour $connectionName. Dans l’exercice « Essayez-le
maintenant », vous avez vu qu’un actif de connexion par défaut pour AzureRunAsConnection
a été créé. Lorsque vous créez vos propres procédures opérationnelles, vous pouvez créer des
comptes Run As (exécuter en tant que) et des actifs de connexions supplémentaires pour sépa-
rer les procédures opérationnelles et les informations d’utilisation qu’elles utilisent. Les parties
de connexion et la gestion des exceptions que nous aborderons par la suite doivent être com-
munes à toutes les procédures opérationnelles. Au besoin, vous pouvez modifier l’actif de
connexion Run As (exécuter en tant que) à utiliser.
Ensuite, un énoncé try est utilisé pour effectuer la demande de connexion. Un objet
de principal de service nommé $servicePrincipalConnection est créé, basé sur
$connectionName. La procédure opérationnelle se connecte ensuite à Azure avec Add-
AzureRmAccount et utilise l’objet $servicePrincipalConnection pour obtenir le Tenan-
tId, l’ApplicationId et le Certificate-Thumbprint. Nous avons discuté de ces para-
mètres dans le cadre de l’actif de connexion plus tôt. L’actif de certificat correspondant à
l’empreinte de $servicePrincipalConnection est ensuite utilisé pour effectuer la
connexion à Azure.
La liste suivante montre que si la connexion échoue, la procédure opérationnelle
intercepte l’erreur et arrête l’exécution.

Listing 18.2 Interception d’une erreur et arrêt de l’exécution de la procédure opérationnelle


catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Exemple de procédure opérationnelle Azure Automation 291

Write-Error -Message $_.Exception


throw $_.Exception
}
}

L’énoncé catch gère les erreurs dans le cadre de la tentative de connexion. Si une
connexion de principal de service est introuvable, une erreur en résulte. Cette erreur
signifie généralement que l’actif de connexion que vous avez indiqué est introuvable.
Vérifiez soigneusement le nom et l’orthographe de votre connexion.
Sinon, l’objet de connexion a été trouvé, et le principal de service a été utilisé pour se
connecter, mais le processus d’authentification a échoué. Cette défaillance peut être cau-
sée par le certificat qui n’est plus valide ou par le compte Run As (exécuter en tant que)
qui n’est plus activé. Cette fonctionnalité vous montre comment vous pouvez révoquer un
compte dans AAD et vous assurer que les procédures opérationnelles qui utilisent les
informations d’identification ne peuvent plus s’exécuter avec succès.
Maintenant, la procédure opérationnelle obtient une liste de toutes les ressources
Azure.

Listing 18.3 Obtention d’une liste de ressources Azure


$ResourceGroups = Get-AzureRmResourceGroup

foreach ($ResourceGroup in $ResourceGroups)


{
Write-Output ("Showing resources in resource group "
+ $ResourceGroup.ResourceGroupName)
$Resources = Find-AzureRmResource -ResourceGroupNameContains
$ResourceGroup.ResourceGroupName |
Select ResourceName, ResourceType
ForEach ($Resource in $Resources)
{
Write-Output ($Resource.ResourceName + " of type "
+ $Resource.ResourceType)
}
Write-Output ("")
}

La partie finale de la procédure opérationnelle est là où votre code de procédure opéra-


tionnelle doit aller. Un objet est créé pour $ResourceGroups qui fournit une liste de tous
les groupes de ressources Azure disponibles. Une boucle foreach passe ensuite par
chaque groupe de ressources, trouve une liste de ressources et écrit une liste des noms et
des types de ressources.
Cet exemple de base montre comment vous pouvez interagir avec Azure une fois que la
procédure opérationnelle a été authentifiée par rapport à l’abonnement. Si vous avez mis
en œuvre les RBAC sur le compte Run As (exécuter en tant que), seuls les groupes de res-
sources que le compte a les permissions de voir seront retournés. Cette approche de RBAC
souligne pourquoi il s’agit d’un bon principal de sécurité de créer et d’utiliser des comptes
Run As (exécuter en tant que) définis pour limiter l’accès des procédures opérationnelles
aux ressources dans votre environnement Azure. Essayez toujours de fournir le moins de
privilèges nécessaires.
Si PowerShell ou Python est nouveau pour vous, ne vous inquiétez pas. Les deux
offrent un excellent langage de script de base, mais peuvent également être utilisés pour
développer des applications puissantes et complexes. En tant que développeur, chaque
langage devrait être relativement facile à choisir et à utiliser. Si vous êtes un professionnel
des TI, l’automatisation de tâches vous aide à libérer du temps pour tous les autres travaux
292 CHAPITRE 18 Azure Automation

qui s’empilent, et PowerShell ou Python sont tous les deux de bons endroits pour com-
mencer. Manning Publications a également d’autres excellents livres pour vous aider!

18.2.1 Exécution et affichage de la sortie à partir d’un exemple de


procédure opérationnelle
Maintenant que vous avez vu ce que l’exemple de script de procédure opérationnelle
continent et comment les actifs de connexion et de certificat sont utilisés, nous allons exé-
cuter la procédure opérationnelle et examiner le résultat.

Essayer maintenant
Pour voir la procédure opérationnelle en action, procédez comme suit.

1 Fermez la fenêtre qui affiche le contenu de la procédure opérationnelle, puis


retournez à l’aperçu d’AzureAutomationScriptTutorial. Sélectionnez Start (lan-
cer) dans le haut de la fenêtre de procédure opérationnelle.
2 Confirmez que vous souhaitez démarrer la procédure opérationnelle, puis
attendez quelques secondes pour que la procédure opérationnelle commence
à s’exécuter. Sélectionnez Output (sortie), comme le montre la figure 18.4,
puis observez la fenêtre de la console lorsque la procédure opérationnelle se
connecte à Azure, obtient une liste de groupes de ressources et parcourt et
affiche la liste de ressources dans chacun.

Figure 18.4 Le résultat de la procédure opérationnelle peut être visualisé, ainsi que les journaux généraux ou
les erreurs et les avertissements. Cet exemple de base se termine en quelques secondes, mais des procédures
opérationnelles plus complexes peuvent prendre plus de temps. Vous pouvez surveiller l’état de ces procédures
opérationnelles plus longues et arrêter ou suspendre leur exécution si nécessaire.

Les procédures opérationnelles d’automatisation n’ont pas besoin d’être isolées. Une pro-
cédure opérationnelle peut en exécuter une autre. Cette capacité vous permet de créer
une automatisation complexe à plusieurs étapes et de minimiser la duplication du code.
Lorsque vous concevez et créez des procédures opérationnelles, essayez de les décompo-
ser en petits blocs distincts de code. Les fonctions courantes que vous pouvez réutiliser,
comme la connexion à Azure et à la génération d’une liste de ressources ou d’une liste de
Configuration de l’état souhaité PowerShell (DSC) 293

machines virtuelles, doivent être créées comme des petites procédures opérationnelles
pouvant être comprises dans des procédures opérationnelles plus volumineuses. Lorsque
de nouveaux cmdlets de commande PowerShell sont publiés ou que des paramètres sont
modifiés, vous pouvez rapidement mettre à jour une procédure opérationnelle partagée
unique qui comprend ces cmdlets de commande au lieu de devoir mettre à jour plusieurs
procédures opérationnelles différentes.

18.3 Configuration de l’état souhaité PowerShell (DSC)


Le chapitre 12 a introduit le concept d’extensions de machines virtuelles. Une extension est
un petit composant logiciel installé dans une machine virtuelle pour effectuer une tâche
donnée. L’extension de diagnostics de machine virtuelle a été installée sur une machine
virtuelle pour permettre aux mesures de performance et aux journaux de diagnostic
d’être rapportés à la plateforme Azure depuis l’intérieur de la machine virtuelle. C’est
génial, mais nous avons également un peu parlé de la façon dont vous pouvez installer
automatiquement le logiciel.
Une façon d’installer le logiciel et de configurer un serveur est d’utiliser la configura-
tion de l’état souhaité PowerShell (DSC). Avec DSC, vous définissez la façon dont vous sou-
haitez qu’un serveur soit configuré – l’état souhaité. Vous pouvez déterminer des paquets
à installer, des fonctions à configurer ou des fichiers à créer, par exemple. Ce qui est formi-
dable avec DSC, c’est qu’elle va au-delà de la première action d’installation et de configu-
ration. Au fil du temps, les serveurs sont souvent touchés par des événements de
maintenance ou de dépannage où les configurations et les paquets sont modifiés manuel-
lement. Le serveur va alors dévier de l’état souhaité que vous avez initialement défini. La
figure 18.5 montre comment Azure Automation peut agir en tant que serveur central qui
stocke les définitions DSC, permettant aux serveurs cibles de recevoir leurs configurations
et de rendre compte de leur conformité.
Le gestionnaire de configuration locale (LCM) sur chaque serveur cible contrôle le
processus de connexion au serveur pull Azure Automation, en recevant et en analysant la
définition DSC, ainsi qu’en appliquant la conformité et créant des rapports sur cette der-
nière. Le moteur LCM peut fonctionner sans serveur pull, où vous appelez localement le
processus pour lire et appliquer une définition DSC. Dans ce mode, où vous poussez

Serveur collecteur
Azure Automasaon
1. Configuraon DSC
souhaitée stockée dans 3. Les serveurs extraient et
Azure Automaon appliquent la configuraon
2. Serveurs configurés souhaitée
pour uliser le serveur
collecteur Automaon DSC
configuraon WebServer {
Nœud localhost {
WindowsFeature WebServer { MV Azure Serveur
Assurer = « Présent »
physique sur Autre machine
Nom = « Serveur Web »
} place virtuelle de
} fournisseur
} nuage

Figure 18.5 La configuration de l’état souhaité pour un serveur est créée et stockée dans Azure
Automation. Le compte Automation agit comme un serveur pull, qui permet aux serveurs connectés
d’extraire la configuration requise à partir d’un emplacement central. Différents modes de configuration
peuvent être définis pour le comportement de remédiation du serveur si sa configuration dévie de l’état
souhaité.
294 CHAPITRE 18 Azure Automation

manuellement la configuration vers le moteur LCM, vous manquez beaucoup de


contrôles centraux et de rapports qui sont souvent nécessaires lorsque vous gérez de nom-
breux serveurs.
La façon dont les serveurs cibles traitent les définitions DSC reçues du serveur pull
Azure Automation est également flexible. Vous pouvez configurer DSC pour qu’il fonc-
tionne dans l’un de ces trois modes de configuration :
 Appliquer seulement – Votre état souhaité est poussé vers le serveur cible et appli-
qué à ce dernier, c’est tout. Le comportement de l’extension de script person-
nalisé Azure dans toute configuration ou installation est appliqué lors du
premier déploiement, mais il n’y a aucun processus en place pour empêcher
ces configurations d’être modifiées manuellement au cours du cycle de vie du
serveur.
 Appliquer et surveiller – Une fois que l’état souhaité est appliqué au serveur, DSC
continue de surveiller les modifications faisant en sorte que le serveur dévie de
cette configuration initiale. Un rapport central peut être utilisé pour voir les ser-
veurs qui ne sont plus conformes à leur état souhaité. Cette configuration est un
bon compromis entre la nécessité de maintenir la conformité du serveur avec l’état
souhaité et le fait de fournir un élément d’interaction humaine pour décider des
options de remédiation.
 Appliquer et corriger automatiquement – La configuration la plus automatisée et
autonome applique l’état souhaité, puis surveille les éventuelles déviations et
corrige automatiquement le serveur si des changements se produisent pour
assurer qu’il reste conforme. Il existe un danger que des modifications
manuelles légitimes soient écrasées et plutôt renvoyées à l’état souhaité confi-
guré, mais ce mode de configuration assure que les paramètres que vous attri-
buez ont toujours la priorité.
PowerShell DSC peut être utilisé sur des machines s’exécutant sur d’autres fournisseurs
infonuagiques, ainsi que sur des machines virtuelles sur place et des serveurs physiques.
Grâce à .NET Core, PowerShell DSC peut également être utilisé sur les serveurs Linux,
donc ce n’est pas une solution uniquement pour Windows. Cette prise en charge de plu-
sieurs fournisseurs et systèmes d’exploitation fait de PowerShell un choix puissant pour
configurer et gérer des serveurs à grande échelle.
Vous pouvez créer et maintenir votre propre serveur pull DSC, mais les fonctions inté-
grées d’Azure Automation offrent des avantages supplémentaires :
 Les informations d’identification sont gérées de façon centralisée, et les certifi-
cats sont générés automatiquement.
 La communication entre le serveur collecteur DSC et les serveurs cibles est chiffrée.
 Des rapports intégrés sont fournis pour la conformité à DSC, et il y a une intégra-
tion avec Log Analytics pour générer des rapports et des alertes plus détaillés.
C’est vraiment un cours accéléré sur PowerShell DSC – c’est un composant puissant par
lui-même et qui est largement disponible depuis quelques années maintenant. Lorsqu’il
est combiné avec Azure Automation, DSC est un excellent choix pour automatiser l’instal-
lation et la configuration de logiciel. Repensez aux chapitres précédents sur les jeux de
mise à l’échelle de machine virtuelle, par exemple. Vous pouvez appliquer une configura-
tion DSC au jeu de mise à l’échelle avec Azure Automation, puis à mesure que chaque
machine virtuelle est créée dans le jeu de mise à l’échelle, elle sera automatiquement
configurée avec les composants et les fichiers d’application requis.
Configuration de l’état souhaité PowerShell (DSC) 295

18.3.1 Définition et utilisation de PowerShell DSC et d’un serveur pull


Azure Automation
J’espère que ce tour d’horizon rapide de PowerShell DSC vous a donné une idée de ce qui
est possible! Utilisons PowerShell DSC pour automatiser l’exemple précédent d’installa-
tion d’un serveur Web de base sur une machine virtuelle.

Essayer maintenant
Pour voir la configuration de l’état souhaité de PowerShell en action, procédez comme
suit.

1 Créez une machine virtuelle Windows Server 2016 Datacenter VM, et ouvrez le
port TCP 80 pour le trafic HTTP. Vous n’avez plus besoin d’aide maintenant
que nous sommes au chapitre 18! Vous pouvez créer la machine virtuelle dans
le portail Cloud Shell ou Azure, à votre choix. Utilisez le groupe de ressources
que vous avez créé dans les exercices précédents, par exemple azuremolchap-
ter18. Vous pouvez continuer avec les prochaines étapes pendant que la
machine virtuelle se déploie.
2 Sur votre ordinateur local, créez un fichier appelé webserver.ps1 et entrez le
code suivant :
configuration WebServer {
Node localhost {
WindowsFeature WebServer {
Ensure = "Present"
Name = "Web-Server"
}
}
}
Enregistrez et fermez le fichier webserver.ps1.
3 Dans le portail Azure, sélectionnez votre groupe de ressources, puis choisissez
votre compte Automation. À gauche, choisissez DSC Configurations (configura-
tions DSC). Dans le haut de la fenêtre de configuration DSC, choisissez d’ajou-
ter une configuration.
4 Accédez à votre fichier webserver.ps1 et sélectionnez-le. Le nom de la configura-
tion doit correspondre au nom du fichier, alors laissez le nom par défaut du ser-
veur Web, puis choisissez OK.
5 Il faut quelques instants pour télécharger et créer la configuration. Lorsqu’elle
est prête, sélectionnez la configuration dans la liste, puis choisissez Compile
(compiler).

Dans les coulisses de DSC


Faisons une pause pour parler de ce qui se passe lorsque vous compilez la configuration,
comme le montre la figure suivante. Pour distribuer les définitions DSC, vos fichiers
PowerShell sont convertis en un fichier Managed Object Format (MOF). Ce type de fichier
est utilisé pour plus que PowerShell DSC et permet des modifications de configuration
des composants Windows d’une façon centrale et bien comprise. Les définitions DSC,
pas seulement dans Azure Automation, doivent être compilées avant de pouvoir être appli-
quées à un serveur cible. Le moteur LCM accepte et traite uniquement les fichiers MOF.
296 CHAPITRE 18 Azure Automation

(suite)
Définion DSC Cerficat public copié
téléchargée sur serveurs cibles. Le
sur le serveur fichier MOF peut ensuite
collecteur être déchiffré et
configuraon WebServer { Azure traité par le
Nœud localhost { MV Azure
Automaon moteur
WindowsFeature WebServer {
Assurer = « Présent »
DSC Serveur collecteur LCM. Cerficats numériques
Nom = « Serveur Web- » Azure Automasaon
} Moteur LCM
}
}
Compile le fichier
MOF et chiffre les
cerficats
numériques Fichier
MOF
chiffré

Le serveur pull Azure Automation DSC compile automatiquement la définition DSC que vous
fournissez dans un fichier Managed Object Format (MOF). Les certificats numériques gérés par
Automation sont utilisés pour chiffrer le fichier MOF. Les serveurs cibles DSC reçoivent les
certificats numériques publics requis et permettent au moteur LCM de déchiffrer et de traiter le
fichier MOF. L’état souhaité peut alors être appliqué au serveur.
Comme le fichier MOF définit l’état complet de vos serveurs, vous devez protéger son
contenu. Si un pirate connaissait tous les composants d’application installés et l’empla-
cement de différents fichiers de configuration et le code personnalisé, cela augmenterait
les chances que vos serveurs soient compromis. Les versions récentes de PowerShell
chiffrent l’intégralité du fichier MOF. Azure Automation génère automatiquement les certi-
ficats et les clés numériques requis lorsqu’un serveur cible est configuré pour DSC, ce
qui vous permet d’utiliser de façon transparente des fichiers MOF chiffrés. Ensuite, Auto-
mation chiffre également le trafic entre le serveur pull DSC et les nœuds cibles, et non
seulement le fichier MOF.
Le processus de compilation dans Azure Automation convertit la définition DSC que vous
fournissez dans un fichier MOF et chiffre le fichier MOF avec les certificats et les clés
numériques. Le processus de compilation de votre définition DSC prend quelques
secondes, mais sécurise considérablement votre environnement. Ce n’est qu’un autre
exemple de la sécurisation de vos ressources par défaut par Azure!

6 Pour appliquer la configuration à votre machine virtuelle, sélectionnez DSC


Nodes (nœuds DSC) à gauche dans votre compte Automation. Choose Add
Azure VM (ajouter une machine virtuelle Azure), puis sélectionnez la machine
virtuelle que vous avez créée aux étapes précédentes.
7 Choisissez Connect (connexion). Dans le menu déroulant de nom de configu-
ration du nœud, sélectionnez webserver.localhost. Définissez le mode de confi-
guration par défaut à ApplyAndMonitor (appliquer et surveiller), puis
sélectionnez OK.
8 Il faut quelques instants pour permettre à la machine virtuelle d’utiliser le ser-
veur pull Azure PowerShell DSC et d’appliquer l’état souhaité initial. Une fois
que le portail Azure signale que la configuration est appliquée, vous souvenez-
vous comment ajouter une règle de port d’entrée pour le trafic HTTP (port
TCP 80)? Consultez le chapitre 5 si vous avez besoin d’un rappel; ensuite,
ouvrez l’adresse IP publique de la machine virtuelle dans un navigateur Web.
Le processus DSC a installé le serveur Web IIS et la page Web par défaut se
charge, comme le montre la figure 18.6.
Exercice pratique : utilisation de DSC avec Linux 297

Figure 18.6 Une fois la machine virtuelle connectée à Azure Automation


DSC, l’état souhaité est appliqué et le serveur Web IIS est installé.

Cet exemple de base de PowerShell DSC installe uniquement la fonction de serveur Web.
Vous pouvez utiliser PowerShell DSC pour configurer le serveur Web IIS ou copier votre
code d’application sur la machine virtuelle et exécuter le site. Les définitions DSC com-
plexes peuvent être utilisées pour préparer la machine virtuelle à servir le trafic aux clients
de votre magasin de pizza sans interaction manuelle. Encore une fois, repensez à la façon
dont vous devez concevoir vos applications pour qu’elles soient mises à l’échelle automati-
quement – la machine virtuelle ne peut pas attendre que quelqu’un se connecte et installe
et configure tout manuellement!

18.4 Exercice pratique : utilisation de DSC avec Linux


Juste pour prouver que PowerShell DSC fonctionne sur les serveurs Linux, nous allons
créer une machine virtuelle Ubuntu, installer les prérequis nécessaires, puis installer un
serveur Web NGINX de base avec DSC. En production, vous pouvez utiliser une image de
machine virtuelle personnalisée avec les composants de gestion déjà installés, puis appli-
quer les définitions PowerShell DSC normalement :
1 Créez une machine virtuelle Ubuntu 16.04 LTS, et ouvrez le port 80. Lorsque
vous êtes prêt, utilisez SSH pour vous connecter à la machine virtuelle.
2 Ajoutez le référentiel Microsoft logiciel Linux à la machine virtuelle Ubuntu :
wget https://packages.microsoft.com/config/ubuntu/16.04/
packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
3 Installez le composant Open Management Infrastructure du référentiel de logi-
ciel Microsoft :
sudo apt-get -y install omi
298 CHAPITRE 18 Azure Automation

4 Dans le compte Azure Automation, sélectionnez Modules dans le menu à


gauche. Sélectionnez Browse Gallery (parcourir la galerie), puis recherchez et
importez le module nx pour gérer les ressources Linux DSC.
5 Sur votre ordinateur local, créez un fichier nommé nginx.ps1, et tapez le code
suivant :
configuration nginx {
Import-DSCResource -Module nx
Node localhost {
nxPackage nginx {
Name = "nginx"
Ensure = "Present"
PackageManager = "apt"
}
}
}
6 Ajoutez une configuration DSC, et téléversez le fichier nginx.ps1. Une fois cela
créé, compilez la configuration.
7 Ajoutez un nœud DSC, sélectionnez votre machine virtuelle Ubuntu, puis choi-
sissez votre nom de configuration de nœud nginx.localhost.
8 Il faut quelques instants pour que la machine virtuelle applique la configura-
tion souhaitée. Vous pouvez voir la liste des machines virtuelles connectées et
leur état de conformité dans la fenêtre des nœuds DSC. La machine virtuelle
indique Compliant (conforme) lorsque le LCM a accepté et appliqué le fichier
MOF, mais l’installation apt-get peut encore prendre une minute ou deux.
9 Ouvrez le port TCP 80 pour le trafic HTTP vers votre machine virtuelle, puis
entrez l’adresse IP publique de votre machine virtuelle dans un navigateur Web
pour voir le serveur Web NGINX installé par DSC. Si le site Web ne se charge
pas, attendez une minute ou deux pour que le processus d’installation se ter-
mine, puis actualisez la page.
Si vous voulez réellement faire l’expérience de l’incroyable nouveau monde de Microsoft
et Linux, vous pouvez installer PowerShell sur votre machine virtuelle Linux. Suivez les
étapes de configuration rapidement à l’adresse http://mng .bz/A6Mc pour comprendre
comment les scripts PowerShell multiplateformes peuvent maintenant être!
Conteneurs Azure

Les conteneurs, Docker et Kubernetes ont connu un succès immense en seulement


quelques années. De la même façon que la virtualisation des serveurs a commencé à
changer la façon dont les services informatiques géraient leurs centres de données au
milieu des années 2000, les outils de conteneurs modernes et les orchestrateurs boule-
versent maintenant notre manière de créer et d’exécuter des applications. Rien ne
relie intrinsèquement la croissance des conteneurs et l’infonuagique, mais lorsqu’elles
sont combinées, elles offrent un excellent moyen de développer des applications avec
une approche basée sur les nuages.
Des livres entiers ont été écrits sur Docker et Kubernetes, mais faisons une introduc-
tion éclair pour voir comment vous pouvez exécuter rapidement des conteneurs dans
Azure. Il existe une puissante suite de services Azure dédiés aux conteneurs et qui
s’alignent davantage sur l’approche PaaS. Vous pouvez vous concentrer sur la création
et l’exécution de vos applications, plutôt que sur la façon de gérer l’infrastructure
conteneurisée, l’orchestration et les composants de grappe. Dans ce chapitre, nous
examinons ce que sont les conteneurs, quelle est l’implication de Docker et ce que
Kubernetes peut faire pour vous. Pour voir comme exécuter rapidement une instance
de conteneur unique ou plusieurs instances de conteneurs dans une grappe, nous
explorons Azure Container Instances (ACI) et Azure Kubernetes Service (AKS).

19.1 Que sont les conteneurs?


Il y a eu un vaste mouvement d’intérêt et d’adoption autour des conteneurs au cours
des dernières années, et je serais surpris si vous n’avez pas au moins entendu parler
d’une entreprise qui a pris les devants : Docker. Mais qu’est-ce qu’un conteneur, et quel
est le lien avec Docker?
Premièrement, nous allons discuter d’un hôte de virtualisation traditionnel exécu-
tant des machines virtuelles. La figure 19.1 est comme le diagramme que nous avons

299
300 CHAPITRE 19 Conteneurs Azure

regardé au chapitre 1, où chaque machine virtuelle a son propre matériel virtuel et sys-
tème d’exploitation invité.

Hôte de virtualisaon
Hyperviseur

Machine virtuelle 1 Machine virtuelle 2


vCPU vRAM vNIC vCPU vRAM vNIC
Système d’exploitaon
Système d’exploitaon Linux invité Windows

Bibliothèques principales + binaires Bibliothèques principales + binaires

Votre code d’applicaon Votre code d’applicaon

Figure 19.1 Avec une infrastructure de machine virtuelle traditionnelle, l’hyperviseur sur chaque hôte
de virtualisation fournit une couche d’isolation en offrant à chaque machine virtuelle son propre
ensemble d’appareils virtuels, comme une unité centrale virtuelle, une mémoire vive virtuelle et des
cartes réseau virtuelles. La machine virtuelle installe un système d’exploitation invité comme Ubuntu
Linux ou Windows Server, qui peut utiliser ce matériel virtuel. Finalement, vous installez votre
application et toutes les bibliothèques requises. Ce niveau d’isolation rend les machines virtuelles très
sécuritaires, mais ajoute une couche de surcharge quant aux ressources de calcul, au stockage et au
temps de démarrage.

Un conteneur supprime le matériel virtuel et le système d’exploitation invité. Les applica-


tions de base et les bibliothèques requises pour exécuter votre application sont tout ce qui
est compris dans un conteneur, comme le montre la figure 19.2.

Hôte de conteneurs
Exécuon des conteneurs (comme Docker)

Conteneur 1 Conteneur 2
Bibliothèques principales + binaires Bibliothèques principales + binaires

Votre code d’applicaon Votre code d’applicaon

Figure 19.2 Un conteneur inclut uniquement les bibliothèques de base, les fichiers binaires et le code
d’application requis pour exécuter une application. Le conteneur est léger et portable, car il supprime
la couche du système d’exploitation invité et du matériel virtuel, ce qui réduit également la taille sur
le disque du conteneur et les temps de démarrage.

De nombreuses machines virtuelles peuvent s’exécuter sur un seul hyperviseur, chaque


machine virtuelle comportant un système d’exploitation invité virtuel, du matériel virtuel
et une pile d’applications qui lui sont propres. L’hyperviseur gère les demandes du
matériel virtuel de chaque machine virtuelle, planifie l’allocation et le partage de ces res-
sources matérielles physiques et veille à la sécurité et à l’isolation de chaque machine vir-
tuelle. Le travail de l’hyperviseur est illustré à la figure 19.3.
Que sont les conteneurs? 301

Hôte de virtualisaon

UC physique RAM physique NIC physique

Hyperviseur

vCPU vRAM vNIC vCPU vRAM vNIC


Machine virtuelle 1 Machine virtuelle 2

Système d’exploitaon Linux Système d’exploitaon invité Windows

Figure 19.3 Dans un hôte de machine virtuelle traditionnel, l’hyperviseur fournit la planification des
demandes du matériel virtuel dans chaque machine virtuelle sur le matériel physique et l’infrastructure
sous-jacents. L’hyperviseur n’est généralement pas conscient des instructions précises planifiées par
le système d’exploitation invité sur le temps de l’unité centrale physique, mais seulement que ce temps
de l’unité centrale est requis.

Plusieurs conteneurs peuvent également être exécutés sur un seul hôte. L’hôte du
conteneur reçoit les différents appels système de chaque conteneur et planifie l’allocation
et le partage de ces demandes à travers des ressources partagées de noyau de base, de sys-
tème d’exploitation et de matériel. Les conteneurs fournissent une isolation logique des
processus d’application. Le travail de l’exécution de conteneur est illustré à la figure 19.4.

Hôte de conteneurs
Système
d’exploitaon invité Noyau invité

Exécuon des conteneurs (comme Docker)


Système d’exploitaon
invité partagé et
demandes du noyau
Conteneur 1 Conteneur 2
Bibliothèques principales + binaires Bibliothèques principales + binaires

Votre code d’applicaon Votre code d’applicaon

Figure 19.4 Les conteneurs partagent un système d’exploitation invité et un noyau commun.
L’exécution de conteneur gère les demandes des conteneurs et les envoie vers le noyau partagé.
Chaque conteneur s’exécute dans un espace utilisateur isolé, et des fonctions de sécurité
supplémentaires protègent les conteneurs les uns des autres.

Les conteneurs sont généralement beaucoup plus légers que les machines virtuelles. Les
conteneurs peuvent démarrer plus rapidement que les machines virtuelles, souvent en
quelques secondes plutôt qu’en quelques minutes. La taille d’une image de conteneur est
généralement de dizaines ou de centaines de Mo seulement, au lieu de nombreuses
302 CHAPITRE 19 Conteneurs Azure

dizaines de Go pour les machines virtuelles. Il y a toujours des limites de sécurité et des
contrôles en place, mais il est important de se rappeler que chaque conteneur partage
techniquement le même noyau que les autres conteneurs sur le même hôte.

Essayer maintenant
Il faut quelques minutes pour créer une grappe Azure Kubernetes Services à utiliser dans
les exercices à venir, alors procédez comme suit, puis poursuivez la lecture du chapitre.

1 Ouvrez le portail Azure et sélectionnez l’icône Cloud Shell dans le menu du


haut.
2 Créez un groupe de ressources. Indiquez un nom comme azuremolchapter19
et un emplacement comme eastus. La disponibilité régionale d’Azure Kuber-
netes Service peut varier, alors choisissez une région importante comme eastus
ou westeurope. Pour une liste à jour de la disponibilité régionale, consultez le
site https://azure.microsoft.com/regions/services:
az group create --name azuremolchapter19 --location westeurope
3 Pour créer une grappe Kubernetes, tout ce que vous devez indiquer est --node-
count. Dans cet exemple, créez une grappe à deux nœuds :
az aks create \
--resource-group azuremolchapter19 \
--name azuremol \
--node-count 2 \
--generate-ssh-keys \
--no-wait

Pourquoi générez-vous également des clés SSH? Chaque nœud est une machine virtuelle
sur laquelle des composants supplémentaires sont installés. Ces composants incluent une
exécution de conteneur, par exemple Docker, et des composants Kubernetes de base, par
exemple le kubelet. Le paramètre --no-wait final retourne le contrôle à Cloud Shell tan-
dis que le reste de votre grappe est créé. Continuez de lire pendant que la grappe est
déployée.
Docker a associé la partie du conteneur à un ensemble d’outils et de formats stan-
dard déterminant comment créer et exécuter un conteneur. Docker s’appuie sur des
fonctions Linux et Windows existantes au niveau du noyau pour offrir une expérience
de conteneur portable et constante sur l’ensemble des plateformes. Un développeur
peut créer un conteneur Docker sur son ordinateur portable exécutant macOS, valider
et tester son application, puis exécuter le conteneur Docker exact, sans modification,
dans une grappe de serveurs sur place plus traditionnelle basée sur Linux ou Windows
ou dans Azure. L’ensemble des fichiers binaires, des bibliothèques et des fichiers de
configuration requis sont groupés dans le conteneur, de sorte que le système d’exploi-
tation hôte sous-jacent ne devienne pas un facteur de conception ou une contrainte.
L’importance de Docker ne doit pas être manquée ici. Les termes conteneur et Docker
sont souvent utilisés de manière interchangeable, bien que ce ne soit techniquement pas
exact. Docker est un ensemble d’outils qui aident à créer et à exécuter des conteneurs
d’une manière cohérente, fiable et portable. La facilité d’utilisation de ces outils a conduit
à une adoption rapide et a apporté la technologie de conteneurs sous-jacente qui existait
sous une forme ou une autre depuis plus d’une décennie pour le grand public. Les déve-
loppeurs ont adopté les conteneurs et la plateforme Docker, et les services informatiques
ont dû emboîter le pas depuis.
Que sont les conteneurs? 303

Docker participe à l’initiative Open Container. Le format et les spécifications détermi-


nés par Docker quant à la façon dont un conteneur doit être empaqueté et exécuté sont
quelques-uns des principes fondateurs de ce projet. Le travail de l’entreprise a été pour-
suivi et aidé par d’autres. De grands contributeurs dans l’espace conteneur comprennent
IBM et Red Hat, qui ont fourni certaines des conceptions de base et du code alimentant
les plateformes actuelles de conteneurs. L’initiative Open Container et le format de
conception pour l’empaquetage et l’exécution de conteneurs sont importants, car ils per-
mettent à chaque fournisseur de calquer ses propres outils sur des formats courants, afin
que vous puissiez déplacer le conteneur sous-jacent entre les plateformes et avoir la même
expérience de base.

19.1.1 L’approche des microservices pour les applications


Si les conteneurs offrent un concept d’isolation similaire aux machines virtuelles, pouvez-
vous exécuter le même type de charges de travail que dans une machine virtuelle? Eh
bien, oui et non. Ce n’est pas parce que vous pouvez faire quelque chose que vous devez
nécessairement le faire! Les conteneurs peuvent être utilisés pour exécuter toutes les
charges de travail avec lesquelles vous êtes à l’aise, et il y a des avantages quant à la portabi-
lité et des fonctions d’orchestration que nous examinerons plus loin dans ce chapitre.
Pour maximiser les avantages des conteneurs et assurer votre réussite, profitez de l’occa-
sion pour adopter un modèle mental légèrement différent lorsque vous commencez à tra-
vailler avec les conteneurs. La figure 19.5 compare le modèle d’application traditionnel
avec une démarche fondée sur les microservices.

Microservices
Applicaon monolithique

Traitement des Traitement du Traitement des Traitement du


commandes paiement commandes paiement

Geson des Informaons Geson des Informaons


comptes sur les stocks comptes sur les stocks

Figure 19.5 Dans une application monolithique traditionnelle, toute l’application


s’exécute comme une application unique. L’application peut comprendre
différents composants, mais cette dernière s’exécute à partir d’une seule
installation et est corrigée et mise à jour comme une instance unique. Avec les
microservices, chaque composant est divisé en un service d’application et une
unité d’exécution qui lui sont propres. Chaque composant peut être mis à jour,
corrigé et mis à l’échelle indépendamment des autres.

Une machine virtuelle standard comprend l’installation complète d’un système d’exploi-
tation invité comme Ubuntu ou Windows Server. Cette installation de système d’exploita-
tion de base inclut des centaines de composants, de bibliothèques et d’outils. Vous
installez ensuite plus de bibliothèques et d’applications, comme pour le serveur Web
NGINX ou Microsoft SQL Server. Finalement, vous déployez votre code d’application.
Cette machine virtuelle exécute généralement une grande partie, sinon la totalité, de
l’application. C’est une grande instance d’installation et d’exécution d’application. Pour
améliorer les performances, vous pouvez ajouter plus de mémoire ou d’unité centrale à la
machine virtuelle (mise à l’échelle, dont nous avons parlé dans les chapitres précédents)
304 CHAPITRE 19 Conteneurs Azure

ou augmenter le nombre d’instances qui exécutent votre application (mise à l’échelle


horizontale, comme avec les jeux de mise à l’échelle). La création de plusieurs instances
d’application fonctionne uniquement si votre application est compatible avec les grappes
et implique souvent une certaine forme de stockage partagé pour permettre un état
constant entre les instances d’application. Cette forme traditionnelle de déploiement
s’appelle une application monolithique.
Une approche différente en matière de conception, de développement et d’exécution
d’applications est de diviser les choses en plus petits composants courts. Il s’agit d’une
démarche fondée sur les microservices pour le développement et le déploiement d’applica-
tion. Chaque microservice est responsable d’une petite partie de l’environnement d’appli-
cation élargi. Les microservices peuvent croître, évoluer et être mis à jour
indépendamment du reste de l’environnement d’application.
Même si ce modèle peut présenter des défis au début, tandis que les équipes de déve-
loppement et de TI apprennent à adopter une manière différente de créer et de déployer
des applications, les conteneurs conviennent bien à l’approche de microservice. Les déve-
loppeurs sont habilités à déployer des mises à jour plus petites et graduelles à un rythme
plus rapide que l’approche monolithique en matière de développement d’application.
Les microservices et les conteneurs sont également idéaux pour les flux de travaux d’inté-
gration continue et de livraison continue (CI/CD), où vous pouvez plus facilement créer,
tester, monter et déployer des mises à jour. Vos clients reçoivent de nouvelles fonctions ou
des corrections de bogues plus rapidement que ce ne serait le cas autrement, et nous espé-
rons que votre entreprise croisse en conséquence.

Microservices avec Azure Service Fabric


Ce chapitre se concentre principalement sur les conteneurs Docker et l’orchestration avec
Kubernetes, mais il existe un autre service Azure qui est similaire dans la façon dont il fait
passer le développement d’application vers un modèle de microservices. Azure Service
Fabric existe depuis plusieurs années et était historiquement une approche centrée sur Win-
dows pour la création d’applications, où chaque composant était divisé en son propre micro-
service. Service Fabric surveille l’endroit où chaque composant de microservice s’exécute
dans une grappe, permet aux services de se découvrir mutuellement et de communiquer
ensemble et gère la redondance et la mise à l’échelle.
De nombreux services Azure d’envergure utilisent Service Fabric en coulisses, y compris
Cosmos DB. Cela devrait vous donner une idée des capacités et de la puissance poten-
tielles de Service Fabric! Service Fabric lui-même s’exécute sur des jeux de mise à
l’échelle de machine virtuelle. Vous en savez un peu sur les jeux de mise à l’échelle, n’est-
ce pas?
La plateforme Service Fabric a pris de la maturité, et peut maintenant prendre en charge
Windows et Linux comme système d’exploitation invité, afin que vous puissiez créer votre
application à l’aide de n’importe quel langage de programmation avec lequel vous êtes à
l’aise. Voici un autre exemple de choix dans Azure : vous avez la souplesse de choisir la
façon dont vous souhaitez gérer et orchestrer vos applications de conteneur. Service Fabric
et Azure Kubernetes Service offrent tous les deux d’excellents avantages et cas d’utilisa-
tion.
Comme bon point de départ, si vous développez actuellement ou souhaitez développer
des microservices à l’extérieur des conteneurs, Service Fabric est un excellent choix. Il
fournit une approche unifiée pour traiter à la fois des applications de microservices plus
traditionnelles et des applications basées sur les conteneurs. Si vous choisissez ensuite
d’adopter les conteneurs pour d’autres charges de travail, vous pouvez utiliser les mêmes
outils de gestion et l’interface de Service Fabric pour gérer tous vos environnements
d’applications. Pour une approche d’application plus axée sur les conteneurs dès le
départ, Azure Kubernetes Service peut être un meilleur choix, la croissance et l’adoption
de Kubernetes offrant une expérience de conteneur de première classe.
Azure Container Instances 305

19.2 Azure Container Instances


Maintenant que vous comprenez un peu mieux ce que sont les conteneurs et comment
vous pouvez les utilisez, allons plus loin et créons une instance de base de magasin de
pizza. C’est le même exemple que dans les exemples précédents, où vous avez créé une
machine virtuelle de base pour exécuter votre site Web, ou déployé l’application sur des
applications Web. Dans les deux cas, vous avez dû créer la machine virtuelle ou l’applica-
tion Web, vous y connecter et ensuite y déployer une page Web de base. La puissance des
conteneurs peut-elle vous faciliter grandement la vie? Absolument!
Un service génial appelé Azure Container Instances (ACI) vous permet de créer et
d’exécuter des conteneurs en quelques secondes. Il n’existe aucune ressource réseau ini-
tiale pour la création et la configuration, et vous payez chaque instance de conteneur à la
seconde. Si vous n’avez jamais utilisé de conteneurs et ne voulez rien installer localement
sur votre ordinateur, ACI est un excellent moyen d’essayer la technologie.

19.2.1 Création d’une instance de conteneur unique


Pour voir à quel point vous pouvez exécuter rapidement votre magasin de pizza, nous
allons créer une instance de conteneur. Il faut seulement une commande pour exécuter
une instance de conteneur, mais la figure 19.6 vous montre comment rassembler de nom-
breux composants pour que cela se produise dans les coulisses. Nous examinons les com-
posants d’un Dockerfile et de Docker Hub une fois que l’instance de conteneur est en
cours d’exécution.

Image de base

1. NGINX:dernier
Dockerfile
Azure Container
DE nginx Hub Docker Instances
2. Analyse de port externe Déployer
EXPOSER 80:80 iainfoulds:
80-> port de conteneur 80 azuremol
azuremol
COPY index.html
/usr/share/nginx/html 3.
index.html
/usr/share/nginx/html

Image de conteneur local


créée à parr de Dockerfile
envoyée au référenel
Hub Docker public
azuremol

Figure 19.6 Un Dockerfile a été utilisé pour créer une image de conteneur complète, azuremol. Cette
image a été poussée vers un registre public en ligne appelé Docker Hub. Vous pouvez maintenant créer
une instance de conteneur à l’aide de cette image publique préconstruite à partir de Docker Hub, qui
fournit une image d’application prête à être exécutée.
306 CHAPITRE 19 Conteneurs Azure

Essayer maintenant
Pour créer une instance de conteneur Azure qui exécute un site Web de base, procédez
comme suit.

1 Ouvrez le portail Azure et sélectionnez l’icône Cloud Shell dans le menu du haut.
2 Créez une instance de conteneur. Indiquez que vous voulez une adresse IP
publique et ouvrir le port 80. Cet exercice utilise un exemple d’image que j’ai
créé pour vous, et que nous examinerons un peu plus en détail une fois que le
conteneur sera en cours d’exécution :
az container create \
--resource-group azuremolchapter19 \
--name azuremol \
--image iainfoulds/azuremol \
--ip-address public \
--ports 80
3 Pour voir ce qui a été créé, regardez les détails du conteneur :
az container show \
--resource-group azuremolchapter19 \
--name azuremol
Dans la section Events (événements), vous pouvez voir qu’une fois que l’image
est extraite (téléchargée) à partir de Docker Hub, un conteneur est créé, puis
lancé. Certaines réservations d’unité centrale et de mémoire sont également
attribuées, et peuvent être ajustées au besoin. Une adresse IP publique est affi-
chée, ainsi que certains renseignements sur le conteneur comme l’état de pro-
visionnement, le type de système d’exploitation et la politique de redémarrage.
4 Pour ouvrir le site Web de base qui s’exécute dans le conteneur, vous pouvez
simplement demander l’adresse IP publique attribuée :
az container show \
--resource-group azuremolchapter19 \
--name azuremol \
--query ipAddress.ip \
--output tsv
5 Ouvrez l’adresse IP publique de votre instance de conteneur dans un navigateur
Web. Le magasin de pizza de base doit être affiché, comme l’illustre la figure 19.7.
Figure 19.7 Lorsque vous créez une
instance de conteneur, le site Web du
magasin de pizza s’exécute sans
aucune configuration supplémentaire.
Toute la configuration et tout le
contenu sont inclus dans l’image du
conteneur. Cet exercice rapide met en
évidence la portabilité et la puissance
des conteneurs; une fois que l’image du
conteneur a été préparée, votre
application s’exécute dès qu’une
nouvelle instance de conteneur est
déployée.
Azure Container Instances 307

Examinons l’image du conteneur. Je ne veux pas trop m’avancer sur Docker et la manière
de créer des images de conteneur, mais il est important de comprendre d’où cette image
vient et comment elle exécute le site Web sans configuration supplémentaire.
L’image est créée à partir d’une définition de configuration appelée Dockerfile. Dans un
Dockerfile, vous définissez la plateforme de base, la configuration que vous souhaitez
appliquer et les commandes à exécuter ou les fichiers à copier. Les Dockerfiles peuvent
être, et sont souvent, plus complexes que l’exemple suivant, qui a été utilisé pour créer
l’exemple de conteneur azuremol :
FROM nginx

EXPOSE 80:80

COPY index.html /usr/share/nginx/html

Lorsque ce Dockerfile a servi pour générer une image de conteneur Docker, NGINX a été
utilisé comme image source, et l’exemple de page Web y a été copié. Ce conteneur
a ensuite été poussé vers Docker Hub, un référentiel public en ligne fourni par Docker
pour partager et déployer des conteneurs. Pour déployer l’image de conteneur, vous avez
fourni iainfoulds/azuremol comme image de conteneur à utiliser. Azure a regardé dans
Docker Hub et trouvé un référentiel nommé iainfoulds et, à l’intérieur de ce dernier, une
image nommée azuremol.
Examinons chaque ligne du Dockerfile :
 FROM nginx – Dans les chapitres précédents, vous avez créé une machine vir-
tuelle de base, vous y êtes connecté avec SSH et avez ensuite installé manuelle-
ment le serveur Web NGINX. Dans cet exemple avec un Dockerfile, tout cela
est accompli en une seule ligne. Cette ligne dit de baser le conteneur sur une
image de conteneur existante préinstallée avec NGINX.
 EXPOSE 80:80 – pour permettre l’accès à votre machine virtuelle dans les chapitres
précédents, vous avez créé une règle NSG autorisant le port 80. Dans le Dockerfile,
cette ligne dit au conteneur d’ouvrir le port 80 et de le relier au port interne 80.
Lorsque vous avez créé votre instance de conteneur avec az container create,
vous avez également indiqué que la plateforme doit autoriser le trafic avec --ports
80. C’est tout le réseautage virtuel auquel vous devez penser!
 COPY index.html /usr/share/nginx/html – La partie finale consiste à placer
votre application dans le conteneur. Dans les chapitres précédents, vous avez
utilisé Git pour obtenir l’exemple de page Web de magasin de pizza et le pous-
ser vers votre application Web. Avec le Dockerfile, vous COPIEZ le fichier
index.html dans le répertoire local /usr/share/nginx/html du conteneur. Et
voilà!
Pour vos propres scénarios, vous pouvez définir un Dockerfile qui utilise une image de
base différente, comme Node.js ou Python. Ensuite, vous installez les bibliothèques ou les
paquets de soutien supplémentaires requis, vous extrayez le code d’application du
contrôle de codes sources, par exemple GitHub, et déployez votre application. Ce Docker-
file sera utilisé pour créer des images de conteneurs qui sont ensuite stockées dans un
registre de conteneurs privé, et non pas dans un référentiel Docker Hub public comme
dans l’exemple.
308 CHAPITRE 19 Conteneurs Azure

Registre de conteneur Azure


Vous pouvez penser que Docker Hub semble génial : Azure est-il aussi formidable? En
effet! Parce que vous devez créer un Dockerfile et une image de conteneur, ce n’est mal-
heureusement pas un exercice de deux minutes, et il y a beaucoup de choses à couvrir
dans ce chapitre. Cependant, vous pouvez créer vos propres images à partir d’un Docker-
file dans Cloud Shell, et je vous encourage à explorer cela si vous avez le temps. Mais le
registre de conteneur Azure (ACR) est la route que je choisirais pour stocker mes images
de conteneurs, pour un certain nombre de raisons.
Premièrement, il s’agit d’un registre privé pour vous images de conteneurs, alors vous
n’avez pas à vous soucier d’un possible accès non désiré à vos fichiers et à vos configu-
rations d’applications. Vous pouvez appliquer les mêmes mécanismes RBAC que ceux
dont nous avons discuté au chapitre 6. RBAC vous aide à limiter et à auditer qui a accès
à vos images.
Deuxièmement, le stockage de vos images de conteneur dans un registre Azure signifie
que vos images se trouvent dans les mêmes centres de données que l’infrastructure uti-
lisée pour stocker vos instances de conteneurs ou vos grappes (que nous examinerons
ensuite). Même si les images de conteneurs devraient être relativement petites, souvent
des dizaines de Mo seulement, cela peut s’additionner si vous continuez de télécharger
ces images à partir d’un registre distant.
ACR offre également des options de réplication et de redondance intégrées que vous pou-
vez utiliser pour placer vos conteneurs près de l’endroit où vous les déployez et les exé-
cutez pour que les utilisateurs puissent y accéder. Cet emplacement régional est similaire
à la façon dont vous avez utilisé la réplication globale Cosmos DB au chapitre 10 pour
faire compter ces millisecondes et offrir à vos clients l’accès le plus rapide possible à vos
applications.
Si tout cela vous semble intéressant, consultez les guides de démarrage rapide sur ACR
pour exécuter votre propre référentiel privé en quelques minutes : http://mng.bz/04rj.

19.3 Azure Kubernetes Service


L’exécution d’une instance de conteneur unique est bien, mais cela ne vous offre pas
beaucoup de redondance ou de capacités de mise à l’échelle. Vous souvenez-vous de com-
ment nous avons passé des chapitres entiers plus tôt dans ce livre à parler de la façon
d’exécuter plusieurs instances de votre application, d’équilibrer les charges et d’effectuer
une mise à l’échelle automatique? Ne serait-il pas formidable de faire la même chose avec
des conteneurs? C’est là où vous avez besoin d’un orchestrateur de conteneur.
Comme le nom l’indique, un orchestrateur de conteneur gère vos instances de conteneurs,
surveille leur état et peut évoluer au besoin. Les orchestrateurs peuvent gérer et gèrent
souvent beaucoup plus que cela, mais à un niveau élevé, l’objectif principal est de gérer
toutes les parties mobiles impliquées dans l’exécution d’une application basée sur les
conteneurs, pouvant être mise à l’échelle et hautement disponible. Il existe quelques
orchestrateurs de conteneurs tels que Docker Swarm et le système d’exploitation de
centre de données (DC/OS), mais il y en a un qui s’est élevé au-dessus de la mêlée pour
devenir un orchestrateur de choix : Kubernetes.
Kubernetes a débuté en tant que projet de code source libre dirigé et commandité par
Google et issu des outils d’orchestration de conteneurs internes de l’entreprise. Large-
ment accepté par la communauté du code source libre, Kubernetes est l’un des projets de
code source libre les plus importants et à la croissance la plus rapide sur GitHub. De nom-
breuses grandes entreprises de technologies, y compris Red Hat, IBM et Microsoft, contri-
buent au projet Kubernetes principal.
Azure Kubernetes Service 309

Dans cette section, nous allons prendre l’exemple d’application Web de l’exercice pré-
cédent avec ACI pour exécuter un déploiement redondant et évolutif dans Kubernetes.
Vous vous retrouverez avec quelques composants, comme le montre la figure 19.8.

Azure Kubernetes Déploiement


Service Kubernetes

Hub Docker Grappe Kubernetes Service Kubernetes


Exécuon
iainfoulds: Équilibreur de charge
Nœud 1
azuremol Port TCP 80

Nœud 2

Pod 1

Pod 2

Figure 19.8 Votre exemple de conteneur de Docker Hub s’exécute sur une grappe
Kubernetes à deux nœuds que vous créez dans Azure Kubernetes Service. Le
déploiement Kubernetes contient deux pods logiques, un sur chaque nœud de grappe,
avec une instance de conteneur qui s’exécute à l’intérieur de chaque pod. Vous
exposez ensuite un équilibreur de charge public pour permettre à votre application
Web d’être affichée en ligne.

19.3.1 Création d’une grappe avec Azure Kubernetes Services


Au chapitre 9, nous avons examiné comment les jeux de mise à l’échelle de machine vir-
tuelle réduisent la complexité du déploiement et la configuration de l’infrastructure sous-
jacente. Vous dites combien d’instances de machines virtuelles vous voulez dans un jeu de
mise à l’échelle, et le reste du réseau, du stockage et de la configuration est déployé pour
vous. Azure Kubernetes Service (AKS) fonctionne essentiellement de la même façon pour
offrir une grappe Kubernetes résiliente et évolutive, avec la gestion prise en charge par la
plateforme Azure.

Essayer maintenant
Pour voir les informations sur votre grappe AKS, procédez comme suit.

1 Ouvrez le portail Azure et sélectionnez l’icône Cloud Shell dans le menu du


haut.
2 Plus tôt dans le chapitre, vous avez créé une grappe Kubernetes. Le processus a
pris quelques minutes, mais heureusement, il est maintenant prêt! Regardez
l’état de la grappe ci-dessous :
az aks show \
--resource-group azuremolchapter19 \
--name azuremol
provisioningState doit indiquer Succeeded.
310 CHAPITRE 19 Conteneurs Azure

3 Si votre grappe est prête, obtenez un fichier d’informations d’identification


vous permettant d’utiliser les outils de ligne de commande Kubernetes pour
authentifier et gérer les ressources :
az aks get-credentials \
--resource-group azuremolchapter19 \
--name azuremol

C’est tout ce qu’il faut pour faire fonctionner Kubernetes dans Azure! Vous vous deman-
dez peut-être si vous pouvez simplement créer votre propre grappe avec des machines vir-
tuelles ou des jeux de mise à l’échelle, et installer manuellement les mêmes composants
Docker et Kubernetes. Oui, absolument. Le parallèle est l’approche IaaS et PaaS en
matière de machines virtuelles par rapport aux applications Web. L’approche d’applica-
tion Web offre de nombreux avantages : vous vous souciez uniquement des options de
configuration de haut niveau, puis vous téléversez votre code d’application. Une grappe
Kubernetes gérée, telle qu’offerte par AKS, réduit le niveau de complexité et de gestion –
votre priorité devient vos applications et votre expérience client.
Tout comme vous pouvez choisir les machines virtuelles au lieu des applications Web,
vous pouvez choisir de déployer votre propre grappe Kubernetes au lieu d’utiliser AKS.
C’est très bien, les deux approches finissent par utiliser les mêmes composants de services
Azure. Les machines virtuelles, les jeux de mise à l’échelle, les équilibreurs de charge et les
NSG sont tous des sujets que vous avez découverts dans les chapitres précédents, et sont
tous encore présents avec les grappes AKD, même si nous en faisons abstraction. Du point
de vue de la planification et du dépannage, vous devez avoir les compétences pour com-
prendre ce qui se passe en coulisses pour faire fonctionner l’offre Kubernetes gérée. Votre
niveau de confort et le temps que vous souhaitez consacrer à la gestion de l’infrastructure
vous aideront à orienter votre processus décisionnel au fur et à mesure que vous créez une
nouvelle application autour des conteneurs dans Azure.

19.3.2 Exécution d’un site Web de base dans Kubernetes


Vous avez créé une grappe Kubernetes dans la section précédente, mais aucune applica-
tion n’est en cours d’exécution. Changeons cela! Vous devez maintenant créer le déploie-
ment Kubernetes que vous avez vu plus tôt à la figure 19.8; voir la figure 19.9.

Azure Kubernetes Déploiement


Service Kubernetes

Hub Docker Grappe Kubernetes Service Kubernetes


Exécuon
iainfoulds: Équilibreur de charge
Nœud 1
azuremol Port TCP 80

Nœud 2

Pod 1

Pod 2

Figure 19.9 Une fois la grappe Kubernetes créée dans AKS, vous pouvez maintenant créer un
déploiement Kubernetes et exécuter votre application. Votre conteneur s’exécute sur les deux
nœuds, avec un pod logique sur chaque nœud; vous devez créer un service Kubernetes qui
expose un équilibreur de charge public pour acheminer le trafic vers votre application.
Azure Kubernetes Service 311

Essayer maintenant
Pour déployer une application sur votre grappe Kubernetes, procédez comme suit.

1 Vous interagissez avec une grappe Kubernetes à l’aide d’un utilitaire de ligne
de commande appelé kubectl. Utilisez la même image de conteneur iain-
foulds/azuremol de Docker Hub que vous avez exécutée en tant qu’instance de
conteneur :
kubectl run azuremol \
--image=docker.io/iainfoulds/azuremol:latest \
--port=80
2 Il faut environ une minute pour télécharger l’image de conteneur de Docker
Hub et lancer l’application dans Kubernetes. L’application s’exécute dans un
pod : une construction logique dans Kubernetes qui héberge chaque conteneur.
Les pods peuvent contenir des composants d’assistance supplémentaires, mais
pour l’instant, surveillez l’état de votre conteneur en regardant le pod :
kubectl get pods --watch

Même si l’état du pod indique qu’il est en cours d’exécution, vous ne pourrez pas accé-
der à votre application. L’instance de conteneur que vous avez créée précédemment peut
acheminer le trafic d’une adresse IP publique directement vers cette instance, mais que
pensez-vous qui est nécessaire pour qu’une grappe Kubernetes achemine le trafic vers les
conteneurs? Si vous avez deviné, « un équilibreur de charge », félicitations! En ce moment,
vous n’avez qu’un seul pod – une instance de conteneur unique. Vous mettez à l’échelle le
nombre de pods dans l’exercice pratique à la fin du chapitre, et pour que cela fonctionne,
il vous faut un moyen d’acheminer le trafic vers plusieurs instances. Donc, disons à Kuber-
netes d’utiliser un équilibreur de charge.
Voici où l’intégration entre Kubernetes et Azure devient intéressante. Lorsque vous
dites à Kubernetes que vous voulez créer un équilibreur de charge pour vos conteneurs,
sans que vous n’ayez à vous en préoccuper, Kubernetes remonte dans la plateforme Azure
et crée un équilibreur de charge Azure. Cet équilibreur de charge Azure est comme celui
que vous avez découvert au chapitre 8. Il y a des lots IP frontaux et dorsaux et des règles
d’équilibrage de charge, et vous pouvez configurer des sondes d’intégrité. À mesure que
votre déploiement Kubernetes est mis à l’échelle, l’équilibreur de charge est automatique-
ment mis à jour au besoin.
3 Pour exposer votre application, dites à Kubernetes que vous voulez utiliser un
équilibreur de charge. Ajoutez une règle pour distribuer le trafic sur le port 80 :
kubectl expose deployment/azuremol \
--type="LoadBalancer" \
--port 80
4 Comme précédemment, regardez l’état de votre déploiement de service :
kubectl get service azuremol --watch
5 Une fois que l’adresse IP publique est attribuée, cela signifie que l’équilibreur
de charge Azure a terminé le déploiement, et que la grappe et les nœuds
Kubernetes sont connectés. Ouvrez l’adresse IP publique de votre service dans
un navigateur Web pour voir votre application Web s’exécuter.
312 CHAPITRE 19 Conteneurs Azure

Les déploiements d’applications dans Kubernetes sont souvent beaucoup plus impli-
qués que dans cet exemple de base. Vous définissez généralement un manifeste de ser-
vice, semblable à un modèle de gestionnaire de ressources, qui détermine toutes les
caractéristiques de votre application. Ces propriétés peuvent inclure le nombre d’ins-
tances de votre application à exécuter, le stockage à attacher, les méthodes d’équi-
librage de charge, les ports réseau à utiliser et ainsi de suite. Ce qui est génial avec AKS,
c’est que vous n’avez pas à vous soucier de l’installation et de la configuration de
Kubernetes. Comme pour les autres services PaaS comme les applications Web et Cos-
mos DB, vous apportez vos applications et laissez la plateforme Azure gérer l’infrastruc-
ture sous-jacente et la redondance.

Faire le ménage
N’oubliez pas de nettoyer et de supprimer vos groupes de ressources afin de ne pas finir
par consommer beaucoup de vos crédits Azure gratuits. Tandis que vous commencez à
explorer les conteneurs, il devient encore plus important de prêter attention aux res-
sources Azure que vous laissez activées. Une seule application Web ne coûte pas cher,
mais une grappe AKS à cinq nœuds et quelques instances de conteneurs avec des
images de registre de conteneur Azure géorépliquées peut certainement être onéreuse!
Les instances ACI sont facturées à la seconde, et les coûts s’additionnent rapidement si
on les laisse s’exécuter pendant des jours ou des semaines. Une grappe AKS exécute
une machine virtuelle pour chaque nœud, donc si vous effectuez une mise à l’échelle et
exécutez de nombreuses machines virtuelles dans votre grappe, vous payez une machine
virtuelle dans chaque nœud.
Il n’y a aucuns frais pour le nombre de conteneurs exécutés par chacun de ces nœuds
AKS, mais comme pour toute machine virtuelle, un nœud AKD devient dispendieux
lorsqu’on le laisse s’exécuter. Ce qui est extraordinaire avec Kubernetes, c’est que vous
pouvez exporter vos configurations de service (la définition pour vos pods, les équilibreurs
de charge, la mise à l’échelle automatique et ainsi de suite) pour les déployer ailleurs.
Lorsque vous créez et testez vos applications, il n’est pas nécessaire de laisser une
grappe AKS s’exécuter – vous pouvez déployer une grappe au besoin et déployer votre
service à partir d’une configuration précédente.
Cela a également été une introduction très rapide aux conteneurs et à Kubernetes, alors
ne vous inquiétez pas si vous vous sentez un peu dépassé en ce moment! Manning a éga-
lement plusieurs excellents livres pouvant vous aider à explorer plus en profondeur Doc-
ker, le développement d’application de microservices et Kubernetes. Consultez-les si ce
chapitre vous semble très intéressant et que vous voulez explorer davantage!

19.4 Exercice pratique : mise à l’échelle de vos déploiements Kubernetes


Dans l’exemple de base de ce chapitre, nous avons créé une grappe Kubernetes à deux
nœuds et un pod unique qui exécute votre site Web. Dans cet exercice pratique, vous allez
explorer comment vous pouvez mettre à l’échelle la grappe et le nombre d’instances de
conteneurs :
1 Vous pouvez voir combien de nœuds se trouvent dans votre grappe Kubernetes
avec kubectl get nodes. Mettez à l’échelle votre grappe en le portant à trois
nœuds :
az aks scale \
--resource-group azuremolchapter19 \
--name azuremol \
--node-count 3
Exercice pratique : mise à l’échelle de vos déploiements Kubernetes 313

2 Il faut une minute ou deux pour effectuer la mise à l’échelle et ajouter le nœud
supplémentaire. Utilisez kubectl de nouveau pour voir l’état de vos nœuds.
Regardez votre déploiement actuel avec kubectl get deployment azuremol.
Une seule instance a été créée précédemment. Passez jusqu’à cinq instances ou
répliques :
kubectl scale deployment azuremol --replicas 5
3 Utilisez kubectl de nouveau pour examiner le déploiement. Regardez les pods,
les instances de conteneurs en cours d’exécution, avec kubectl get pods. En
quelques secondes, toutes ces répliques supplémentaires ont été lancées et
connectées à l’équilibreur de charge.
Azure et l’Internet des objets

Selon moi, l’un des domaines les plus excitants de la technologie au cours des der-
nières années a été l’Internet des choses (IdO). À mon avis, il n’est pas encore néces-
saire de connecter un lave-vaisselle ou un réfrigérateur à Internet, et il y a des
préoccupations légitimes quant à la confidentialité d’un appareil de télévision ou
audio qui est connecté en permanence à Internet et qui est constamment à l’écoute du
son de votre voix pour émettre une commande. Il existe, cependant, beaucoup d’appli-
cations pratiques pour les appareils IdO. Vous pourriez obtenir un rapport d’équipe-
ment de fabrication sur l’état de santé de celui-ci, générer des alertes de maintenance,
et permettre aux opérateurs de comprendre son efficacité dans plusieurs usines situées
partout dans le monde. Une entreprise de camionnage pourrait diffuser la télémétrie
de ses véhicules en ce qui a trait aux charges transportées et au temps moyen de
conduite, et être en mesure de rediriger plus intelligemment les conducteurs au
besoin. Les compagnies maritimes peuvent suivre chaque conteneur et aider leurs
clients à mieux gérer leur chaîne d’approvisionnement en sachant où se trouvent leurs
ressources.
Dans Azure, vous pouvez intégrer des appareils IdO avec une gamme de services.
Azure Web Apps peut fournir une interface pour que vos données soient visualisées, le
stockage peut être utilisé pour enregistrer des données diffusées en continu à partir
d’appareils, et les fonctions sans serveur comme Azure Logic Apps (dont il est question
dans le chapitre suivant et le dernier chapitre) peuvent traiter les données reçues. Dans
ce chapitre, nous examinons ce qu’est l’IdO et comment utiliser Azure IoT Hub pour
gérer et collecter de façon centralisée des données à partir d’appareils. Vous voyez
ensuite comment utiliser une application Web Azure pour afficher des données en
temps réel à partir d’un appareil IdO.

314
Qu’est-ce que l’Internet des objets? 315

20.1 Qu’est-ce que l’Internet des objets?


L’intérêt que suscite l’Internet des objets (IdO) a considérablement augmenté au cours
des dernières années, mais il s’agit là d’un terme vague qui peut s’appliquer à beaucoup
de scénarios différents. De façon sommaire, l’IdO est une approche par laquelle de nom-
breux appareils interconnectés, généralement de petits appareils électroniques peu coû-
teux, se relient aux systèmes centraux et aux applications. Les appareils connectés
signalent habituellement les informations qu’ils recueillent de capteurs connexes ou
d’entrées. Ces informations peuvent ensuite être traitées par un système central (avec, par
exemple, une technologie d’intelligence artificielle ou d’apprentissage automatique
comme discuté au chapitre 17) qui prend les mesures appropriées. La figure 20.1 montre
une approche de haut niveau à l’égard de l’IdO.
Les messages sont envoyés
entre les appareils IdO et le
Appareil IdO
système central.

Appareil IdO
Système Applicaons
central et services
Les données collectées des
Appareil IdO appareils IdO sont traitées, et
les instrucons peuvent être
renvoyées à des appareils ou
à d’autres systèmes.
Figure 20.1 Les messages sont envoyés entre de nombreux appareils IdO et un système central.
Vos applications et services peuvent ensuite traiter les données reçues et envoyer des instructions
sur les appareils pour effectuer des mesures supplémentaires en réponse aux données qu’ils ont
collectées.

Voici quelques exemples de l’intelligence artificielle en action :


 Garage— un petit capteur placé au-dessus de chaque espace de stationnement détecte si
un véhicule y est garé. Un témoin au-dessus de chaque espace peut ensuite s’allumer en
vert si l’espace de stationnement est vide, ou en rouge s’il est occupé. Les conducteurs
qui entrent dans le garage peuvent voir des panneaux d’information en temps réel à
chaque étage indiquant combien d’espaces de stationnement sont disponibles. Les
lumières rouge et verte placées au-dessus de chaque espace aident les conducteurs à
trouver rapidement l’endroit où se trouvent les espaces libres le long de chaque allée.
 Usine— les machines d’un atelier peuvent transmettre des informations sur les résultats
d’exploitation, les niveaux des consommables et les besoins d’entretien. Un système
central peut ensuite planifier la venue d’un mécanicien d’entretien pour réparer de
façon proactive l’équipement ou pour assurer le réapprovisionnement des consom-
mables, ce qui réduit les temps d’arrêt de la chaîne de production. Lorsqu’ils sont com-
binés avec l’intelligence artificielle ou l’apprentissage automatique, les programmes de
maintenance peuvent être prévus, et la quantité appropriée de fournitures ou de
matières premières peut être livrée juste avant qu’elles soient nécessaires dans le cadre
de la production.
 Transport— les autobus ou les trains de transport public peuvent comporter des cap-
teurs GPS qui indiquent l’emplacement et la vitesse. Des informations sur les billets
peuvent également être collectées pour établir un rapport du nombre de personnes qui
utilisent le transport public. Des panneaux d’information pour les passagers placés dans
une gare ou un terminus d’autobus peuvent fournir des informations en temps réel
pour indiquer l’arrivée de chaque véhicule. Lorsqu’ils sont combinés avec l’intelligence
artificielle et l’apprentissage automatique, cela signifie que les passagers en attente
peuvent recevoir des suggestions quant à des itinéraires alternatifs en fonction des
conditions de la circulation, des retards ou du volume élevé de passagers.
316 CHAPITRE 20 Azure et l’Internet des objets

L’IdO fonctionne souvent de concert avec d’autres applications et services. Les scénarios tou-
chant les usines et le transport pourraient avoir recours à l’intelligence artificielle et à l’appren-
tissage automatique pour mieux appuyer les décisions en matière de production ou
transmettre des suggestions aux passagers. Les applications Web peuvent utiliser les informa-
tions reçues des appareils IdO pour fournir un accès à partir d’appareils mobiles ou générer
des alertes et des notifications. Les données reçues des appareils IdO peuvent être consignées
dans un système de base de données comme Cosmos DB; ces données sont ensuite traitées par
des applications de veille stratégique et le système génère des rapports.
Parmi les idées plus d’avant-garde en lien à l’IdO, imaginons, par exemple, que votre réfri-
gérateur puisse détecter la quantité des aliments qu’il contient pour créer une liste d’épicerie,
ou même commander de la nourriture d’une épicerie locale. Votre voiture pourrait trans-
mettre des données au concessionnaire pour ainsi faire en sorte que les pièces ou les consom-
mables requis soient prêts lorsque vous amenez le véhicule pour une réparation. Et si lorsque
votre alarme sonne pour vous réveiller le matin, votre cafetière se mettait en marche pour être
prête pour votre petit déjeuner?
Un grand sujet de préoccupation concernant l’IdO est la sécurité des appareils. Compte
tenu du grand nombre d’appareils fonctionnant en dehors de votre infrastructure réseau prin-
cipale et du fait que ceux-ci sont souvent connectés au réseau Internet public, la configuration,
la gestion et la mise à jour de ces appareils représentent un défi. Beaucoup d’appareils IdO
sont des dispositifs simples et à faible consommation d’énergie. Il est possible que ceux-ci ne
soient pas dotés des capacités de stockage ou de traitement nécessaires pour se mettre à niveau
en fonction des mises à jour de sécurité et d’application, comme il est possible de le faire avec
un ordinateur de bureau ou un ordinateur portable traditionnel. Il ne suffit pas de déployer un
grand nombre d’appareils IdO, plus particulièrement des appareils pour consommateur, sans
se munir d’un plan permettant de les sécuriser adéquatement et de fournir des mises à jour et
de maintenance.
Ces problèmes liés à la sécurité ne devraient pas vous empêcher de concevoir des applica-
tions et des services qui utilisent des appareils IdO. L’IdO apporte une nouvelle série de défis
touchant la maintenance traditionnelle des appareils, mais il existe des solutions qui vous per-
mettent de mettre en service et de gérer les appareils de manière centralisée et de sécuriser la
communication des appareils. Je suis certain que vous avez maintenant deviné qu’Azure pro-
cure une telle solution IdO! Cette solution offre une gamme de services IdO; voyons donc
comment vous pouvez commencer à explorer l’IdO avec Azure.

Accélérer vos déploiements Azure IoT


Ce chapitre porte sur Azure IoT Hub, un service qui vous permet de configurer et de
connecter des appareils IdO pour concevoir vos propres solutions. Vous pouvez définir
comment ces appareils IdO se connectent, les utilisateurs ou les applications pouvant
accéder aux données, et comment sécuriser la connectivité. Il n’en tient qu’à vous de
déterminer comment concevoir et déployer l’infrastructure d’applications pour relier le
tout en un ensemble.
Les accélérateurs de solutions Azure IoT sont des scénarios clés prédéfinis. On pense par
exemple à la surveillance à distance d’appareils ou à une usine connectée. Les accéléra-
teurs déploient des services Azure courants tels que IoT Hub, les applications Web, Cos-
mos DB et le stockage, et exécutent un exemple d’application qui intègre tous ces
différents services.
Il vous faut quand même personnaliser l’application pour votre environnement, les appa-
reils IdO en cours d’utilisation, et les données à collecter et à surveiller, mais les accélé-
rateurs de solutions IdO vous donnent une belle infrastructure pour commencer. Alors que
IoT Hub vous donne la possibilité de connecter des appareils IdO à Azure et vous laisse
ensuite déployer les services supplémentaires dont vous avez besoin, les accélérateurs
de solutions IdO déploient des solutions préconfigurées qui se servent des services Azure
les plus courants que vous pourriez utiliser.
Gérer les appareils de manière centralisée avec Azure IoT Hub 317

Si vous réalisez après la lecture de ce chapitre que vous ne pouvez plus vous passer de
l’IdO, les accélérateurs de solutions Azure IoT sont un excellent moyen de découvrir les
possibilités qu’offre Azure. Comme nous l’avons mentionné tout au long de cet ouvrage,
Azure est beaucoup plus qu’un ou deux services indépendants. Il existe de nombreux ser-
vices que vous pouvez déployer ensemble pour offrir aux clients la meilleure expérience
possible en matière d’application.

20.2 Gérer les appareils de manière centralisée avec Azure IoT Hub
Azure IoT Hub vous permet de gérer, de mettre à jour et de diffuser des données à partir
d’appareils IdO. Grâce à ce service, vous pouvez effectuer des actions telles que la configu-
ration d’itinéraires d’application pour les données reçues des appareils, la mise en service
et la gestion de certificats pour sécuriser la communication, et la surveillance de la santé à
l’aide des diagnostics et des indicateurs Azure. Vous pouvez connecter vos appareils IdO à
d’autres services et applications Azure pour leur permettre d’envoyer et de recevoir des
données dans le cadre d’une solution plus vaste. Comme pour tout ce qui concerne
Azure, l’accès peut être contrôlé au moyen de RBAC, et les données de diagnostic
peuvent être collectées de manière centralisée pour le dépannage et la surveillance ou les
alertes. La figure 20.2 montre comment un hub IdO agit comme point central des appa-
reils IdO pour se connecteur aux applications et aux services étendus Azure.
Suivre la configuraon, Approvisionnement Acheminer les
l’état et les métadonnées automaque d’appareils messages vers d’autres
Stockage
services Azure en vue
Approvi- Azure
Jumeaux d’un traitement ou
d’appareil sionnement
d’appareils d’une analyse
Azure Azure Web
Appareil IdO
Service Bus Apps
Appareil IdO
Azure IoT
Hub
Appareil IdO Azure Event Azure Logic
Messages depuis l’appareil vers Grid Apps
le nuage et le nuage vers
Surveiller,
l’appareil pour recevoir et
dépanner et alerter
envoyer des données
des situaons
problémaques
Figure 20.2 Avec un hub IdO, vous pouvez mettre en service et gérer de manière centralisée
beaucoup d’appareils IdO à l’échelle. On retrouve une communication bidirectionnelle entre les
appareils et Azure pour lire et écrire des données. Vous pouvez traiter les données reçues des
appareils et les acheminer vers d’autres services Azure, comme les applications Web et le stockage.
Pour surveiller et résoudre les problèmes, vous pouvez acheminer les informations vers Azure Event
Grid (que nous examinerons au prochain chapitre), et faire un lien avec d’autres solutions de
surveillance.

Vous contrôlez l’accès à un hub IdO avec des stratégies d’accès partagé. Ces stratégies sont
comme des autorisations et des comptes d’utilisateurs. Il existe des stratégies par défaut
qui permettent aux appareils et aux services de se connecter au hub IdO, ou de lire et
d’écrire des informations à partir du registre des appareils qui fait le suivi des appareils
IdO connectés et des clés de sécurité.
318 CHAPITRE 20 Azure et l’Internet des objets

Une ou plusieurs des autorisations suivantes peuvent être attribuées à chacune des
stratégies :
 Lecture du registre
 Écriture du registre
 Connexion de service
 Connexion d’appareil
Les clés d’accès partagé sont utilisées par les applications et services pour se connecter à un
hub IdO. Comme pour le stockage, dont il a été question au chapitre 4, les clés d’accès partagé
vous permettent de définir des chaînes de connexion pour identifier l’hôte, la stratégie d’accès
et la clé d’accès. Une chaîne de connexion regroupe la clé d’accès, le type de stratégie d’accès
et le nom d’hôte du hub IdO. Voici un exemple de chaîne de connexion du hub IdO :
HostName=azuremol.azure-devices.net;SharedAccessKeyName=registryRead;
SharedAccessKey=6be2mXBVN9B+UkoPUMuwVDtR+7NZVBq+C7A1xCmQGAb=
Il existe des clés principales et secondaires, lesquelles peuvent être alternées et mises à
jour pour des raisons de sécurité, tout comme c’est le cas pour les mises à jour des mots de
passe qui sont faites de façon régulière. Les solutions comme Azure Key Vault, présentées
au chapitre 15, sont d’excellentes façons de faire le suivi et de stocker ces clés en vue de
l’obtention d’applications au besoin. Cette approche de la gestion des clés signifie que
vous pouvez fréquemment alterner les clés d’accès sans avoir également à mettre à jour
l’ensemble de votre code d’application.
Les certificats numériques peuvent être stockés dans un hub IdO et être automatiquement
mis en service sur des appareils IdO. N’oubliez pas, les appareils IdO sont souvent hors de votre
infrastructure principale et ils peuvent se connecter directement sur Internet sans avoir recours
à une connexion réseau sécurisée comme un VPN. Assurez-vous que toutes les données entre
vos appareils et le hub IdO sont chiffrées. Azure Key Vault peut générer et stocker des certificats
SSL qui sont ensuite ajoutés au hub IdO. Vous pouvez aussi utiliser une autorité de certification
existante pour demander et délivrer des certificats. Ce qui importe est de s’assurer que, dans la
mesure du possible, toutes les communications entre vos appareils IdO et Azure sont chiffrées.
Les itinéraires du hub IdO vous permettent d’envoyer des données à partir des appa-
reils IdO vers d’autres services Azure. Vous pouvez définir des critères, comme le contenu
du message comportant un mot-clé donné ou une valeur donnée, puis envoyer les mes-
sages à stocker dans Azure Storage ou à traiter par une application Web. Dans l’un des
exercices suivants, vous simulez un capteur de température de base connecté à un appa-
reil IdO. Vous pouvez définir un itinéraire dans le hub IdO pour observer les données
entrantes et, si la température enregistrée dépasse 100 °F, acheminer les données vers une
application logique pour envoyer une alerte par courriel. Nous allons discuter du monde
merveilleux de l’informatique sans serveur et des applications logiques dans le prochain
chapitre!

Vivre dangereusement
Dans ce chapitre, nous mettrons l’accent sur Azure IoT Hub. Un autre service, Azure IoT
Edge, vous permet d’exécuter certains services comme les Azure Functions et Stream
Analytics dans votre environnement local. Au lieu que tous vos appareils IdOT diffusent
en continu des données à traiter de manière centralisée dans Azure, vous pouvez traiter
les données depuis chaque emplacement.
Azure IoT Edge exécute des applications et des services dans des conteneurs, comme nous
l’avons vu au chapitre 19. L’utilisation de conteneurs rend IoT Edge portable et cohérent du
point de vue fonctionnel sur différents appareils et environnements. Les services Azure pré-
définis peuvent être déployés, ou vous pouvez écrire vos propres applications et les distri-
buer aux emplacements en périphérie.
Gérer les appareils de manière centralisée avec Azure IoT Hub 319

Le principal avantage qu’offre IoT Edge est de vous permettre de simplifier une partie du
traitement des données et des transferts de données réseau. Si vous pouvez traiter des
données localement dans IoT Edge, il vous est possible de regrouper un grand jeu de don-
nées en morceaux et de les renvoyer à Azure. Les applications centrales peuvent ensuite
regrouper les informations provenant d’autres emplacements de périphérie qui doivent
être traitées par des services comme l’intelligence artificielle et l’apprentissage automa-
tique.
Un autre scénario intéressant pour Azure IoT Edge touche les emplacements distants, que
l’on trouve souvent dans les entreprises pétrolières et gazières et de transport, où la
connectivité Internet peut ne pas être suffisamment fiable pour toutes les données de
l’appareil IdO à diffuser sur Azure en vue d’un traitement central. IoT Edge permet à ces
emplacements éloignés de continuer à fonctionner avec une certaine autonomie, même
lorsqu’il n’y a pas de connexion Internet.
Lorsque vous planifiez une infrastructure d’applications qui implique des appareils IdO,
examinez la façon dont vous gérez les pannes de réseau et les mauvaises qualités de
connexions Internet. Si votre environnement repose sur Internet, prévoyez des connexions
Internet redondantes et un équipement pouvant acheminer les données. Ou utilisez
IoT Edge pour traiter les données localement lorsque cela ne peut être fait dans Azure.

Essayer maintenant
Pour débuter avec l’IdO et créer un hub IdO, effectuez les étapes suivantes.

1 Ouvrez le portail Azure, puis lancez Cloud Shell. Créez un groupe de res-
sources, comme azuremolchapter20 :
az group create --name azuremolchapter20 --location eastus
2 Créez un hub IdO. Entrez un nom, par exemple azuremol. Pour ces exercices,
vous pouvez utiliser un niveau gratuit du hub IdO, f1 :
az iot hub create \
--resource-group azuremolchapter20 \
--name azuremol \
--sku f1

REMARQUE Vous ne pouvez créer qu’un seul niveau gratuit de hub par abon-
nement, mais il est excellent pour tester la communication entre les appareils
et l’intégration avec d’autres services Azure. Le niveau gratuit du hub est
actuellement limité à 8 000 messages par jour. Cela peut sembler beaucoup,
mais en fonction de l’utilisation que vous en faites, un seul appareil qui
envoie un message au hub IdO à environ toutes les 12 secondes pourrait
atteindre cette limite de 8 000 messages!
3 Vous avez beaucoup travaillé à l’aide de l’interface de ligne de commande
(CLI) Azure dans cet ouvrage parce que les commandes Cloud Shell et CLI per-
mettent de créer et de gérer rapidement des ressources. Comme mentionné
dans les chapitres précédents, l’interface de ligne de commande Azure peut
également utiliser des modules supplémentaires, appelés extensions. Ces exten-
sions ajoutent plus de fonctionnalités et sont souvent mises à jour en dehors du
cycle de lancement habituel de l’interface de ligne de commande principale
Azure. Azure IoT prend rapidement de l’expansion et ajoute de nouvelles fonc-
320 CHAPITRE 20 Azure et l’Internet des objets

tions; ainsi, les commandes principales permettant d’interagir avec le hub IdO
proviennent d’une extension d’interface de ligne de commande Azure.
Pour obtenir toutes les fonctionnalités dont vous avez besoin pour les pro-
chains exercices, installez l’extension IdO de l’interface de ligne de commande
Azure :
az extension add --name azure-cli-iot-ext

Votre hub IdO est passablement vide en ce moment. Il n’y a pas grand-chose que vous
puissiez faire avec celui-ci sans qu’au moins un appareil IdO soit connecté. Un dispositif
couramment utilisé pour l’IdO porte le nom de Raspberry Pi. Il s’agit d’un mini-ordina-
teur à faible coût qui peut se connecter à des réseaux Wi-Fi et utiliser des capteurs com-
merciaux courants pour la température, l’humidité et la pression. Vous pouvez également
l’utiliser pour contrôler les petits moteurs, les lumières et les minuteurs. Il n’est quand
même pas nécessaire de se précipiter pour aller acheter un Raspberry Pi; vous pouvez en
simuler un dans votre navigateur Web!

20.2.1 Créer un appareil Raspberry Pi simulé


Les appareils IdO sont bons, mais un obstacle se pose du fait que vous devez utiliser un
appareil réel, n’est-ce pas? Pas tout à fait! Il y a plusieurs façons de simuler un appareil IdO
à l’aide d’un logiciel. Cette approche logicielle vous permet de vous concentrer sur la
création rapide de votre application, et de passer par la suite à un matériel réel. Vous
devez toujours faire attention à la façon dont s’exécute votre code sur un matériel IdO
réel, plus particulièrement pour ce qui touche les appareils à faible consommation
d’énergie, car il est possible qu’ils n’aient pas accès à toutes les bibliothèques requises, ou
même aux ressources de mémoire, qu’exécute votre application simulée.
Microsoft fournit un simulateur Raspberry Pi gratuit par GitHub à l’adresse
https://azure-samples.github.io/raspberry-pi-web-simulator. Un capteur BME280 cou-
rant qui recueille des relevés de température et d’humidité est simulé dans le logiciel, avec
une DEL simulée pour montrer quand l’appareil transmet des données au hub IdO. La
personnalisation de l’appareil est limitée, mais celui-ci vous permet de voir comment une
application de base Node.js peut s’exécuter sur Raspberry Pi, de recueillir des données
d’un capteur et de les renvoyer à Azure.
REMARQUE Si des choses comme Raspberry Pi, les dispositifs électroniques,
les capteurs de température et Node.js semblent compliquées, ne vous inquié-
tez pas. Comme ce fut le cas pour les chapitres sur l’intelligence artificielle et
l’apprentissage automatique, les conteneurs et Kubernetes, nous n’analyse-
rons pas à fond les appareils IdO et leur programmation. Si, d’ici la fin de ce
chapitre, vous désirez retrousser vos manches et jouer au technophile en vous
attaquant aux dispositifs électroniques, vous êtes tout à fait le bienvenu!

Avant de pouvoir utiliser le simulateur Raspberry Pi, vous devez créer une affectation
d’appareils dans Azure IoT Hub. Ce processus établit un identifiant d’appareil unique
afin que votre hub IdO comprenne avec quel appareil il communique et comment traiter
les données. Dans des scénarios plus complexes, vous pourriez configurer des paramètres
supplémentaires pour l’appareil et mettre l’accent sur les certificats numériques. Pour réa-
liser cet exercice, il vous suffit de créer une identité d’appareil.
Gérer les appareils de manière centralisée avec Azure IoT Hub 321

Essayer maintenant
Pour créer un appareil IdO Raspberry Pi, effectuez les étapes suivantes.

1 Dans Azure Cloud Shell, créez une identité d’appareil dans votre hub IdO,
comme azuremol. Donnez un nom à l’appareil, par exemple raspberrypi :
az iot hub device-identity create \
--hub-name azuremol \
--device-id raspberrypi
2 Vous rappelez-vous des stratégies d’accès partagé de la section précédente?
Chaque appareil IdO dispose également de sa propre clé d’accès et de sa
chaîne de connexion qui sont utilisées pour déterminer l’appareil lorsqu’il
communique avec le hub IdO. Pour utiliser votre appareil avec le simulateur
Raspberry Pi, vous devez avoir les informations concernant la chaîne de
connexion de l’appareil. Cet identificateur unique comporte le nom d’hôte de
votre Hub IdO, l’identifiant de l’appareil et une clé d’accès :
az iot hub device-identity show-connection-string \
--hub-name azuremol \
--device-id raspberrypi \
--output tsv
3 Copiez le contenu de votre chaîne de connexion; vous en aurez besoin à l’étape
suivante. La sortie est similaire à ce qui suit :
HostName=azuremol.azure-devices.net;DeviceId=raspberrypi;
 SharedAccessKey=oXVvK40qYYI3M4u6ZLxoyR/PUKV7A7RF/JR9WcsRYSI=
4 Voyons à présent la partie amusante! Ouvrez le simulateur Raspberry Pi dans
votre navigateur Web : https://azure-samples.github.io/raspberry-pi-web-simu-
lator. Regardez la section de code, à droite, dans le simulateur. Aux environs de
la ligne 15, il devrait se trouver une variable connectionString, qui vous invite
déjà à donner [votre chaîne de connexion hub IdO]. Copiez et collez votre chaîne
de connexion récupérée à l’étape précédente, comme illustré à la figure 20.3.
5 Sélectionnez le bouton Exécuter qui se trouve juste en dessous de la fenêtre de
code pour lancer le simulateur. Toutes les 2 secondes, la fenêtre de console
affiche un message qui indique les données envoyées au hub IdO. La DEL
rouge sur le schéma de circuits clignote également lorsque cela se produit,
pour simuler la façon dont les sorties connectées au simulateur Raspberry Pi
peuvent être contrôlées. Le message de sortie dans la fenêtre de console res-
semble à ce qui suit :
Sending message: {"messageId":1,"deviceId":"Raspberry Pi Web
Client","temperature":24.207095037347923,
"humidity":69.12946775681091}
D’où provenaient les relevés de température et d’humidité? Cet appareil est un
Raspberry Pi simulé, et il n’y a pas de capteur BME280 réel, de sorte que l’appli-
cation génère ces valeurs dans le logiciel. Si vous observez le reste du code dans
RU 651 4216

la fenêtre de simulateur, aux environs de la ligne 99, l’application définit le cap-


teur. Le simulateur réplique ensuite la réaction du véritable capteur, et génère
des données provenant du capteur vers l’application. Il ne s’agit que d’un
exemple de base, alors pensez à d’autres choses que vous pourriez lire ici : le
régime d’un moteur (tr/min), les coordonnées GPS d’un conteneur d’expédi-
322 CHAPITRE 20 Azure et l’Internet des objets

Figure 20.3 Copiez et collez la chaîne de connexion de votre appareil IdO Azure dans le simulateur
Raspberry Pi. La variable connectionString est utilisée pour se connecter et transmettre les données
du capteur simulé à Azure.

tion ou d’un camion, et ainsi de suite. C’est ici que l’on constate un équilibre
entre la simulation d’un appareil dans un logiciel et la conception d’une appli-
cation fonctionnelle avec du véritable matériel et des données de capteur
réelles. À un moment donné, il vous faudra acheter ou emprunter de l’équipe-
ment si vous désirez explorer Azure IoT de façon plus détaillée.
6 Pour confirmer que vos messages d’appareil simulé sont reçus par le hub IdO,
examinez l’état du quota. Fournissez le nom de votre hub IdO, par exemple
azuremol :
az ido afficher-métriques-quota --nom azuremol
Le résultat est semblable à l’exemple suivant, qui montre que 5 messages sur le
maximum de 8 000 messages par jour ont été reçus, et qu’il y a 1 appareil
connecté sur le total maximum de 500 appareils. Remplir ces métriques peut
prendre quelques minutes, ne vous inquiétez donc pas si vous ne voyez pas
immédiatement les données :
Diffuser en continu les données Azure IoT Hub dans les applications Web Azure 323

[
{
"currentValue": 5,
"maxValue": 8000,
"name": "TotalMessages"
},
{
"currentValue": 1,
"maxValue": 500,
"name": "TotalDeviceCount"
}
]
Vous pouvez également consulter le portail Azure : choisissez votre groupe de
ressources, puis sélectionnez votre hub IdO. Dans la page Vue d’ensemble,
l’affichage de l’utilisation indique le nombre de messages reçus et d’appareils
connectés. Une fois de plus, l’affichage des messages et leur enregistrement par
rapport au quota peut prendre une ou deux minutes. Toutes les applications
devraient être en mesure d’utiliser immédiatement les messages reçus, comme
nous le verrons dans la prochaine section.

Tout n’est pas au beau fixe


Si vous ne recevez aucun message dans votre hub IdO, vérifiez la fenêtre de sortie de
votre appareil Raspberry Pi simulé. L’une des premières choses que fait l’application est
de se connecter à Azure IoT Hub. Une erreur de connexion s’affiche si votre chaîne de
connexion est erronée. Assurez-vous de copier et coller correctement la chaîne de
connexion en entier. La chaîne de connexion commence avec le nom d’hôte, et le dernier
caractère de chaque clé d’accès est toujours un signe égal (=).
Si la fenêtre de sortie signale une erreur, copiez le texte d’erreur dans votre moteur de
recherche favori et recherchez un résultat correspondant. Assurez-vous que vous n’avez
pas changé les autres lignes de code, ce qui pourrait causer un problème! La seule chose
que vous devez changer dans la fenêtre de code est la ligne de votre chaîne de connexion.
Étant donné que l’appareil Raspberry Pi simulé est exécuté dans un navigateur Web, vous
pourriez avoir un problème de site Web générique. Essayez d’actualiser la page ou d’accé-
der au simulateur dans un autre navigateur (https://azure-samples.github.io/raspberry-
pi-web-simulator).

20.3 Diffuser en continu les données Azure IoT Hub dans les
applications Web Azure
Un appareil qui se connecte à un hub IdO n’est pas utile si vous ne pouvez rien faire avec
les données. C’est ici que vous pouvez commencer à intégrer plusieurs des services et des
fonctions que vous avez appris dans cet ouvrage. Vous souhaitez diffuser en continu vers
des tables ou des files d’attente Azure Storage? Vous pouvez le faire. Vous désirez traiter
des données à partir d’appareils IdO dans des conteneurs ou des machines virtuelles
Azure? Allez-y! Utilisez Azure Cosmos DB pour reproduire vos données, puis accédez à
celles-ci avec des applications Web Azure globalement redondantes et avec Traffic Mana-
ger. Certainement!
Dans l’exemple de scénario, le hub IdO est le mécanisme de connexion et le point
d’entrée de vos appareils IdO dans Azure. Le hub en soi ne fait rien directement avec les
données. Il existe un point de terminaison par défaut pour des événements; il s’agit d’un
324 CHAPITRE 20 Azure et l’Internet des objets

grand réservoir pour tous les messages reçus de l’appareil IdO. Votre appareil
Raspberry Pi simulé envoie des messages au hub IdO, qui atteignent le point de terminai-
son de ces événements. Le flux de messages provenant d’appareils et passant par le hub
IdO pour se rendre à un point de terminaison est illustré à la figure 20.4.
Les messages sont envoyés par des
appareils IdO vers Azure IoTHub.
Appareil IdO

Appareil IdO
Azure IoT Point de
Hub Les messages sont
terminaison
Appareil IdO
envoyés à un point de
terminaison défini.

Figure 20.4 Un hub IdO reçoit des messages des appareils IdO connectés et envoie les messages
à un point de terminaison. Ces points de terminaison peuvent être employés par d’autres services
Azure pour utiliser des données provenant d’appareils IdO. Il existe un point de terminaison par
défaut pour les événements, et des services comme les applications Web peuvent y être lus.

Vous pouvez créer des points de terminaison personnalisés qui acheminent les messages
directement vers les services Azure comme Storage et Service Bus. Dans le chapitre 4,
nous nous sommes intéressés aux files d’attente Azure Storage comme moyen pour
échanger des messages entre les applications. Azure Service Bus est une plateforme de
messagerie d’entreprise plus robuste et évolutive. Les messages peuvent être ajoutés au
service bus, comme les données reçues des appareils IdO, et d’autres applications peuvent
ensuite écouter ces messages et y répondre en conséquence.
Si vous n’avez pas besoin de la complexité entourant la lecture de messages provenant
d’une file d’attente de messages comme un service bus, vous pouvez utiliser des groupes
de consommateurs avec le point de terminaison d’événements par défaut. Un groupe de
consommateurs permet à des services comme Azure Web Apps de lire les données prove-
nant du point de terminaison, comme il est illustré à la figure 20.5.

Messages envoyés depuis des appareils IdO par événements


Azure IoT Hub vers un point de terminaison
Appareil IdO msg msg
Appareil IdO
Azure IoT Point de msg msg
Hub terminaison
Appareil IdO Groupe de
Web Apps
consommateurs

Un groupe de consommateurs permet à d’autres


services tels qu’Azure Web Apps d’accéder aux
messages reçus par un point de terminaison.
Figure 20.5 Les messages sont envoyés des appareils IdO vers le hub IdO, qui dirige ensuite les messages vers
un point de terminaison. Dans chaque point de terminaison, des groupes de consommateurs peuvent être créés.
Ces groupes de consommateurs permettent à d’autres services Azure d’accéder aux messages de l’appareil,
auxquels ils n’auraient autrement pas accès. Grâce aux groupes de consommateurs, vous n’avez pas besoin
d’utiliser des files d’attente de messages pour permettre aux applications externes de lire les données de
l’appareil IdO.

Concevons une application Web Azure qui utilise un groupe de consommateurs pour lire
les données de message en temps réel à partir de votre appareil Raspberry Pi simulé. Cet
exemple de base montre comment vous pouvez diffuser des données en continu à partir
d’appareils IdO et y accéder par des applications Web.
Diffuser en continu les données Azure IoT Hub dans les applications Web Azure 325

Essayer maintenant
Pour créer une application Web Azure qui lit les données à partir des appareils IdO, effec-
tuez les étapes suivantes.

1 Créez un plan Azure App Service pour votre application Web dans Azure Cloud
Shell. Fournissez un nom, par exemple azuremol. Pour ces exercices, le niveau
gratuit (f1) est suffisant et permet de maintenir de faibles coûts :
az appservice plan create \
--resource-group azuremolchapter20 \
--name azuremol \
--sku f1
2 Créez votre application Web. Fournissez un nom, comme molwebapp, et activez-
le pour l’utiliser avec Git afin que vous puissiez déployer l’exemple
d’application :
az webapp create \
--resource-group azuremolchapter20 \
--plan azuremol \
--name molwebapp \
--deployment-local-git
3 Vous devez définir le groupe de consommateurs pour votre hub IdO, ainsi que
certains paramètres d’application Web App. Ces paramètres permettent à votre
application Web de se connecter au hub IdO. La figure 20.6 montre ce que
vous concevez dans les prochaines étapes.
Les paramètres d’applicaon
sont transmis à votre code
Azure Web Apps d’applicaon. Le nom du groupe
de consommateurs et la chaîne
Paramètre de l’applicaon de connexion ne sont pas codés
consumergroup=molwebapp en dur dans votre applicaon.

Point de Paramètre de l’applicaon Code d’applicaon


terminaison Azure ido=$iotconneconstring
IoT Hub
msg msg
WebSockets acvés
msg msg
true

Groupe de
consomma-
teurs Navigateur Web
Les messages reçus par le point de terminaison Azure IoT Hub
sont lus par une applicaon Web. Un WebSocketconnecon est
ulisé pour envoyer automaquement les mises à jour aux
navigateurs Web connectés.
Figure 20.6 Pour permettre à votre application Web de lire les données de votre appareil IdO Raspberry Pi
simulé, vous devez créer un groupe de consommateurs dans le hub IdO. Vous définissez ensuite deux
paramètres d’application pour votre application Web qui vous permettent de vous connecter au groupe de
consommateurs. Pour permettre à votre navigateur Web de recevoir automatiquement le flux de données
provenant de Raspberry Pi à mesure que de nouvelles données sont reçues, vous devez également activer
un paramètre pour les WebSockets.
326 CHAPITRE 20 Azure et l’Internet des objets

4 Créez un groupe de consommateurs qui permet à votre application Web d’accé-


der aux données d’événement diffusées en continu à partir de votre appareil
IdO. Fournissez votre hub IdO, comme azuremol, et entrez un nom pour votre
groupe de consommateurs, par exemple molwebapp. Votre groupe de consom-
mateurs est créé dans le point de terminaison des événements par défaut :
az iot hub consumer-group create \
--hub-name azuremol \
--name molwebapp
5 Vous devez indiquer à votre application Web le nom du groupe de consomma-
teurs. Créez un paramètre d’application Web App utilisé par l’exemple d’appli-
cation que vous déployez à la fin de l’exercice. Les paramètres d’application
dans les applications Web vous permettent de définir des paramètres spéci-
fiques, comme le nom du groupe de consommateurs et la chaîne de
connexion, sans que ces valeurs soient codées en dur dans votre application.
Fournissez le nom du groupe de consommateurs créé à l’étape précédente,
comme molwebapp :
az webapp config appsettings set \
--resource-group azuremolchapter20 \
--name molwebapp \
--settings consumergroup=molwebapp
6 Pour vous connecter au hub IdO, votre application Web doit connaître la
chaîne de connexion du hub. Cette chaîne de connexion est différente de celle
que vous avez copiée pour votre appareil Raspberry Pi simulé dans l’exercice
précédent. N’oubliez pas qu’il existe une chaîne de connexion pour votre hub
IdO qui utilise des stratégies d’accès partagé pour définir des autorisations
d’accès; et il y a une chaîne de connexion pour chaque appareil IdO. Votre
application Web doit être lue à partir du groupe de consommateurs de point de
terminaison du hub IdO.
Obtenez la chaîne de connexion du hub IdO, et attribuez-la à une variable
appelée iotconnectionstring. Cette variable est utilisée à l’étape suivante :
iotconnectionstring=$(az iot hub show-connection-string \
--hub-name azuremol \
--output tsv)
7 Créez un autre paramètre d’application Web App, cette fois pour la chaîne de
connexion du hub IdO. La variable définie à l’étape précédente est utilisée
pour permettre à l’exemple d’application de se connecter aux données de
l’appareil IdO et de les lire :
az webapp config appsettings set \
--resource-group azuremolchapter20 \
--name molwebapp \
--settings iot=$iotconnectionstring
8 La dernière étape consiste à activer les WebSockets. Un protocole WebSocket per-
met la communication bidirectionnelle entre un navigateur et un serveur.
L’exemple d’application met automatiquement à jour le navigateur Web au
moyen des données reçues de l’appareil Raspberry Pi. Pour effectuer cette mise
à jour automatisée, l’application utilise des WebSockets. Le serveur peut
ensuite envoyer des données au navigateur pour qu’une mise à jour soit faite
automatiquement :
Diffuser en continu les données Azure IoT Hub dans les applications Web Azure 327

az webapp config set \


--resource-group azuremolchapter20 \
--name molwebapp \
--web-sockets-enabled

Faisons une petite pause et discutons de ce que vous avez fait jusqu’à maintenant. Vous
avez travaillé avec des applications Web dans plusieurs des chapitres précédents, mais les
paramètres d’application Web App et les WebSockets sont nouveaux. La figure 20.7 réca-
pitule comment votre application Web et le hub IdO sont connectés.
Les paramètres d’applicaon
sont transmis à votre code
Azure Web Apps d’applicaon. Le nom du groupe
de consommateurs et la chaîne
Paramètre de l’applicaon de connexion ne sont pas codés
consumergroup=molwebapp en dur dans votre applicaon.

Point de Paramètre de l’applicaon Code d’applicaon


terminaison Azure ido=$iotconneconstring
IoT Hub
msg msg
WebSockets acvés
msg msg
true

Groupe de
consomma-
teurs Navigateur Web
Les messages reçus par le point de terminaison Azure IoT Hub
sont lus par une applicaon Web. Un WebSocketconnecon est
ulisé pour envoyer automaquement les mises à jour aux
navigateurs Web connectés.
Figure 20.7 À mesure que les messages sont envoyés depuis des appareils IdO, ils passent par le hub IdO vers
un point de terminaison Votre code d’application lit les paramètres d’application Web App qui définissent la
chaîne de connexion du hub IdO et le groupe de consommateurs à utiliser. Une fois connecté au hub IdO, le
groupe de consommateurs permet aux applications Web de lire les messages de l’appareil IdO. Chaque fois
qu’un nouveau message est reçu d’un appareil IdO, votre application Web utilise une connexion WebSocket
avec des navigateurs Web qui accèdent à votre site pour lancer automatiquement les mises à jour. Cette
connexion vous permet d’afficher les données en temps réel diffusées en continu à partir des appareils IdO,
comme les informations relatives à la température et à l’humidité, à partir de votre appareil Raspberry Pi simulé.

Maintenant, terminons l’exercice et déployons l’exemple d’application du référentiel


GitHub à votre application Web. Vous pouvez ensuite ouvrir l’application Web dans votre
navigateur et voir les données en temps réel diffusées en continu à partir de votre
Raspberry Pi simulé!
1 Le cas échéant, clonez le référentiel d’exemples GitHub dans votre Cloud Shell
en procédant comme suit :
git clone https://github.com/fouldsy/azure-mol-samples.git
2 Passez au répertoire pour le chapitre 20 :
cd azure-mol-samples/20
3 Initialisez le référentiel Git et ajoutez la page Web basique :
git init && git add . && git commit -m "Pizza"
4 Pour télécharger l’exemple d’application, créez une connexion à votre applica-
tion Web. La commande suivante permet d’obtenir le référentiel de l’applica-
tion Web et elle configure vos exemples locaux de référentiel Git pour vous y
connecter. Dans les chapitres précédents, je vous ai fait fouiller pour obtenir
cette adresse; mais à ce stade-ci, j’espère que vous avez commencé à explorer les
328 CHAPITRE 20 Azure et l’Internet des objets

autres facettes d’Azure CLI et que vous réalisez que la plupart des informations
peuvent être obtenues rapidement :
git remote add molwebapp \
$(az webapp deployment source config-local-git \
--resource-group azuremolchapter20 \
--name molwebapp \
--output tsv)
5 Appliquez l’exemple de site HTML à votre application Web à l’aide de la com-
mande suivante :
git push molwebapp master
6 Lorsque vous y êtes invité, entrez le mot de passe d’utilisateur Git que vous avez
créé et utilisé dans les chapitres précédents (le compte créé au chapitre 3).

Si vous n’avez pas écrit votre mot de passe Git sur un papillon adhésif
Si vous avez oublié le mot de passe, vous pouvez le réinitialiser. Tout d’abord, obtenez le
nom d’utilisateur de votre compte de déploiement Git local :
az webapp deployment user show --query publishingUserName
Pour réinitialiser le mot de passe, entrez le nom de votre compte utilisé à la commande
précédente, puis répondez aux invites pour définir un nouveau mot de passe. L’exemple
suivant réinitialise le mot de passe du compte d’utilisateur appelé azuremol :
az webapp deployment user set --user-name azuremol

7 Affichez le nom d’hôte de votre application Web, puis ouvrez l’adresse dans un
navigateur Web :
az webapp show \
--resource-group azuremolchapter20 \
--name molwebapp \
--query defaultHostName \
--output tsv
L’ouverture du site dans votre navigateur Web peut initialement prendre
quelques secondes, le temps que l’application Web se connecte au hub IdO,
démarre la connexion WebSocket et attende la réception du premier message
de l’appareil. Toutes les 2 secondes, le navigateur Web doit automatiquement
se mettre à jour au moyen des plus récentes données provenant de l’appareil
Raspberry Pi, comme le montre la figure 20.8.

Figure 20.8 L’exemple d’application utilise une connexion WebSocket entre votre
navigateur Web et l’application Web pour que toutes les 2 secondes il y ait une mise à
jour automatique avec les plus récentes données de votre appareil Raspberry Pi simulé.
Diffuser en continu les données Azure IoT Hub dans les applications Web Azure 329

Si votre instance d’application Web ne montre aucune donnée, assurez-vous que l’appa-
reil Raspberry Pi simulé est toujours en cours d’exécution. Au besoin, démarrez l’appareil
simulé et assurez-vous qu’il se connecte à Azure IoT et envoie des messages. Les données
doivent ensuite commencer à s’afficher dans votre instance d’application Web.

20.3.1 Examen du composant Azure IoT


J’espère que les exercices de ce chapitre vous ont donné une idée des services disponibles
dans Azure pour les solutions IdO :
 Azure IoT Hub offre un excellent moyen de mettre en service, de connecter et
de gérer de nombreux appareils IdO, et ensuite de s’intégrer à d’autres services
Azure.
 Les accélérateurs de solutions Azure IoT fournissent des scénarios prédéfinis qui
intègrent automatiquement de nombreux services Azure différents pour procurer
un environnement d’applications complet.
 Azure IoT Edge vous permet de déployer des services Azure dans votre environ-
nement local pour traiter les données à partir d’appareils IdO sans avoir à diffu-
ser en continu toutes les données de manière centralisée vers Azure.
Pour réellement se pencher sur Azure IoT et les appareils IdO en général, je vous recom-
mande d’acheter un Raspberry Pi ou tout autre appareil similaire. Ils sont relativement
bon marché, sont souvent offerts avec quelques composants électriques ou capteurs de
base différents pour tester des idées variées, et ils vous donnent une plateforme d’appren-
tissage unique lorsque vous réalisez les possibilités qu’offre une intégration matérielle et
logicielle. N’oubliez pas les avertissements du chapitre 17 concernant l’intelligence artifi-
cielle et l’apprentissage automatique ainsi que sur la conception Skynet! Manning pro-
pose également d’excellents livres, par exemple, Building the Web of Things (Dominique D.
Guinard et Vlad M. Trifa, 2016, www.manning.com/books/building-the-web-of-things) et
JavaScript on Things (Lyza Danger Gardner, 2018, www.manning.com/books/javascript-
on-things), qui parlent de façon plus détaillée de Raspberry Pi, des meilleures pratiques
relatives à l’IdO, et de la programmation JavaScript et Node.js sur des appareils IdO.

Vous rappelez-vous que je vous ai dit de toujours supprimer vos groupes de


ressources?
La meilleure pratique tout au long de cet ouvrage a été de supprimer vos groupes de res-
sources à la fin de chaque chapitre. Cette approche permet de s’assurer que vous ne lais-
sez pas des services et des applications qui coûtent de l’argent en service lorsque vous
n’en n’avez pas besoin.
Azure IoT vous donne une plateforme efficace pour diffuser des données en continu dans
Azure. Vous devez généralement traiter ces données, pas seulement les afficher dans une
application Web comme vous l’avez fait dans les exercices. Le chapitre 21 examine
l’informatique sans serveur avec les services Logic Apps et Fonctions.
Pour montrer comment ces services Azure fonctionnent bien ensemble, vous ne devez pas
supprimer le groupe de ressources et les services que vous avez déployés dans ce chapitre.
Vous les utilisez dès le début du prochain chapitre pour voir les mesures que vous pouvez
prendre en fonction des données reçues de vos appareils IdO. Assurez-vous simplement de
retourner à votre appareil Raspberry Pi et de sélectionner le bouton Arrêter, sans quoi la
limite de 8 000 messages sera atteinte assez rapidement!
330 CHAPITRE 20 Azure et l’Internet des objets

20.4 Exercice pratique : exploration des cas d’utilisation pour l’IdO


Ce chapitre a touché à beaucoup de nouveautés, et sans un véritable appareil IdO, vous
êtes limité dans ce que vous pouvez faire. Le chapitre 21 traite d’Azure IoT Hub et de
Raspberry Pi simulé, je ne veux donc pas consacrer trop de temps à la configuration à ce
stade-ci. Voici quelques suggestions pour pousser un peu plus loin votre réflexion sur
l’IdO :
1 Quels sont les domaines auxquels vous penser lorsqu’il est question des avan-
tages que les appareils IdO peuvent procurer à votre entreprise? Si vous ne tra-
vaillez pas en ce moment dans une entreprise, pensez à la pizzeria fictive
d’Azure Month of Lunches :
a Que pourriez-vous faire pour améliorer les choses pour les clients à l’aide de
l’IdO?
b Utiliseriez-vous Azure IoT Edge? Pourquoi ou pourquoi pas?

c Quels autres services Azure aimeriez-vous voir intégrés pour exécuter vos
applications?
4 S’il vous reste du temps durant le dîner, essayez l’un des accélérateurs de solu-
tion Azure IoT qui se trouvent sur www.azureiotsolutions.com/Accelerators.
Vous y trouverez un scénario de simulation d’appareils qui crée une machine
virtuelle et des capteurs simulés, semblable à l’appareil Raspberry Pi simulé,
mais beaucoup plus important! La mise en service de toutes les ressources
prend quelques minutes, alors prenez le temps d’observer le contenu du por-
tail Azure pour voir ce qui a été créé et comment toutes les pièces fonctionnent
ensemble :
a Pouvez-vous voir comment sont utilisés des services examinés dans les cha-
pitres précédents, comme le stockage et Cosmos DB?
b Quels autres accélérateurs de solutions IdO sont disponibles? Y en a-t-il qui
s’adaptent à des idées que vous avez eues pour vos propres applications?
Informatique sans serveur

Dans ce dernier chapitre, tournons-nous vers l’avenir avec le sujet de l’informatique


sans serveur. Si vous êtes développeur, l’idée de conteneurs que nous avons examinée
dans le chapitre 19 vous a peut-être plu, parce qu’ils limitent le besoin de configuration
de l’infrastructure sous-jacente pour vos applications. Si c’est le cas, vous allez adorer
les composants sans serveur Azure! Et si vous êtes un administrateur des TI qui se
demande soudainement ce que ce sera votre travail si les serveurs disparaissent, ne vous
inquiétez pas! L’informatique sans serveur, c’est surtout un terme de marketing, et bon
nombre de vos compétences en matière de serveur et d’infrastructure continueront de
s’appliquer!
Dans Azure, deux offres principales offrent des fonctions de calcul sans serveur :
Azure Logic Apps et Azure Function Apps. Dans ce chapitre, nous verrons ce que
chaque service a à offrir et comment ils peuvent travailler ensemble. Pour vous assurer
que vos applications sans serveur peuvent communiquer entre elles et transmettre des
données, nous discuterons également des services de messagerie comme Azure Event
Grid, Service Bus, et Event Hubs.

21.1 Qu’est-ce que l’informatique sans serveur?


Dire que l’informatique sans serveur fonctionne sans serveur n’est tout simplement pas
avéré : il y a toujours un serveur quelque part, qui traite du code pour vous. La diffé-
rence entre les charges de travail d’applications IaaS comme les machines virtuelles
Azure et les charges de travail PaaS dans les applications Web réside dans le fait que les
applications sans serveur sont généralement décomposées en unités légères plus
petites d’une application. Vous n’exécutez pas une seule application volumineuse; au
lieu de cela, vous exécutez des composants d’application de petite taille. Si cela vous
évoque les conteneurs et les microservices dont nous avons discuté dans le chapitre 19,
ne vous demandez pas si vous êtes en train de dérailler : l’informatique sans serveur a
beaucoup de points communs avec ces sujets en termes de méthodes de conception de
vos applications.

331
332 CHAPITRE 21 Informatique sans serveur

La figure 21.1 montre comment une application est décomposée en petits composants
qui s’exécutent sur un fournisseur de l’informatique sans serveur et fournissent de petites
unités de sortie.

Pete foncon
Sore de l’applicaon
d’applicaon
Fournisseur de
Pete foncon
d’applicaon l’informaque Sore de l’applicaon
sans serveur
Pete foncon
Sore de l’applicaon
d’applicaon

Figure 21.1 Dans un environnement informatique sans serveur, chaque application est décomposée
en petites unités légères de composants d’application. Chaque composant s’exécute sur un fournisseur
de l’informatique sans serveur, comme Azure Function Apps, et la sortie produite peut ensuite être
consommée par d’autres composants d’application sans serveur ou d’autres services Azure tels que
Azure IoT ou Azure Storage.
Dans Azure, l’informatique sans serveur couvre deux services principaux :
 Azure Logic Apps— Pour répondre à certains intrants et déclencheurs, les appli-
cations logiques vous permettent de créer visuellement des flux de travail qui
peuvent traiter et générer des actions supplémentaires avec une méthode poin-
ter-cliquer, sans code requis. Des utilisateurs sans expérience en programma-
tion ou en infrastructure des TI peuvent bâtir des applications logiques. Un
déroulement simple d’application logique est présenté dans la figure 21.2.
Figure 21.2 Dans une
Message d’entrée
application logique, une
Message reçu de l’appareil IdO entrée pourrait être qu’au
moment de la publication
Vérifier le contenu du message d’un gazouillis, un fichier est
téléversé, ou un message est
Données dans le message extrait reçu à partir d’un appareil
IdO. L’application logique
Appliquer la logique au contenu applique des règles et des
filtres aux données et
Vérifier si la température est au-dessus du seuil
détermine si le message
Générer une acon de sore répond aux critères que vous
définissez. Les actions de
sortie, telles que la
génération d’un courriel, sont
Courriel envoyé ensuite effectuées. Toute
cette logique ne comporte
aucune infrastructure de
programmation ou
d’application autre qu’un
abonnement Azure.

Il n’y a aucune mise à jour de sécurité à appliquer et aucune exigence de


conception autour de la disponibilité élevée ou de l’évolutivité. La plateforme
Azure gère cela automatiquement. Des centaines de connecteurs préconfigurés
existent pour que des applications logiques s’intègrent à des services tels que
Twitter, Office 365, SharePoint et Outlook. Vous pouvez répondre aux gazouil-
lis publics au sujet de votre entreprise ou produit, envoyer une alerte par cour-
riel lorsqu’un fichier est téléversé sur SharePoint, ou envoyer une notification
lorsqu’un message est reçu à partir d’un appareil IdO.
Plateformes de messagerie Azure 333

 Azure Function Apps— Pour exécuter de petits blocs de code, les applications de
fonction vous permettent d’utiliser des langages de programmation courants tels
que C#, Node.js ou Python sans gestion d’infrastructure supplémentaire. Votre
code s’exécute dans un environnement sécurisé et isolé, et vous êtes facturé en
fonction de la consommation de mémoire par seconde. La figure 21.3 décrit le pro-
cessus de base d’une appli de fonction.
Un événement, comme
un message reçu d’un
appareil IdO Azure,
déclenche une applicaon Applicaons de
de foncon.
foncon Azure
Noficaon Pete unité de code Sore
d’événement d’exécuon
C#, Node.js, Python
Une pete unité de code est
exécutée, et une sore pouvant
s’intégrer à d’autres services ou
applicaons est fournie.

Figure 21.3 Comme pour une application logique, une notification d’événement ou un
déclencheur démarre généralement une fonction Azure. L’appli de fonction contient une petite
unité de code qui exécute une tâche spécifique. Il n’y a aucune infrastructure à configurer ou
à entretenir. Seul votre petit bloc de code est requis. Une fois l’exécution du code terminée,
la sortie peut être intégrée à un autre service ou application Azure.

Il n’y a pas de MV à maintenir, et aucune application Web n’est requise. Vous


n’avez pas à vous soucier de la disponibilité élevée ou de l’échelle, parce que le
service Azure Function Apps gère cela pour vous. Tout ce que vous fournissez
est votre code, et la plateforme Azure s’assure que chaque fois que vous avez
besoin d’exécuter ce code, les ressources sont disponibles pour traiter votre
demande.
Les applications logiques ne nécessitent pas de code, elles ont donc une base d’utilisateurs
potentiels plus large. Les propriétaires d’applications d’affaires ou les équipes de finance
et de comptabilité, par exemple, peuvent créer leurs propres applications logiques sans
devoir écrire de code. Les applications de fonction fournissent plus de contrôle et de flexi-
bilité et vous permettent de traiter des événements d’une manière particulière et de
mieux les intégrer à d’autres composants d’application.
Les applications de logique et de fonction vous offrent un moyen d’effectuer des
actions basées sur des déclencheurs sans avoir à maintenir un environnement ou une
infrastructure d’application. Un serveur quelque part dans Azure exécute votre applica-
tion ou fonction logique, mais de votre point de vue en tant qu’administrateur des TI ou
développeur, ce sont des technologies sans serveur.

21.2 Plateformes de messagerie Azure


Dans le chapitre 12, nous avons examiné comment surveiller et dépanner les ressources
Azure, et dans le chapitre 16, nous avons vu comment utiliser le Centre de sécurité Azure
pour détecter les problèmes et effectuer la gestion des mises à jour. Ces deux fonctions
s’appuient sur des flux de données, tels que l’extension de diagnostic de machine virtuelle
Azure, pour informer la plateforme de ce qui se passe dans la MV. Les plateformes de dia-
gnostic et de surveillance Azure sont excellentes, et d’autres services tels que les applica-
334 CHAPITRE 21 Informatique sans serveur

tions Web, Azure Container Instances et Azure IoT Hub peuvent également diffuser des
diagnostics de service pour l’analyse centralisée.
Avec les applications sans serveur, vous avez souvent besoin d’un moyen d’échanger
des messages et de transmettre des données d’application réelles, et pas seulement de
dépanner les diagnostics ou les mises à jour d’état. C’est alors qu’une plateforme de mes-
sagerie devient indispensable.

21.2.1 Azure Event Grid


Et si vous voulez simplement produire un rapport sur certaines actions ou activités en
cours d’achèvement? Dans les flux de travail d’automatisation et l’informatique sans ser-
veur, la possibilité d’effectuer une action en réponse à un événement est utile, comme
illustré dans la figure 21.4.
Lorsque des services ou des
acons de ressources sont
exécutés, les noficaons
peuvent être envoyées
à Azure Event Grid.
Azure IoT Azure Funcons

Azure Storage (pour Azure Event


grands objets binaires) Automasaon Azure
Grid
Groupes de ressources Webhooks

Les services Azure ou les fournisseurs


externes peuvent être configurés pour
répondre à ces événements.
Figure 21.4 Les services Azure comme Azure IoT et Azure Storage peuvent envoyer des notifications
à Azure Event Grid. Ces notifications peuvent se produire lorsqu’un message est reçu à partir d’un
appareil IdO ou qu’un fichier est téléversé vers l’espace de stockage. Azure Event Grid permet à d’autres
services et fournisseurs de s’abonner à ces notifications pour effectuer des actions supplémentaires en
réponse à des événements.

Examinons quelques scénarios que vous pourrez peut-être utiliser dans votre pizzeria :
 Message reçu dans un concentrateur IdO— un appareil IdO connecté au concentra-
teur IdO peut signaler un relevé de température dans un four ou l’emplace-
ment d’un véhicule de livraison. Le concentrateur IdO est configuré pour
transférer une notification à Azure Event Grid.
Une fonction Azure est abonnée aux notifications de l’Event Grid pour le
concentrateur IdO et exécute un petit composant d’application sans serveur
pour enregistrer les informations dans la base de données Cosmos et envoyer
une notification par courriel. Vous pouvez également utiliser des applis
logiques au lieu des applis de fonction Azure, selon la complexité requise de la
réponse de l’application.
 Fichier chargé vers Azure Storage— Le service marketing peut télécharger un coupon
promotionnel pour obtenir un rabais sur une commande de pizza. Lorsqu’un nou-
veau fichier est créé, une notification est envoyée à l’Event Grid.
Un webhook est abonné à l’Event Grid et publie une copie de l’image à par-
tir de l’espace de stockage vers Twitter. Ce gazouillis informe les clients de
l’affaire de la semaine ou de la publication d’un coupon-rabais.
Plateformes de messagerie Azure 335

Ces scénarios sont de vrais scénarios pratiques d’informatique sans serveur, mais Event
Grid peut également s’intégrer à des ressources plus traditionnelles telles que les MV et les
applications Web. Par exemple, un groupe de ressources peut être configuré pour
envoyer des notifications à Event Grid. Il existe de nombreuses façons de créer une
machine virtuelle, comme dans le portail, avec l’interface de ligne de commande (CLI)
Azure, ou avec un modèle de gestionnaire de ressources. Ainsi, il convient de vous assurer
que la machine virtuelle est correctement configurée pour la gestion des mises à jour au
moyen du Centre de sécurité. Un runbook de l’automatisation Azure peut être abonné à
l’Event Grid pour les notifications concernant les opérations de création de MV, puis il
intègrera la MV dans le service de gestion des mises à jour et installera les mises à jour de
sécurité ou d’application requises.

21.2.2 Azure Event Hubs et Service Bus


Event Grid peut fonctionner avec de nombreuses ressources Azure, et il est aussi bien
adapté à l’informatique sans serveur avec des applications logiques ou des applications de
fonction. Mais les applications logiques et les applications de fonction peuvent être exécu-
tées en fonction d’autres entrées de données, telles que les concentrateurs d’événements
ou un service bus. Examinons les différences entre ces différents services de messagerie
afin que vous puissiez mieux décider quand les utiliser :
 Azure Event Hub vous permet de recevoir un flux de données, provenant
notamment d’appareils IdO ou de télémétrie des applications. Les concentra-
teurs d’événements fournissent une plateforme de messagerie à faible latence
capable de gérer des millions d’événements par seconde à partir de plusieurs
fournisseurs simultanés. Les données reçues dans le concentrateur d’événe-
ments peuvent ensuite être traitées par d’autres services, comme illustré à la
figure 21.5.
Plusieurs appareils IdO se
connectent à Azure IoT Hub
et aux données du capteur
de flux.
Appareil IdO
Concentra-
Azure IoT teurs Azure
Appareil IdO
Hub d’événements HDInsight
Azure
Appareil IdO
Les données sont transmises en Les flux de données Event Hubs
connu à Azure Event Hubs, qui peuvent être traités par des services
peut gérer de nombreux de traitement Big Data tels que
événements et flux de données HDInsight et des infrastructures
volumineux à la fois. comme Hadoop et Spark.

Figure 21.5 Les appareils IdO se connectent au concentrateur IdO et peuvent diffuser toutes les données de
leurs capteurs. Il pourrait y avoir des centaines ou des milliers d’appareils IdO connectés. Azure Event Hub gère
tous ces flux de données distincts et permet aux services tels qu’Azure HDInsight de traiter les données brutes
dans des grappes Hadoop ou Spark aux fins d’analyse et de production de rapports.

Azure Service Bus permet aux composants d’application d’échanger des données de mes-
sage, telles que les files d’attente de stockage que nous avons examinées au chapitre 4. Les
files d’attente de stockage sont une implémentation plus ancienne et plus basique d’une
plateforme de messagerie dans Azure. Un service bus offre des fonctions plus avancées
telles que l’ordre garanti des messages, les opérations atomiques et l’envoi de messages
par lots.
336 CHAPITRE 21 Informatique sans serveur

La figure 21.6 présente un scénario commun pour service bus.

Applicaon Applicaon Applicaon


frontale d’intergiciels principale

Le composant de Le message est récupéré de


l’applicaon place les la file d’aente des services
données de message Le message est disponible bus et traité par un autre
sur la file d’aente pour d’autres composants de composant de l’applicaon.
des services bus. l’applicaon connectés.

Msg Msg
Azure Service Bus

Figure 21.6 Les messages sont placés dans une file d’attente de service bus par composants
d’application — une appli frontale, dans notre exemple. D’autres applications middleware ou backend
peuvent ensuite collecter ces messages et les traiter au besoin. Ici, une application backend reprend
le message et le traite. Les fonctions de messagerie avancées incluent la garantie de l’ordre des
messages sur la file d’attente, les messages de verrouillage, les délais d’attente et les relais.

Avec trois services qui vous permettent de transmettre, recevoir et traiter les données
entre les applications et les services dans Azure, lequel utilisez-vous et à quel moment? Le
tableau 21.1 fournit un récapitulatif détaillé des services de l’Event Grid, des Event Hubs
et de Service Bus.

Table 21.1 Chaque service est conçu pour couvrir un scénario différent. Event Grid vous permet de
réagir aux événements, les Event Hubs vous permettent de diffuser de grandes quantités de données, et
Service Bus vous permet de transmettre des messages entre les services et les composants
d’application.

Azure Service Fournit Cas d’utilisation

Event Grid Répartition des événe- Effectuer une action supplémentaire en fonction d’une
ments occurrence d’événement.

Event Hubs Flux de données Recevoir et transmettre de gros volumes de données simul-
tanées.

Service Bus Transmission de mes- Établir une communication entre les services et les applica-
sages tions.

Les applications logiques et les applications de fonction Azure peuvent être déclenchées
par les trois plateformes de messagerie. Créons un service bus qui peut être utilisé pour
déclencher une application logique.

21.2.3 Création d’un service bus et intégration à un hub IdO


Dans ce scénario, vous utilisez un service bus pour transmettre les messages reçus à partir
d’un concentrateur IdO. Votre simulateur Raspberry Pi du chapitre précédent génère des
relevés de température et les transmet au concentrateur IdO. Si la température est supé-
rieure à 30°C, un autre élément de données est inclus dans le message de l’appareil IdO :
temperatureAlert = true. La figure 21.7 décrit comment vous pouvez intégrer un
concentrateur IdO au service bus pour traiter les messages avec cette alerte de tempéra-
ture.
Plateformes de messagerie Azure 337

Hub IdO Applicaon logique

L’appareil IdO envoie des


Le message est récupéré à
données avec une alerte de
parr de la file d’aente des
température; le message Le message est disponible services bus et il déclenche
est placé sur la file pour d’autres composants l’applicaon logique.
d’aente des services bus. de l’applicaon connectés.

Msg Msg
Azure Service Bus

Figure 21.7 Lorsque votre simulateur IdO Raspberry Pi envoie des données de message, un relevé de
température de 30°C ou plus génère une alerte. Les messages marqués avec cette alerte sont placés dans
un service bus. Ces messages peuvent alors être utilisés pour déclencher des applications logiques.

Essayer maintenant
Pour créer un service bus, procédez comme suit.

1 Ouvrez le portail Azure, puis sélectionnez Créer une ressource en haut à


gauche dans le menu.
2 Recherchez et sélectionnez Service bus, puis choisissez Create (créer).
3 Indiquez un nom, par exemple azuremol, puis sélectionnez le niveau de tarifi-
cation Basic (de base).
4 Sélectionnez Create New Resource Group (créer nouveau groupe de res-
sources), et indiquez un nom, par exemple, azuremolchapter21. Assurez-vous
que l’emplacement est le même que pour les ressources créées dans le
chapitre 20, comme Est des États-Unis. L’interaction entre une file d’attente de
service bus, une application logique et une application de fonction peut ren-
contrer des problèmes si vous n’utilisez pas des emplacements cohérents. Lais-
sez les autres valeurs par défaut et sélectionnez Create (créer).
5 Une fois la ressource créée, sélectionnez votre groupe de ressources, puis choi-
sissez le service bus que vous avez créé à l’étape précédente. Sélectionnez
Queue (file d’attente), puis entrez un nom, comme azuremol. Laissez toutes les
autres valeurs par défaut et sélectionnez Create (créer).
Une fois le service et la file d’attente créés, comment pouvez-vous configurer un concen-
trateur IdO pour les utiliser? Dans le concentrateur IdO, vous définissez des points de termi-
naison comme destination pour les messages reçus de la part des appareils IdO. Un point
de terminaison par défaut existe dans le concentrateur IdO pour tous les messages qui ne
satisfont pas aux critères définis. Vous pouvez configurer le service bus en tant que point
de terminaison pour recevoir des messages. Un itinéraire est alors défini. Il inclut des cri-
tères pour définir quels messages doivent être dirigés vers un point de terminaison.
338 CHAPITRE 21 Informatique sans serveur

Dans cet exemple, cet itinéraire exige que tout message qui contient temperatureAlert
= true dans le corps du message soit acheminé vers le point de terminaison du service
bus, comme illustré à la figure 21.8.
Un appareil IdO envoie
un message indiquant
qu’un averssement de Hub IdO
température a été
généré. Acheminer Service
Appareil IdO
bus
Msg
temperatureAlert = vrai Point de
terminaison
Le service bus est configuré
comme un point de terminaison
IoThub achemine les messages vers qui reçoit des messages avec une
un point de terminaison spécifique alerte de température.
si un critère est sasfait, tel qu’une
alerte de température.
Figure 21.8 Au fur et à mesure que les messages sont transmis à partir des appareils IdO vers un concentrateur
IdO, ils peuvent être acheminés vers des points de terminaison spécifiques en fonction des critères que vous
définissez. Les messages qui contiennent une alerte de température dans le corps du message peuvent être
acheminés vers un point de terminaison qui utilise la file d’attente du service bus. Les messages placés dans
la file d’attente du service bus qui contiennent une alerte de température peuvent ensuite être utilisés pour
déclencher des composants comme des applications logiques Azure ou des applications de fonction.

Essayer maintenant
Pour configurer un concentrateur IdO pour acheminer les messages d’alerte de tempéra-
ture vers le service bus, procédez comme suit.

1 Sélectionnez votre groupe de ressources parmi les groupes nommés dans le cha-
pitre précédent, tel que azuremolchapter20, puis choisissez le concentrateur IdO.
2 Sous Messaging (messagerie) dans la barre de navigation à gauche, sélection-
nez Endpoints (points de terminaison). Choisissez Add an Endpoint (ajouter
un point de terminaison).
3 Indiquez un nom de point de terminaison, comme azuremol, puis sélectionnez
Service Bus Queue (file d’attente du service bus) dans le menu déroulant Type.
4 Sélectionnez votre espace de nom pour la file d’attente du service bus, tel que
azuremol, puis votre file d’attente réelle.
5 Pour diriger des messages vers ce point de terminaison, créez un itinéraire.
Sous Messaging (messagerie) dans la barre de navigation à gauche, sélection-
nez Routes (itinéraires). Choisissez Add a Route (ajouter un itinéraire).
6 Indiquez un nom, comme temperatureAlert. Réglez la valeur Data Source
(source de données) sur Device Messages (messages des appareils), puis sélec-
tionnez le point de terminaison créé à l’étape précédente, comme azuremol.
7 Dans la boîte de texte de chaîne Query (requête), entrez les valeurs suivantes :
temperatureAlert = "true"
8 Votre itinéraire doit ressembler à l’exemple illustré à la figure 21.9. Lorsque
vous avez terminé, sélectionnez Save (enregistrer).
Vous disposez maintenant d’un simulateur Raspberry Pi qui envoie des données au
concentrateur IdO et d’un itinéraire pour placer des messages contenant une alerte de
température dans une file d’attente de messages du service bus. Vous n’avez pas vraiment
d’application encore, il n’y a rien que vous pouvez faire avec les données dans la file
d’attente du service bus. Que voulez-vous faire avec une alerte de température?
Création une application logique Azure 339

Figure 21.9 Sélectionnez votre point


de terminaison pour le service bus, puis
entrez la chaîne de requête qui reçoit
tout message reçu des appareils IdO
marqués avec une alerte de
température.

L’envoi d’une notification par courriel est un exemple courant, nous allons donc voir
comment vous pouvez déclencher une application logique à chaque fois qu’un message
est placé dans la file d’attente du service bus.

21.3 Création une application logique Azure


Comme vous l’avez vu lorsque nous avons discuté des applications logiques plus tôt dans
le chapitre, un message reçu à partir d’une file d’attente du service bus peut être utilisé
comme un déclencheur pour démarrer le processus d’exécution. Vous utilisez le concen-
trateur IdO pour traiter les messages reçus des appareils IdO et acheminer vers la file
d’attente du service bus uniquement les messages de point de terminaison qui
contiennent temperatureAlert = true dans le corps du message. Avec cette approche,
votre application logique s’exécute uniquement lorsqu’une alerte de température est
générée.
La figure 21.10 décrit ce que fait votre application logique. Lorsqu’un message est
placé dans la file d’attente du service bus, l’application logique s’exécute et envoie une
alerte par courriel.

Essayer maintenant
Pour créer une application logique, procédez comme décrit ci-dessous.

1 Dans le portail Azure, sélectionnez Create a Resource (créer une ressource)


dans la partie supérieure gauche du menu.
2 Recherchez et sélectionnez Logic App, puis choisissez Create (créer).
340 CHAPITRE 21 Informatique sans serveur

IoThub achemine
les messages vers
le point de
terminaison de
service bus. File d’aente Service Bus Applicaon logique
Hub IdO Courriel
Msg Connecteur boîte de récepon
de courriel
Chaque message de la file
Un courriel est envoyé par un
d’aente des services bus
connecteur de fournisseur de
déclenche l’applicaon
messagerie qui vous avert de
logique.
la surchauffe de l’appareil IdO.
Figure 21.10 Chaque message réceptionné dans la file d’attente du service bus à partir du concentrateur IdO
déclenche l’application logique. Lorsque l’application logique s’exécute, elle envoie une notification par courriel
via un fournisseur de messagerie défini.

3 Indiquez un nom, tel que azuremol, et sélectionnez votre groupe de ressources,


tel que azuremolchapter21. Laissez les autres valeurs par défaut et sélectionnez
Create (créer).
4 Une fois la ressource créée, sélectionnez votre groupe de ressources, puis
ouvrez l’application logique. L’assistant Logic Apps Designer (assistant de
conception d’applications logiques) s’ouvre. Sélectionnez le modèle « When a
message is received in a Service Bus queue » (à la réception d’un message dans
une file d’attente de service bus), comme illustré à la figure 21.11.

Figure 21.11 Pour démarrer avec votre application logique, sélectionnez le modèle « When a message
is received in a Service Bus queue » (à la réception d’un message dans une file d’attente de service
bus).
Création une application logique Azure 341

5 Sélectionnez Create (créer), puis entrez un nom, comme azuremol. Choisissez


votre file d’attente du service bus, comme azuremol, puis choisissez Create
(créer), comme illustré à la figure 21.12.

Figure 21.12 Entrez un nom pour votre connexion de service bus et sélectionnez votre file
d’attente dans la liste Connection Name (nom de connexion). Ensuite, sélectionnez le nom de
connexion RootManageSharedAccessKey et choisissez Create (créer).

6 Sélectionnez Continue (continuer), puis choisissez votre nom de file d’attente


du service bus, tel que azuremol. Sélectionnez New Step (nouvelle étape).
7 Pour ajouter une action, recherchez email (courriel). Sélectionnez votre four-
nisseur, tel que Gmail – Envoyer un courriel, Outlook.com – Envoyer un cour-
riel, ou SMTP – Envoyer un courriel, comme indiqué dans la figure 21.13.

Figure 21.13 Recherchez et sélectionnez votre fournisseur de messagerie actuel,


tel que Gmail ou Outlook.com. Vous pouvez également choisir SMTP - Envoyer un
courriel pour configurer manuellement un autre fournisseur.
342 CHAPITRE 21 Informatique sans serveur

8 Connectez-vous à votre fournisseur de messagerie pour autoriser l’achemine-


ment des courriels et confirmer que vous voulez accorder des autorisations à
envoyer des courriels aux applis logiques.
9 Indiquez une adresse courriel du destinataire à laquelle vous recevrez les cour-
riels, l’objet du courriel, comme Temperature alert (alerte de température),
et un corps de message, comme High temperature detected on IoT device
(température élevée détectée dans l’appareil IdO).
10 Enregistrez l’application logique.
Faisons une petite pause et examinons ce que vous avez construit dans les derniers exer-
cices, comme illustré dans la figure 21.14. Cette conception de base d’application sans ser-
veur n’inclut aucun contrôle qui limite le nombre de messages à envoyer. Dans
l’application logique, vous pourriez définir que vous voulez seulement envoyer un maxi-
mum de cinq courriels d’alerte, puis attendre 30 minutes avant d’en envoyer plus. Dans le
cadre de votre conception d’application, vous devriez réfléchir à comment vous voulez
être informé de telles situations. Vous pouvez également configurer l’application logique
pour qu’elle puisse lire les données du message à partir de la file d’attente du service bus
et inclure l’horodatage du message de l’appareil IdO et la température réelle enregistrée.
Nous allons voir comment procéder dans le prochain exercice.
3. Le message de la file
d’aente des services bus
1. Message envoyé déclenche le fonconnement
Hub IdO
de l’appareil IdO de l’applicaon logique.

Acheminer Service bus Applicaon logique


Raspberry Pi
simulé Msg Connecteur
Msg de courriel
temperatureAlert = vrai
Point de
terminaison
4. L’applicaon logique
envoie une noficaon
2. IoThub achemine le par courriel concernant Courriel
message vers le point de l’alerte de température.
terminaison de service bus.
Figure 21.14 Le simulateur Raspberry Pi envoie un message contenant les relevés du capteur de
température au concentrateur IdO toutes les 2 secondes. Si la température est supérieure à 30°C, une
alerte de température est indiquée. Le concentrateur IdO achemine tous les messages contenant une
alerte de température à une file d’attente du service bus. Les messages de cette file d’attente déclenchent
une application logique Azure à exécuter. L’application logique est connectée à un fournisseur de
messagerie, tel qu’Outlook ou Gmail, et envoie une notification par courriel concernant l’avertissement de
température de l’appareil IdO.

Voyons cette application de base sans serveur en action.

Essayer maintenant
Pour exécuter votre simulateur Raspberry Pi et tester votre application logique, suivez la
procédure suivante.

1 Ouvrez un navigateur Web vers l’appareil IdO du simulateur Raspberry Pi du cha-


pitre précédent : https://azure-samples.github.io/raspberry-pi-web-simulator.
Vérifiez que votre chaîne de connexion du concentrateur IdO est toujours ajoutée
dans la fenêtre de code. Sélectionnez Run the App (Exécuter l’application).
Création d’une application de fonction Azure pour analyser les données de l’appareil IdO 343

2 Les relevés simulés de capteurs de température et d’humidité sont générés


toutes les 2 secondes, et un message est envoyé au concentrateur IdO.
Quelques messages peuvent être nécessaires avant qu’un relevé simulé de tem-
pérature de 30°C soit généré et affiché dans la fenêtre de sortie.
Le concentrateur IdO achemine tous les messages contenant temperatu-
reAlert: true au point de terminaison du service bus. Lorsque ces messages
sont placés dans la file d’attente du service bus, l’application logique les récu-
père et envoie un courriel via le fournisseur défini. Vous recevez alors un cour-
riel pour vous aviser d’un relevé de température élevée. Ce processus ne devrait
prendre que quelques secondes, de bout en bout.
3 Le simulateur Raspberry Pi génère des messages toutes les 2 secondes, alors,
arrêtez l’appli, à moins que vous n’aimiez recevoir des tonnes de courriels
d’alerte!
Lorsque vous recevez des courriels d’alerte, le message ne contient pas beaucoup d’infor-
mations. Votre application logique n’extrait pas les contenus du message du service bus et
formate les informations. Ce serait bien si le courriel d’alerte pouvait inclure le nom de
l’appareil IdO ou la température enregistrée. Comment traiter chaque message et effec-
tuer leur analyse? Qu’en est-il de l’autre composant sans serveur Azure que nous avons
mentionné, Azure Function Apps?

21.4 Création d’une application de fonction Azure pour


analyser les données de l’appareil IdO
Pour étendre votre application sans serveur actuelle, vous pouvez déclencher une applica-
tion de fonction Azure à partir de votre application logique. Les données du message du
service bus peuvent être envoyées à une application de fonction aux fins d’analyse de la
température enregistrée. La notification par courriel envoyée par l’application logique
peut alors inclure des informations sur le nom de l’appareil IdO et la température enre-
gistrée. L’interaction entre l’application logique et l’application de fonction est illustrée à
la figure 21.15.
1. L’applicaon logique
déclenche l’applicaon
de la foncon et
transmet le message de
la file d’aente des Applicaon de la foncon
services bus.
Applicaon logique Recevoir un message Analyser
les données Extraire la lecture
Msg Service Bus
de la température Revenir à
2. L’applicaon de la l’applicaon logique
foncon exécute le code
pour analyser le message,
extraire les données et
renvoyer la valeur à
l’applicaon logique.
Figure 21.15 L’application logique déclenche l’application de fonction. Le message reçu dans la file
d’attente du service bus est transmis dans l’appli de fonction. Le code dans l’application de fonction
analyse le message, extrait la température et retourne cette valeur à l’application logique.
L’application de fonction prend quelques millisecondes pour exécuter ce code, ainsi le coût
d’exécution de ces tâches de calcul se chiffre en fractions de cents.
344 CHAPITRE 21 Informatique sans serveur

Essayer maintenant
Pour créer une application de fonction et la déclencher à partir de l’application logique,
suivez les étapes suivantes.

1 Dans le portail Azure, sélectionnez Create a Resource (créer une ressource) dans la partie
supérieure gauche du menu.
2 Recherchez et sélectionnez Function App, puis choisissez Create (créer).
3 Indiquez un nom, tel que azuremol, et sélectionnez votre groupe de ressources, tel que
azuremolchapter21. Laissez la valeur Windows comme système d’exploitation.
4 Il existe deux options de plan d’hébergement. Un plan de consommation vous permet de
payer par tâche d’exécution, et les ressources dont vous avez besoin sont affectées dynami-
quement au moment de l’exécution. Pour des applications plus cohérentes et prêtes à la
production, vous pouvez utiliser un plan de service d’application qui fournit un coût fixe
et prévisible.
Choisissez Use a Consumption Plan (utiliser un plan de consommation), puis assurez-
vous de sélectionner la même région que pour votre application logique, comme Est des
États-Unis.
5 Laissez les autres valeurs par défaut pour créer un compte de stockage nommé, puis choi-
sissez Create (créer).
6 Une à deux minutes suffisent pour créer l’appli de fonction. Une fois la ressource créée,
sélectionnez votre groupe de ressources, ouvrez votre application logique et sélectionnez
Edit (modifier).
7 Dans le concepteur d’applications logiques Logic App Designer, sélectionnez New Step
(nouvelle étape), puis choisissez d’ajouter une action.
8 Recherchez et sélectionnez Azure Functions, puis choisissez la fonction créée dans les
étapes précédentes, telle que azuremol. Choisissez Create New Function (créer une
nouvelle fonction).
9 Indiquez un nom de fonction, comme analyzeTemperature. Supprimez tout code exis-
tant, remplacez-le par le code des listes suivantes, puis choisissez Create (créer).

Listing 21.1 Code Javascript analyzeTemperature pour une appli de fonction


Chaque application de fonction JavaScript commence par Lit le contenu du message à
exporter une fonction qui contient un objet de contexte. Cet partir du service bus
objet de contexte est utilisé pour transmettre des données dans Crée un objet JSON
les deux sens. de messages service
bus décodés
module.exports = function (context, data) {

var buffer = new Buffer(data.ContentData, 'base64')


Extrait la
Décode à var decodedString = buffer.toString(); température
partir de enregistrée à partir
base64 var objects = JSON.parse(decodedString); de l’appareil IdO
var temperature = objects["temperature"];

context.res = { Génère une


body: { réponse à
Affiche la analysis: "Recorded temperature was " + temperature + "!" renvoyer à
l’application
température } logique
dans le };
journal de la
console context.log("Recorded temperature was " + temperature);

context.done(); Chaque application de fonction JavaScript doit se


}; terminer par un appel à context.done, qui indique
à l’appli de fonction que votre code est terminé.
Création d’une application de fonction Azure pour analyser les données de l’appareil IdO 345

10 De retour dans le Logic App Designer pour votre étape de fonction, sélection-
nez la zone de texte Request Body (demander le corps), puis choisissez Service
Bus Message (message du service bus).
11 Dans le Logic App Designer, faites glisser et déposez les étapes pour les réorga-
niser afin que l’action Send an Email (envoyer un courriel) soit en dessous de
l’étape de l’appli de fonction analyzeTemperature, comme illustré à la
figure 21.16.
12 Sélectionnez l’action Send an Email (envoyer un courriel), puis choisissez la
zone de texte pour le corps du message du courriel.
13 À partir de la fonction analyzeTemperature, sélectionnez la réponse Body
(corps), comme illustré à la figure 21.16.

Figure 21.16 Faites glisser l’action Send an Email (envoyer un courriel) sous la fonction
analyzeTemperature. Sélectionnez la fin du corps du message et la boîte de dialogue Dynamic content
(contenu dynamique) s’affiche. Pour insérer la valeur de température calculée par l’appli de fonction,
sélectionnez le corps du message à partir de la fonction analyzeTemperature.

14 Dans le Logic App Designer, sélectionnez Save (enregistrer).


Votre application sans serveur comporte de nombreuses pièces mobiles. Examinons ce
que vous avez déjà construit avant d’exécuter le simulateur IdO Raspberry Pi pour géné-
rer des courriels d’alerte qui comprennent le relevé de la température calculée par l’appli
de fonction. La figure 21.17 présente une vue d’ensemble de tous les composants en
cours d’utilisation dans l’application sans serveur.
15 Ouvrez votre simulateur Raspberry Pi dans un navigateur Web, et exécutez
l’application. Chaque fois que l’alerte de température est générée, l’application
logique déclenche l’application de fonction pour extraire les données de tem-
pérature du corps du message et inclut ces données dans la notification par
courriel. Il peut se passer quelques instants avant qu’un relevé de température
supérieure à 30°C marque le message avec une alerte de température. Lorsque
cette alerte est définie et que le message est traité, vous recevez une notification
par courriel qui indique quelle était cette température.
346 CHAPITRE 21 Informatique sans serveur

4. L’applicaon de la foncon
traite les données dans le
message du service bus, extrait
et retourne la valeur de
température à l’applicaon Applicaon de la foncon
logique.
1. Message Code JavaScript
Applicaon logique
envoyé de Hub IdO
l’appareil IdO Déclencheur
d’applicaon
Acheminer de la foncon
Raspberry Pi
simulé Connecteur
Courriel
Msg de courriel
Point de 5. L’applicaon logique
temperatureAlert = vrai
terminaison envoie une noficaon
par courriel concernant
2. IoThub achemine le l’alerte de température.
3. Le message de la file
message vers le point de
d’aente des services
terminaison de service bus.
bus déclenche le
Service bus fonconnement de
l’applicaon logique.
Msg

Figure 21.17 Lorsque des messages sont reçus à partir du simulateur Raspberry Pi, tous les messages
contenant une alerte de température sont acheminés vers le point de terminaison de la file d’attente du service
bus. Les messages de la file d’attente du service bus déclenchent une application logique qui transmet le
message à une application de fonction. Une fonction JavaScript analyse le relevé de température et le renvoie à
l’application logique, qui envoie ensuite une notification par courriel qui inclut la température enregistrée par un
capteur sur l’appareil IdO.

Voilà, vous pouvez souffler et vous féliciter. Vous avez fait du bon travail sur l’heure du
dîner!

21.5 Apprenez sans cesse


Ce chapitre contenait de nombreux nouveaux concepts. En fait, les derniers chapitres ont
présenté plein de nouvelles idées et technologies! Ne vous inquiétez pas si vous avez du
mal à comprendre comment vous pouvez commencer à mettre en œuvre tous ces services
Azure, tels que les conteneurs, l’Intelligence Artificielle et ML, et l’informatique sans ser-
veur. Ces chapitres visaient à vous montrer ce qui est possible dans Azure et que vous
n’avez pas besoin de vous limiter à l’exécution d’une réplication des applications exis-
tantes. Lorsque vous commencez à bâtir et à exécuter des applications dans Azure, profi-
tez de l’occasion pour moderniser les applications et examiner les flux de travail de
gestion ou de déploiement. Il existe de nombreux services Azure qui simplifient et accé-
lèrent le cycle de vie de l’application, donc ne vous sentez pas obligé de vous en tenir à
l’exécution de machines virtuelles, car c’est ce que l’entreprise est habituée d’utiliser.
Oui, Azure offre beaucoup de nombreux services novateurs, mais ils sont tous large-
ment construits sur des composants de l’infrastructure de base qui ont été abordés dans
les chapitres principaux plus tôt dans ce livre. Les développeurs peuvent commencer à uti-
liser les dernières approches de conception d’application qui impliquent Kubernetes ou
l’informatique sans serveur, et les administrateurs peuvent réutiliser leurs connaissances
sur les centres de données sur place avec des bases d’informatique en nuage et de tech-
niques de dépannage. À mesure que les besoins de votre entreprise prennent de
l’ampleur, Azure peut les prendre en charge.
Apprenez sans cesse 347

Dans le chapitre 1, j’ai fait preuve d’ouverture et d’honnêteté en déclarant que je ne


couvrirais pas tous les services offerts par Azure. Il y a beaucoup plus de services Azure à
découvrir et de nombreux thèmes à approfondir pour mieux connaître les services que
nous avons vus dans le livre. J’espère que vous avez trouvé au moins quelques domaines
qui vous intéressent et vous motivent à poursuivre votre exploration. Mes domaines favoris
incluent les jeux de mise à l’échelle de machine virtuelle (VMSS), Cosmos DB et Azure
Kubernetes Service.

21.5.1 Matériel d’apprentissage supplémentaire


Je suis partial, mais une destination idéale pour en apprendre davantage sur Azure est le
site https://docs.microsoft.com/azure. Toute la documentation de base sur Azure, les
guides d’architecture, les ressources de référence, les trousses de développement logiciel
et les exemples sont disponibles sur ce site. Chaque service Azure possède son propre
ensemble de guides de démarrages rapide, de didacticiels et d’exemples, ainsi que des
informations conceptuelles et des guides personnalisés.
Si vous approfondissez vos compétences, il existe des options de certification pour
Azure. Les examens personnels comprennent Implementing Microsoft Azure Infrastructure
Solutions (70-533 – Implémentation des solutions d’infrastructure Microsoft Azure) et
Developing Microsoft Azure Solutions (70-532 – Développement de solutions Microsoft
Azure). Ces examens peuvent compter pour des parcours de certification plus étendus,
tels que le Microsoft Certified Solutions Expert (MCSE) in Cloud Platform and Infrastructure
(plateforme et infrastructure en nuage), et il existe même des certifications axées sur
Linux, comme Managing Linux Workloads on Azure (70-539 – Gestion des charges de travail
Linux).

21.5.2 Ressources GitHub


Tout au long de ce livre, vous avez utilisé des exemples de code, des modèles et des
exemples d’applications issus de https://github.com/fouldsy/azure-mol-samples. Ces
exemples doivent rester à jour au fur et à mesure que les nouvelles versions de l’interface
de ligne de commande Azure sont publiées, et le référentiel GitHub inclut également des
exemples et des modèles PowerShell pour tous les exercices. Ce livre est axé sur l’interface
de ligne de commande dans Azure Cloud Shell, mais n’hésitez pas à découvrir ce à quoi
ressemble chaque exercice dans PowerShell ou un modèle.
Si vous remarquez des problèmes avec les exemples, veuillez créer un signalement de
problème dans GitHub au https://github.com/fouldsy/azure-mol-samples/issues. Les
choses évoluent rapidement dans Azure, et je veux m’assurer que vous avez toujours les
derniers exemples de travail pour vous aider à apprendre. N’hésitez pas à nous faire de
vos suggestions! Tous les documents sur Azure provenant de https://docs.microsoft
.com/azure acceptent également les commentaires, les signalements de problèmes et les
modifications. Ainsi, alors que vous découvrez le reste de l’offre dans Azure, n’hésitez pas
à vous impliquer et à aider les autres à apprendre et à se perfectionner.

21.5.3 Une dernière réflexion


Prenez une grande inspiration et comprenez que le changement est maintenant normal.
De nouvelles fonctions et services sortent presque tous les jours. Azure, comme tous les
principaux fournisseurs infonuagique, peut présenter un aspect légèrement différent à
chaque utilisation. Si vous avez les compétences fondamentales essentielles et acquis une
certaine compréhension grâce à ce livre, vous pouvez vous adapter et vous perfectionner
avec toutes les nouvelles occasions offertes par Azure. Vous avez toujours quelque chose
de nouveau à apprendre, et j’aimerais entendre ce que vous avez fini par bâtir et exécuter
dans Azure!
index
A adresse IP publique de mise à l’échelle verticale
base 103 des applications
AA (apprentissage adresses IP publiques 62–64 Web 131
automatique) 269–283 agent 186 mise à l’échelle verticale
Azure Cognitive AKS (Azure Kubernetes des machines
Services 274–276 Service) 299, 308–312 virtuelles 129–131
Bots d’application Web création de grappes Jeux de mise à l’échelle de
bâtir avec LUIS 280–282 avec 309–310 machine
création 276–277 exécution de sites Web dabs virtuelle 133–139
exécution avec Kubernetes 310–312 création 134–136
LUIS 280–282 alertes 184–189 création de règles de mise
LUIS (Language Understan- alertes relatives aux à l’échelle
ding Intelligent métriques 188 automatique 136–139
Service) 277–280 Amazon Web Services mise à l’échelle d’applica-
outils pour les scientifiques (AWS) 202 tions Web 139–142
des données 274 API (interfaces de program- apprentissage automatique.
relation avec l’intelligence mation Voir ML
artificielle 270, d’applications) 30 Assistant Logic Apps
273–274 Application Gateway 109 Designer 340
vue d’ensemble de 271–272 application monolithique 304 attaque informatique par satu-
AAD (Azure Active Directory) applications ration (DDoS) 188
contrôle de l’accès aux clés cycles de vie de 78–79 attribution dynamique 63
avec 227–228 Function Apps 343–346 attribution statique 63
contrôle de l’accès aux Logic Apps 339–343 AWS (Amazon Web
coffres avec 227–228 plans de service 36–38 Services) 202
vue d’ensemble de 238, 260 Voir également applications az keyvault create
Accords sur les niveaux de d’équilibrage des command 226
services 263 charges az vm create command 55,
accords sur les niveaux de applications évolutives 104, 208
services 263 applications d’équilibrage de az vm show, commande 107
ACI (Azure Container charge 108–126 Azure Active Directory. Voir
Instance) 299, applications évolutives AAD
305–307 127–143 Azure Automation 284–298
ACR (registre de conteneur avantages de 128–133 actifs 287–289
Azure) 308 mise à l’échelle horizon- création de comptes
actifs, dans Azure tale des dans 286–287
Automation 287–289 ressources 132–133 PowerShell DSC 293–297

349
350 INDEX

définition 295–297 Azure Kubernetes Service. Voir stockage standard et


Serveurs collecteurs Azure AKS premium 52–53
Automation et 295–297 Azure Logic Apps 332 Azure Web Apps 32–45
procédures opérationnelles Azure Network Watcher gestion des applications
287–289 189–196 Web 41–44
affichage de la sortie à par- affichage des règles NSG vue d’ensemble de 33–34
tir de 292–293 effectives 192–194 affichage des serveurs Web
en cours d’exécution capture de paquets en action 34
292–293 réseau 194–196 langages et environne-
exemple de 290–293 vérification des flux IP ments pris en
vue d’ensemble de 185, 190–192 charge 33–34
284–289 Azure PowerShell 12–13
Azure Cloud Shell 12 Azure Resource Manager B
Azure Cognitive Services 77–90
274–276 approche de 77–83 balises
Azure DNS (service de noms de conception autour du gestion des ressources
domaine) 162–166 cycle de vie de avec 82–83
Azure Event Grid 334–335 l’application 78–79 regroupement des ressources
Azure Event Hubs 335–336 gestion et regroupement avec 82–83
Azure Function Apps 333 des ressources avec des barres obliques inversées 54, 70
Azure IoT (Internet des balises 82–83
bases de données
objets) 314–330 protection des ressources
dans Cosmos DB
création d’applis de fonction avec des verrous 81–82
ajout d’une redondance
pour analyser les don- sécurisation et contrôle
mondiale à 153–156
nées d’appareils des ressources 80–81
création 148–156
343–346 modèles pour 83–89
remplissage 148–153
diffusion en continu de don- création 84–85
mise à l’échelle 146–147
nées du hub dans des création de plusieurs types
de ressources 86 bases de données non structu-
applications Web
outils pour créer 87 rées. Voir NoSQL (bases
323–329
de données non struc-
examen des composants 329 stockage 89
turées)
Hub, gestion des appareils de Azure Service Bus 335–336
Bases de données structurées
manière centralisée Azure Service Fabric 304
SQL 145
avec 317–323 Azure Storage 46–56
bases de données structurées.
intégration à service ajout de disques aux
Voir bases de données
bus 336–339 machines virtuelles
54–56 structurées SQL
vue d’ensemble de 315–316
avantages de 46–52 bots pour applications Web
Azure Key Vault 232–248
création de certificats disponibilité du bâtir avec LUIS 280–282
245–248 stockage 51–52 création 276–277
injection de certificats redondance 51–52 exécution avec LUIS
245–248 stockage de la file 280–282
MSI (identités des services d’attente 50–51 Bouton de contrôle d’accès
gérées) 237–245 stockage de tableaux (IAM) 80
sécuriser les informations 48–50
dans le nuage 232–237 Stockage de la machine vir- C
coffres de logiciels et tuelle
HSM 234–235 disques de données 53 Calendriers de
création de chambres disques temporaires 53 sauvegarde 206–210
fortes et de stockage de la machine capture de paquets
secrets 235–237 virtuelle 52–54 réseau 194–196
stockage de clés de chiffre- disques de données 53 caractère && 26
ment dans 226–227 disques temporaires 53 cartes d’interface 60–61
vue d’ensemble de 225 options de mise en cache cartes d’interface réseau v
de disque 54 irtuelles (NIC) 60
INDEX 351

case Clé publique, SSH 19 commande az vm resize copyIndex( ), fonction 95, 100,
CD (livraison continue) 77 131–132 106
Centre de sécurité Azure commande création compte Cosmos DB 144–161
249–265 stockage az 224 accès aux données distri-
Certificat SSL 220 commande d’installation 26 buées
certificats commande git push azure mondialement 156–160
création 245–248 master 161 ajout d’une redondance
injection 245–248 commande ssh-keygen 18 mondiale à 153–156
certificats SSL comptes création de comptes et de
personnalisés 220 dans Azure Automation, bases de données
chiffrement 219–231 création 286–287 148–156
au repos 222–223 dans Cosmos DB création et remplissage de
de machines virtuelles ajout d’une redondance bases de données
225–228 mondiale à 153–156 148–153
contrôle de l’accès aux création 148–156 vue d’ensemble de 145, 148
coffres et aux clés avec remplissage 148–153 bases de données non
AAD 227–228 conditions de fonctionnement, structurées
vue d’ensemble de 230 alertes relatives (NoSQL) 145–146
SSE (chiffrement du service aux 188–189 bases de données structu-
de stockage) 223–224 configuration rées (SQL) 145
stockage de clés dans Azure machines virtuelles avec des mise à l’échelle de bases de
Key Vault 226–227 équilibreurs de données 146–147
vue d’ensemble de 219–222 charge 122–124 cycles de vie des
CHP (calcul de haute sondes d’intégrité 112–114 applications 78–79
performance) 20, 283 connectivité réseau (vNIC) 11
CI (intégration continue) 77 Connexion ExpressRoute 22,
clés 190 D
contrôle de l’accès avec Connexion RDP (Remote Desk-
AAD 227–228 top Protocol) 17, 72 DC/OS (système d’exploitation
création de chambres connexions au réseau par accès du centre de
fortes 235–237 à distance 70–71 données) 308
stockage des clés de chiffre- conteneurs 299–313 DDoS (attaque informatique
ment dans Azure Key ACI (Azure Container par saturation) 188
Vault 226–227 Instance) 305–307 délégation de domaines
CLI (interface de ligne de AKS (Azure Kubernetes réels 164–166
commande) 12 Service) 308–312 dépannage 181–197
coffres création de grappes alertes 184–189
contrôle de l’accès avec avec 309–310 Azure Network
AAD 227–228 exécution de sites Web Watcher 189–196
création de chambres dabs Kubernetes affichage des règles NSG
fortes 235–237 310–312 effectives 192–194
Voir également coffres de logi- vue d’ensemble de 299–304 capture de paquets
ciels contrôle réseau 194–196
coffres de logiciels 234–235 ressources 80–81 vérification des flux
collections 150 trafic avec NSG 65–69 IP 190–192
commande az cosmosdb association de NSG à des diagnostics des machines
show 157 sous-réseaux 67–68 virtuelles 181–183
commande az group création de NSG 65–66 métriques de
create 134 création de règles de fil- performance 184–189
commande az keyvault secret trage des NSG 69 Plateforme Azure 30–31
show 237 contrôle d’accès en fonction du dependsOn 106
commande az vm disk rôle (RBAC) 80, 165, déploiement de sites
attach 55 226 HTML 38–41
commande az vm list-sizes 130 Deploy to Azure (Déployer
dans Azure), bouton 95
352 INDEX

Desired State Configuration enregistrements d’alias 164 ments pour


(DSC) 185, 293 enregistrements d’hôte Windows) 186
détection des points de IPv4 164 examen des mises à jour
terminaison 158 enregistrements d’hôte 262–265
diffusion en continu de don- IPv6 164 Extension de script
nées du hub IdO enregistrements de personnalisé 185
323–329 pointeur 164
disque dur virtuel (VHD) 47 enregistrements de serveur de É
disques noms 164
ajout aux machines enregistrements de service 164 État « refus » 253
virtuelles 54–56 enregistrements SOA (start-of-
disques de données 53 authority) 164
options de mise en cache 54 enregistrements start-of-autho- F
temporaires 53 rity (SOA) 164
Fenêtre Vue d'ensemble de la
disques de données 53 Ensembles de disponibilité
gestion des mises à
disques durs standard 16 affichage de la distribution
jour 258
disques gérés 17 des machines virtuelles
dans 98–100 Fenêtre Vue d'ensemble du
disques temporaires 53 Centre de sécurité 251
DKIM (DomainKeys Identified distribution de machines vir-
tuelles dans 95–98 Fichier Managed Object For-
Mail) 164 mat (MOF) 295
domaines redondance des machines
virtuelles avec 93–100 Fichier MOF (Managed Object
erreur 94 Format) 295
mise à jour 94–95 domaines d’erreur 94
domaines de mise à fichiers journaux, flux 43
réel, délégation à Azure filtrage 69
DNS 164–166 jour 94–95
équilibreur de charge FIPS (norme fédérale de traite-
domaines d’erreur 93 ment de
domaines de mise à jour 93 interne 110
équilibreur de charge l’information) 235
DomainKeys Identified Mail
Internet 110 flux de fichiers journaux 43
(DKIM) 164 flux IP, vérification 190–192
équilibreurs de charge
données au repos 222 fonction concat 86
composants des 108–121
données distribuées à l’échelle FQDN (nom de domaine quali-
affectation de groupes de
mondiale 156–160 fié complet) 63
machines virtuelles à
données non structurées 147 Function Apps 343–346
des lots dorsaux
données structurées 147
118–121
données. Voir données distri-
création de lots IP G
buées à l’échelle mon-
frontaux 110–112
diale Gestion des mises à jour
définition de la distribu-
DSC (Desired State tion du trafic avec des d’Azure 257–265
Configuration) 185, règles d’équilibrage de examen et application des
293 charge 114–116 mises à jour 262–265
DSVM (machines virtuelles routage du trafic direct OMS (Operations Manage-
Science des avec des règles de tra- ment Suite) 258–261
données) 274 duction d’adresses Gestionnaire de configuration
réseau 116–118 locale (LCM) 293
E sondes d’intégrité 112–114 git push dev master
création et configuration de command 44
échange avec aperçu 45 machines virtuelles GPU (processeur
emplacement de avec 122–124 graphique) 283
production 45 définition de la distribution grappes avec AKS 309–310
emplacements de du trafic avec des groupes de machines virtuelles
déploiement 45 règles 114–116 identiques
emplacements des points de en action 123–124 (VMSS) 133–139
terminaison 158 ETW (Event Tracing for Win- création 134–136
EncryptionInProgress 230 dows ou suivi d’événe-
INDEX 353

création de règles de mise plateformes de LCM (gestionnaire de


à l’échelle messagerie 333–339 configuration
automatique 136–139 Azure Event Grid 334–335 locale) 293
groupes de ressources 329 Azure Event Hubs livraison continue (CD) 77
groupes de sécurité réseau. Voir 335–336 Logic Apps 339–343
NSG Azure Service Bus 335–336 Logiciel en tant que service
GRS (stockage géo- création d’un service (SaaS) 9
redondant) 52 bus 336–339 lots
intégration de Service Bus dorsaux 118–121
H à des concentrateurs lots IP frontaux 110–112
IdO 336–339 lots dorsaux 109, 118–121
Hashicorp 88 Ressources GitHub 347 Lots IP 109
HSM (modules de sécurité vue d’ensemble de 331–333 lots IP frontaux 110–112
matérielle) 227, infrastructure en tant que code LRS (stockage localement
234–235 (IaC) 83 redondant) 51
Infrastructure en tant que ser- LTS (soutien à long terme) 16
vice (IaaS) 9, 15, 32 LUIS (Language Understan-
I injection de certificats 245–248 ding Intelligent Ser-
installation de serveurs vice)
IA (intelligence Web 23–26
artificielle) 269–283 création de bots d’applica-
apprentissage automatique
instance de conteneur Azure. tion Web avec 280–282
Voir ACI exécution de bots d’applica-
et 270, 273–274 instances, création 305–307
Azure Cognitive tion Web avec 280–282
intégration continue (CI) 77 vue d’ensemble de 274–275,
Services 274–276
Bots d’application Web
intelligence artificielle. Voir IA 277–280
interface de ligne de com-
bâtir avec LUIS 280–282 mande (CLI) 12
création 276–277 M
Interface de ligne de com-
exécution avec LUIS mande Azure 7
280–282 interface de ligne de com-
machines virtuelles
LUIS 277–280 parallèles 100
mande Azure 12–13
vue d’ensemble de 270–271 intermédiaire 40
machines virtuelles protégées,
IaaS (infrastructure en tant que suppression 218
Internet Information Services
service) 9, 15, 32 (IIS) 29, 248
machines virtuelles Science des
IaC (infrastructure en tant que données (DSVM) 274
intervalle de détection des
code) 83 machines virtuelles série 100
points de
identité du service géré machines virtuelles. Voir MV
terminaison 172
(MSI) 237 isolation 32
MCSE (Microsoft Certified
identités des services gérés. Voir Solutions Expert) 347
MSI mémoire (vRAM) 11
IdO (Internet des objets). Voir J message d’erreur 200 30
Azure IoT message d’erreur 404 30
IIS (Internet Information jeton de SAS (signature d’accès message d’erreur 500 30
Services) 29, 248 partagé) 89 mesures. Voir mesures de per-
IMDS (service de métadonnées jeton de signature d’accès par- formances
d’instance) 238 tagé (SAS) 89 métriques de
informatique sans serveur journaux de diagnostic 41–44 performance 184–189
331–347 JWT (JSON Web Token) 241 Microsoft Certified solutions
création d’applis de fonction expert (MCSE) 347
pour analyser les don- L mise à l’échelle
nées d’appareils baisse de puissance des
IdO 343–346 langages pris en charge 33–34 machines
création d’applis Language Understanding Intel- virtuelles 130–131
logiques 339–343 ligent Service. Voir LUIS bases de données 146–147
354 INDEX

ressources horizontalement Juste à temps 253 configuration avec des


132–133 mises à jour 265 équilibreurs de
verticale des machines Gestion des mises à jour charge 122–124
virtuelles 129–131 d’Azure 265 connexion à 123–124
baisse de puissance examen et application des avec des agents SSH 72–73
130–131 mises à jour 265 avec SSH 23–26
redimensionnement des OMS (Operations Manage- création 15–31, 71–72
machines ment Suite) 261 à partir de navigateurs
virtuelles 129–130 Juste à temps 257 Web 15–23
Web Apps Mises à jour juste à temps avec des équilibreurs de
verticale 131 (JIT) 253–257 charge 122–124
vue d’ensemble de mode basé sur les chemins dans des zones de
139–142 d’accès HTTP 112 disponibilité 103–104
mise en cache read/write 54 mode basé sur les ports 112 dépannage Azure 30–31
Mise en réseau Azure 57–74 Modèles de démarrage rapide nettoyage des
composants du réseau Azure 7 ressources 29–30
virtuel 57–64 modèles, pour Azure Resource diagnostics 181–183
adresses IP publiques Manager 83–85, 89 distribution dans les groupes
62–64 création 84–85 de disponibilité 95–98
cartes d’interface réseau création de plusieurs types extensions de
virtuelles 60–61 de ressources 86 diagnostic 184–187
création de réseaux outils pour créer 87 groupes de machines vir-
virtuels 58–60 stockage 89 tuelles identiques
création de sous- module nx 298 (VMSS) 133–139
réseaux 58, 60 modules de sécurité matérielle. création 134–136
résolution DNS 62, 64 Voir HSM (modules de création de règles de mise
création d’un exemple sécurité matérielle) à l’échelle
d’application Web avec MSI (identités des services automatique 136–139
un trafic sécurisé 70–73 gérées) 237–245 installation de serveurs
création de connexions au MV (machines virtuelles) Web 23, 25–26
réseau par accès à affectation de groupes de mise à l’échelle
distance 70–71 machines virtuelles à verticale 129–131
création de machines des lots dorsaux obtenir des secrets avec des
virtuelles 71–72 118–121 identités de services
utilisation d’agents SSH affichage de la distribution gérés 240–245
pour se connecter à des dans les groupes de redimensionnement
machines virtuelles disponibilité 98–100 129–130
72–73 ajout de disques à 54–56 redondance des machines
sécurisation et contrôle du autorisation du trafic Web virtuelles avec des
trafic avec NSG 65–69 pour atteindre 26–28 groupes de
association de NSG à des affichage du serveur Web disponibilité 93–100
sous-réseaux 67–68 en action 27–28 domaines d’erreur 94
création de NSG 65–66 création de règles pour domaines de mise à
création de règles de fil- autoriser le trafic jour 94–95
trage des NSG 69 Web 27 restauration 210–212
Mises à jour 249 baisse de puissance 130–131 restauration au niveau
Gestion des mises à jour chiffrement de 225, 228–230 du fichier 210
d’Azure 257 contrôle de l’accès aux restauration complète de
examen et application des coffres et aux clés avec machine virtuelle
mises à jour 262 AAD 227–228 211–212
OMS (Operations Manage- stockage des clés de chif- stockage 52–54
ment Suite) 258 frement dans Azure Key disques de données 53
Groupes de sécurité réseau Vault 226–227 disques temporaires 53
du Centre de sécurité options de mise en cache
Azure 249–252 de disque 54
INDEX 355

stockage standard et objectif de point de récupéra- intégration de Service


premium 52–53 tion. Voir RPO Bus à des concentra-
tailles de 20–21 Objet $ResourceGroups 291 teurs IdO 336–339
Objet points de terminaison 337
N $servicePrincipalConne portail Azure 12
ction 290 PowerShell DSC (Desired State
NAT (Network Address Transla- Observateur de réseau 191 Configuration – confi-
tion, traduction OMS (Operations Management guration de l’état
d’adresses réseau) 109, Suite) 258–261, 286 souhaité) 293–297
116–118 orchestrateur de définition 295–297
navigateurs Web, création de conteneur 308 Serveurs collecteurs Azure
machines virtuelles à outils tiers 88 Automation et 295–297
partir de 15–23 principal de service 238
Azure Storage 16–17 P procédures opérationnelles,
paramètres 22–23 pour Azure
paramètres de base 17–19 PaaS (plateforme en tant que Automation 290–293
Tailles de machines service) 9, 32 affichage de la sortie à partir
virtuelles 20–21 paires de clés 17 de 292–293
NIC (cartes d’interface réseau paquets réseau 194–196 en cours d’exécution
virtuelles) 60 Paramètre -A 124 292–293
Norme fédérale de traitement paramètres 83 vue d’ensemble de 287–289
de l’information paramètres processeur virtuel (vCPU) 11
(FIPS) 235 enableHttpsTrafficOnly profils, dans Traffic
NoSQL (bases de données non 224 Manager 168–170
structurées) 145–146 PartitionKey 49 propriété Message Text 51
NSG (groupes de sécurité Place de marché, Azure 7 protection des ressources
réseau) 23, 114, 182 planifications 137 81–82
affichage des règles plans de service pour les protocole de contrôle des
effectives 192–194 applications 36–38 points de
association à des sous- plateforme Azure terminaison 172
réseaux 67–68 dépannage 30–31
création 65–66 outils de gestion 12–13 Q
création de règles de Azure Cloud Shell 12
filtrage 69 Azure PowerShell 12–13 quotas 104, 135
dans le Centre de sécurité interface de ligne de com- quotas par défaut 104
Azure 249–252 mande Azure
sécurisation et contrôle du locale 12–13 R
trafic avec 65–69 Portail Azure 12
vue d’ensemble de 23, 114, stockage dans 16–17 RA-GRS (stockage géo-redon-
182 virtualisation dans 10–11 dant en accès en
nuage, sécuriser les informa- vue d’ensemble de 8–13 lecture) 52
tions dans le 232–237 Plateforme en tant que service Raspberry Pi 320–323
coffres de logiciels et (PaaS) 9, 32 RBAC (contrôle d’accès en
HSM 234–235 Plateforme Kubernetes fonction du rôle) 80,
création de chambres fortes 310–312 165, 226
et de secrets 235–237 plateformes de readLocations 157
messagerie 333–339 récepteurs 186
O Azure Event Grid 334–335 Récupération après
Azure Event Hubs 335–336 sinistre 213
Objectif de délai de récupéra- Azure Service Bus 335–336 récupération après sinistre 213
tion (RTO) 203, 205 création d’un service Récupération de sites
Objectif de point de récupéra- bus 336–339 Azure 213–216
tion (RPO) 204
356 INDEX

redimensionnement des création de profils dans Traf- RowKey 49


machines fic Manager 168–170 RPV (réseaux virtuels
virtuelles 129–130 distribution du trafic vers privés) 22, 36, 190
redondance l’instance la plus
avantages de 91–92 proche à l’échelle S
des machines virtuelles avec mondiale 171–179
des groupes de ressources SaaS (logiciel en tant que
disponibilité 93–100 avec des balises service) 9
Voir également redondance gestion 82–83 sauvegardes 201–218
mondiale regroupement 82–83 Récupération de sites
vue d’ensemble de 51–52 contrôle 80–81 Azure 213–216
redondance des infrastructures, mise à l’échelle Service de sauvegarde
avec zones de horizontale 132–133 Azure 202–212
disponibilité 100–104 nettoyage 29–30 Calendriers de
création de machines vir- protection avec des sauvegarde 206–210
tuelles dans des zones verrous 81–82
restauration de MV
de disponibilité sécurisation 80–81 210–212
103–104 Ressources GitHub 347
stratégies et
création de ressources réseau ressources réseau 102–103
rétention 203–205
dans des zones de REST (transfert d’état
scientifiques des données,
disponibilité 102–103 représentationnel) 30
outils pour les 274
redondance mondiale 153–156 restauration au niveau du
secrets
Registre de conteneur Azure fichier 210
(ACR) 308 création 235–237
restauration de machines
règle virtuelles 210–212 obtenir des secrets dans une
AllowAzureLoadBalanc machine virtuelle avec
restauration au niveau du
erInBound 68 des identités de ser-
fichier 210
règle AllowVnetInBound 68 vices gérés 240–245
restauration complète de
Règle default-allow-ssh 256 machine virtuelle Secure Socket Shell. Voir SSH
Règle 211–212 (Secure Socket Shell)
DefaultInboundDenyAll rétention 203–205 sécurisation
192 Objectif de délai de récupé- ressources 80–81
règle DenyAllInBound 68 ration (RTO) 205 trafic avec NSG 65, 69
règles de mise à l’échelle Objectif de point de récupé- association de NSG à des
automatique 136–139 ration (RPO) 204 sous-réseaux 67–68
Règles DenyAll 193 RootManageSharedAccessKey création de NSG (groupes
regroupement des 341 de sécurité réseau)
ressources 82–83 routage basé sur les 65–66
remplissage de bases de performances 168 création de règles de fil-
données 148–153 routage du trafic direct avec des trage des NSG 69
Réplication Azure vers règles de traduction Sender Protection Framework
Azure 215 d’adresses réseau (SPF) 164
réseau anycast 164 116–118 séparation des rôles 62
réseaux virtuels 57, 64 Voir également routage mon- Server Message Block
adresses IP publiques 62, 64 dial, avec Traffic Mana- (SMB) 47
cartes d’interface 60–61 ger serveurs pull 295–297
création 58, 60 routage géographique 168 serveurs Voir serveurs web
création de sous-réseaux routage mondial , avec Traffic serveurs Web
58–60 Manager 166–179 en action 27–28, 34
résolution DNS 62–64 création de profils dans Traf- installation 23, 25–26
réseaux virtuels privés fic Manager 168–170 Service Bus
(RPV) 22, 36, 189 distribution du trafic vers création 336–339
résolution DNS 62, 64 l’instance la plus intégration avec les concen-
résolution, avec Traffic proche à l’échelle trateurs IdO 336–339
Manager 166–179 mondiale 171–179
INDEX 357

Service de métadonnées d’ins- disques de données 53 système d’exploitation du


tance (IMDS) 238 disques temporaires 53 centre de données
Service de sauvegarde options de mise en cache (DC/OS) 308
Azure 202–212 de disque 54 système de numérotation basé
Calendriers de stockage standard et sur zéro 97
sauvegarde 206–210 premium 52–53 systèmes de numérotation,
restauration de MV 210–212 disponibilité de 51–52 basés sur zéro 97
restauration au niveau du redondance 51–52
fichier 210 stockage de la file T
restauration complète de d’attente 50–51
machine virtuelle stockage (vDisk) 11 T/M (tours par minute) 321
211–212 Stockage de fichiers 47 Temps universel coordonné
stratégies et rétention Stockage de grands objets (UTC) 206
203–205 binaires 47
Terraform 88
Objectif de délai de récu- Stockage de la file d’attente 47,
Test dans l’option discussion
pération (RTO) 205 50–51
Web 281
Objectif de point de récu- Stockage de tableaux 47
Time to Live (TTL) 171
pération (RPO) 204 stockage des modèles 89
servicePrincipalName 240 tours par minute (T/M) 321
stockage géo-redondant
sites HTML, déploiement (GRS) 52 Traffic Manager
38–41 stockage géo-redondant en création de profils dans
sites Web, exécution dans accès en lecture 168–170
Kubernetes 310–312 (RA-GRS) 52 distribution du trafic vers les
SMB (Server Message stockage localement redon- instances les plus
Block) 47 dant (LRS) 51 proches à l’échelle
sondes d’intégrité Storage Service Encryption. Voir mondiale 171–179
configuration 112–114 SSE (Storage Service routage mondial et résolu-
création 112–114 Encryption) tion avec 166–179
vue d’ensemble de 109 stratégie de mise en cache read- trafic
sondes. Voir sondes d’intégrité only 54 définition de la distribution
SONiC (Software for Open stratégies 203–205 du trafic avec des règles
Networking in the Objectif de délai de récupé- d’équilibrage de
Cloud) 11 ration (RTO) 205 charge 114–116
sous-réseaux Objectif de point de récupé- distribution vers les ins-
association de NSG à 67–68 ration (RPO) 204 tances les plus proches
création 58, 60 Structured Query Language à l’échelle
Soutien à long terme (LTS) 16 (SQL) 48, 145 mondiale 171–179
SPF (Sender Protection suppression de machines vir- routage du trafic direct avec
Framework) 164 tuelles protégées 218 des règles de traduction
SQL (Structured Query surveillance 181–197 d’adresses réseau 116,
Language) 48, 145 alertes 184–189 118
SSD haute performance 16 Azure Network sécurisation et contrôle avec
SSD standard 16 Watcher 189–196 NSG 65, 69
SSE (chiffrement du service de affichage des règles NSG association de NSG à des
stockage) 223–224 effectives 192–194 sous-réseaux 67–68
SSH (Secure Socket Shell) capture de paquets création de NSG 65–66
agents SSH pour se connec- réseau 194–196 création de règles de fil-
ter à des machines vérification des flux trage des NSG 69
virtuelles 72–73 IP 190–192 Voir également trafic sécurisé,
connexion aux machines vir- diagnostics des machines création d’applications
tuelles avec 23–26 virtuelles 181–183 Web avec
stockage métriques de trafic direct, routage 116–118
dans Azure 16–17 performance 184–189 trafic réseau
dans les machines symbole de caret 26 gestion 162–180
virtuelles 52–54 systemAssignedIdentity 239 routage 162–180
358 INDEX

trafic sécurisé, création d’appli- déploiement d’exemples


cations Web avec 70–73 de sites HTML 38–41
création de connexions au création avec un trafic
réseau par accès à sécurisé 70–73
distance 70–71 création de connexions au
création de machines réseau par accès à
virtuelles 71–72 distance 70–71
utilisation d’agents SSH pour création de machines
se connecter à des virtuelles 71–72
machines virtuelles utilisation d’agents SSH
72–73 pour se connecter à des
trafic Web machines virtuelles
autorisation pour atteindre 72–73
les machines création de bots 276–277
virtuelles 26–28 diffusion en continu de don-
création de règles pour nées Azure IoT Hub
autoriser 27 dans 323–329
Transfert d’état représentation- exécution de bots avec
nel (REST) 30 LUIS 280–282
TTL (Time to Live) 171 gestion 41–44
types de ressources 86 mise à l’échelle 131, 139–142
WebSocket 326
U
Z
UTC (temps universel
coordonné) 206 Zones de disponibilité
Utilitaires DevOps Azure 7 création de machines vir-
tuelles dans 103–104
création de ressources réseau
V dans 102–103
redondance des infrastruc-
variable access_token 242
tures avec 100–104
Variable connectionString 321
ZRS (stockage redondant par
variable
zone) 51
database_password 243
variable iotconnectionstring
326
variables 83
vérification des flux IP 190–192
verrous 81–82
VHD (disque dur virtuel) 47
vidages sur incident 186
virtualisation 10–11
VMRestartPending 231
VMSS à une seule machine
virtuelle 134

W
Web Apps
conception de bots avec
LUIS 280–282
création 35–41
création d’applications
Web de base 35–38
ÉCONOMISEZ 40 % SUR LES LIVRES ET VIDÉOS DES ÉDITIONS MANNING!
Manning publie des livres et des vidéos de grande qualité pour les professionnels de la technologie comme vous. Utilisez ce code de
réduction spécial pour économiser 40 % sur tous les livres électroniques, les livres imprimés, les programmes d’accès anticipé
Manning (MEAP) et les cours vidéo en ligne sur manning.com, y compris sur cette sélection de titres. Il vous suffit d’entrer azuremsft
dans la fenêtre de code promotionnel au moment de valider votre commande.

C omptant des centainesEde

Microsoft Azure Sest


ST fonctionnalités et de
services intégrés,BlaLplateforme
LER
E vaste
infonuagique
et puissante. Pour la
maîtriser, vous avez besoin d’un guide fiable. Dans ce
livre, Iain Foulds, ingénieur Microsoft et formateur Azure,
aborde les compétences de base dont vous avez besoin
Learn Windows PowerShell in a Month of Lunches .NET Core in Action
par Don Jones et Jeffery Hicks, Dustin Metzgar, juillet
décembre 2016, 384 pages 2018, 288 pages

Autres livres de la collection Dînez avec Azure pendant un mois


Learn PowerShell Scripting in a Month of Lunches
Learn System Center Configuration Manager in a Month of Lunches
Learn Active Directory Management in a Month of Lunches
Learn Windows IIS in a Month of Lunches
Learn Linux in a Month of Lunches
Learn Amazon Web Services in a Month of Lunches
Learn Git in a Month of Lunches
Learn Cisco Network Administration in a Month of Lunches

Livres pour les développeurs Microsoft et les professionnels de l’informatique


C# in Depth, quatrième édition ASP.NET Core in Action
Entity Framework Core in Action Reactive Applications with Akka.NET
Functional Programming in C# Microservices in .NET Core
Concurrency in .NET Kubernetes in Action
Docker in Action, deuxième édition Docker in Practice, deuxième édition

Lisez gratuitement les livres des éditions Manning sur liveBook


La plateforme liveBook de Manning offre une expérience de lecture en ligne agréable et flexible. Chaque
jour, vous bénéficiez pendant cinq minutes d’un accès complet GRATUIT à tous les livres des éditions
Manning. Dans liveBook, vous pouvez
• Poser des questions, partager du code et des exemples et interagir avec
d’autres lecteurs dans le forum liveBook.
• Acheter des chapitres, des sections ou des paragraphes en utilisant des jetons Manning.
• Effectuer une recherche en texte intégral dans tous les livres Manning, y compris ceux
que vous ne possédez pas.
• Inscrivez-vous GRATUITEMENT sur liveBook à l’adresse livebook.manning.com.

Vous pouvez utiliser vos cinq minutes d’accès GRATUIT comme vous le souhaitez : démarrez
et arrêtez le minuteur, passez d’un livre à l’autre et essayez les exercices interactifs. Connect-
ez-vous et parcourez le site. C’est sans risques.
NUAGE/AZURE
Dînez avec
AZURE
PENDANT UN MOIS ET DEVENEZ EXPERT
Iain Foulds

C omptant des centaines de fonctionnalités et de


services intégrés, la plateforme infonuagique « Une excellente façon de
Microsoft Azure est vaste et puissante. Pour la comprendre l’étendue des offres
maîtriser, vous avez besoin d’un guide fiable. Dans ce
Azure grâce à une approche
livre, Iain Foulds, ingénieur Microsoft et formateur Azure,
aborde les compétences de base dont vous avez besoin concise axée sur l’activité. »
pour créer et gérer des applications dans le nuage. –Dave Corun, Avanade
« Une excellente introduction à
Dînez avec Azure pendant un mois et devenez expert vous
Azure comportant de nombreux
enseigne les techniques fondamentales pour développer,
exemples pratiques, couvrant un
déployer et exécuter des applications infonuagiques avec
Azure. Grâce à ce livre, vous maîtriserez les bases, large éventail de sujets actuels. »
notamment la configuration de machines virtuelles basées –Sven Stumpf, ING-DiBa
sur le nuage, le déploiement de serveurs Web et l’utilisation « Un livre incroyable rempli
de banques de données hébergées. En étudiant les 21 leçons d’informations, parfait pour
soigneusement préparées, vous approfondirez des concepts
apprendre en un seul mois les
essentiels tels que la sécurité, la mise à l’échelle et
l’automatisation. Vous aborderez même les services concepts de base et avancés
préconfigurés d’Azure pour les conteneurs de machines et d’Azure! »
l’informatique sans serveur! –Sushil Sharma, Galvanize
« Azure est comme un océan. Ce
CE QUI VOUS ATTEND
livre vous maintient à flot en
• Mise en route, depuis votre première connexion
• Développement et déploiement de serveurs Web vous apportant un mois de
• Sécurisation de vos applications et données leçons riches en activités
• Automatisation de votre environnement pratiques et en exemples. »
• Services Azure pour l’apprentissage automatique, –Roman Levchenko
Microsoft MVP
l’informatique sans serveur et plus encore
Les lecteurs doivent être en mesure d’écrire et de
déployer des applications Web ou client/serveur simples.
Iain Foulds est ingénieur et développeur de contenus
chevronné chez Microsoft.
Pour télécharger gratuitement le livre électronique au format PDF, ePub et Kindle,
les propriétaires de ce livre doivent se rendre sur
www.manning.com/books/learn-azure-in-a-month-of-lunches

44,99 $US/59,99 $CA


[livre électronique inclus]

Vous aimerez peut-être aussi