Académique Documents
Professionnel Documents
Culture Documents
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
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
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.
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
vii
viii SOMMAIRE
1 Avant de commencer
1.1 Public visé 3
3
ix
x SOMMAIRE
et résolution DNS 62
SOMMAIRE xi
machines virtuelles 72
5.4 Exercice : installation et test du serveur Web LAMP 74
balises 82
6.2 Modèles Azure Resource Manager 83
Création et utilisation de modèles 84 Création de plusieurs types de
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
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
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
l’intention avec LUIS 277 Création et exécution d’un bot d’appli Web
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
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
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.
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
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
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.
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.
Essayer maintenant
Respectez les étapes décrites dans cette section pour créer votre compte Azure gratuit.
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.
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
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.
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
Hyperviseur Hyper-V
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
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.
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.
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!
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.
(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.4 Une paire de clés SSH créée dans Azure Cloud Shell avec la commande ssh-keygen
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.
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.
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.
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.
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.
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
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
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.
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
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.
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.
Essayer maintenant
Pour créer votre application Web, procédez comme décrit ci-dessous.
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
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.
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.
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
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.
É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.
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.
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 :
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
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.
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
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.
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.
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.
Essayer maintenant
Ajoutez un disque de données supplémentaire à votre machine virtuelle, comme indiqué
ci-dessous.
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.
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
Machine
Machine virtuelle virtuel à boîte
Web de saut
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
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éé.
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.
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
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!
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.
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.
Appliquer la Oui
règle NSG
suivante
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
Essayer maintenant
Pour associer votre sous-réseau virtuel à votre groupe de sécurité réseau, procédez
comme décrit ci-dessous.
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
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.
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
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.
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.
Réseau virtuel
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.
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.
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.
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.
77
78 CHAPITRE 6 Azure Resource Manager
Réseau virtuel
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
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.
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.
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
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.
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.
ê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.
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.
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.
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.
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.
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.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.
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.
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.
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.
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.
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.
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.
Essayer maintenant
Pour voir comment vos machines virtuelles sont distribuées dans un groupe de disponibi-
lité, procédez comme suit.
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.
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.
Europe de l’Ouest
Adresse IP publique
Équilibreur de charge
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.
Essayer maintenant
Pour créer des ressources réseau redondantes dans les zones de disponibilité, procédez
comme suit.
Essayer maintenant
Pour créer une machine virtuelle dans une zone de disponibilité, procédez comme suit.
104 CHAPITRE 7 Haute disponibilité et redondance
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
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.
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.
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.
Machines Machines
virtuelles virtuelles
d’arrière-plan
frontales
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.
--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.
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.
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.
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.
É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
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.
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
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.
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
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.
Essayer maintenant
Pour créer les ressources réseau supplémentaires comme le montre la figure 8.9, procé-
dez comme suit.
Réseau virtuel
Sous-réseau
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
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
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.
Essayer maintenant
Pour installer un serveur Web sur vos machines virtuelles, procédez comme suit.
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/
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.
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
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
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
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.
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).
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.
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.
Essayer maintenant
Pour créer un VMSS avec Azure CLI, procédez comme indiqué ci-après.
--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!
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.
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
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.
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.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.
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.
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.
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
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.
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.
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
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
Compte Cosmos DB
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
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.
É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.
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.
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.
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.
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!
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
Essayer maintenant
Pour afficher les clés de votre compte Cosmos DB, procédez comme suit.
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.
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
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.
162
Qu’est-ce qu’Azure DNS? 163
Client
Londres
Internet
Régions Azure
Zone Azure DNS
azuremol.com Région de l’est des Région de l’Europe
États-Unis de l’Ouest
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
Infrastructure Azure
Applicaon Web
Azure DNS
53.17.91.8
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
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.
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.
Profil avec la
méthode de routage
géographique
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.
az webapp create \
--resource-group azuremolchapter11 \
--name azuremoleastus \
--plan appserviceeastus \
--deployment-local-git
az webapp create \
Routage mondial et résolution avec Traffic Manager 171
--resource-group azuremolchapter11 \
--name azuremolwesteurope \
--plan appservicewesteurope \
--deployment-local-git
Profil avec la
méthode de routage
géographique
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
Essayer maintenant
Pour associer des points de terminaison à des profils et mettre fin au routage géogra-
phique, procédez comme suit.
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
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.
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
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.
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
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
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
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.
181
182 CHAPITRE 12 Surveillance et dépannage
Essayer maintenant
Pour créer une machine virtuelle et activer les diagnostics de démarrage, procédez
comme décrit ci-dessous.
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.
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.
Essayer maintenant
Pour activer l’extension de diagnostics de machines virtuelles, procédez comme suit.
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.
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.
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.
(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.
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.
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!
Essayer maintenant
Pour déterminer l’endroit où une règle NSG est appliquée, procédez comme suit.
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.
Essayer maintenant
Pour installer l’extension de machine virtuelle Network Watcher et capturer des paquets
réseau, procédez comme suit.
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.
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
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
201
202 CHAPITRE 13 Sauvegarde, récupération et réplication
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.
À 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.
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
Sauvegarde
quodienne
Machine
Perte de données acceptable
virtuelle
protégée
Sauvegarde
hebdoma-
daire
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
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.
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.
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.
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
Essayer maintenant
Pour restaurer une machine virtuelle complète, procédez comme suit.
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.
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.
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.
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
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
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
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.
219
220 CHAPITRE 14 Chiffrement des données
011
110
101
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é.
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.
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.
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.
(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]
"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
}
}
]
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.
Essayer maintenant
Pour créer une chambre forte et une clé de chiffrement, procédez comme suit.
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
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
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é.
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.
{
"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é.
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.
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
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
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.
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
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
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é.
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
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
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
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!
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.
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.
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é.
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
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.
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.
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.
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
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.
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.
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)
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.
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
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.
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.
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.
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.
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.
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
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.
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!
Abonnement Azure
Plan de service d’applicaon
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.
Essayer maintenant
Pour créer une application LUIS et utiliser l’apprentissage automatique pour la former,
procédez comme suit.
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 »
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
Intenons
Salutaons
afficherMenu
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.
Essayer maintenant
Pour mettre à jour votre bot d’application Web avec votre bot LUIS formé, procédez comme
suit.
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
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
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.
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
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.
Essayer maintenant
Pour créer un compte Azure Automation et des exemples de procédures opérationnelles,
procédez comme suit.
Essayer maintenant
Pour voir les actifs configurés et les exemples de procédures opérationnelles, procédez
comme suit.
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.
"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.
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.
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!
Essayer maintenant
Pour voir la procédure opérationnelle en action, procédez comme suit.
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.
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
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).
(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!
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!
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
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.
Hôte de conteneurs
Exécuon des conteneurs (comme Docker)
Conteneur 1 Conteneur 2
Bibliothèques principales + binaires Bibliothèques principales + binaires
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.
Hôte de virtualisaon
Hyperviseur
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é
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.
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
Microservices
Applicaon monolithique
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
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
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
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
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.
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.
Essayer maintenant
Pour voir les informations sur votre grappe AKS, procédez comme suit.
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.
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!
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
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.
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.
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!
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
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.
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.
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.
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
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.
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é.
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.
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
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.
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.
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.
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.
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
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.
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.
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.
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
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.
Essayer maintenant
Pour créer une application logique, procédez comme décrit ci-dessous.
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.
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
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).
Essayer maintenant
Pour exécuter votre simulateur Raspberry Pi et tester votre application logique, suivez la
procédure suivante.
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).
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.
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!
349
350 INDEX
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
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.
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