Azure Cloud Shell
Salut !
Dans mes précédents articles, j’avais évoqué Azure Cloud Shell (notamment ici). Aujourd’hui est venu le temps de t’en dire plus au sujet de Cloud Shell.
C’est quoi Azure Cloud Shell ?
Comme son nom l’indique, Azure Cloud Shell est un shell (un terminal) à travers lequel on peut accéder au Azure CLI (Command Line Interface) et gérer nos ressources Azure en ligne de commande.
Le terminal peut être exploité soit en Bash ou en PowerShell. Ainsi, les pro Linux et les pro Windows seront contents 😉
Azure Cloud Shell a été annoncé lors de la conférence Microsoft Build 2017, c’est donc une fonctionnalité relativement récente d’Azure.
En quoi ça me concerne ?
Nous sommes dans un monde où l’automatisation prend de plus en plus de place, notamment avec la mouvance DevOps. Je tiens à souligner que DevOps va bien plus loin que la « simple » automatisation, mais ça, c’est un autre sujet 😉
Néanmoins, lorsqu’on vise une approche de livraison continue ou de déploiement continu (ne pas confondre les deux termes mais, ça aussi, c’est un autre sujet), on se doit d’automatiser le plus possible afin de réduire les délais de mise en production au strict minimum.
De ce fait, la ligne de commande devient un outil indispensable.
Aussi, si tu es un sysadmin, tu seras certainement content de savoir que tu peux accomplir tes tâches d’administration depuis n’importe quelle machine (via Azure Cloud Shell), sans avoir à installer Azure CLI, des modules PowerShell ou tout autre librairie ou Framework.
C’est là qu’Azure Cloud Shell prend tout son sens !
Où puis-je utiliser Azure Cloud Shell ?
Azure Cloud Shell est accessible via :
- Le portail d’Azure (https://portal.azure.com)
- Le site https://shell.azure.com
- L’application Mobile Azure (iOS et Android)
- L’extension suivante pour Visual Studio Code : https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account
Voici, à titre d’exemple, Azure Cloud Shell qui s’exécute dans l’application mobile Azure sur Android :
Activer Azure Cloud Shell
Lors de sa première utilisation, il te faut activer Azure Cloud Shell. Concrètement, cela signifie que tu dois créer un compte de stockage (Azure Storage Account) pour Cloud Shell. C’est le seul prérequis à l’utilisation d’Azure Cloud Shell (en plus, bien évidemment, d’utiliser un browser décent).
Le compte de stockage qui sera créé te permettra d’y sauvegarder ta session de travail, tes fichiers et tes préférences.
Commences par lancer Cloud Shell en cliquant ici :
S’il s’agit de la première exécution, tu seras invité à créer un compte de stockage. Tu as deux options : la configuration « basique »… :
… ou la configuration « avancée » :
Azure Cloud Shell: le tour du propriétaire
Une fois Azure Cloud Shell activé, tu verras apparaitre le terminal.
À noter aussi que tu as quelques options via la barre d’outils du terminal :
Tu peux (dans l’ordre des options, de gauche à droite) :
- Passer d’un terminal Bash à un terminal PowerShell et inversement
- Redémarrer le terminal
- Obtenir de l’aide
- Configurer la taille et la police du terminal
- Uploader un fichier dans ton CloudDrive sur ton compte de stockage
- Ouvrir une nouvelle session
Que puis-je faire avec Azure Cloud Shell ?
Pleins de choses ! Tu peux avoir un contrôle total sur tes ressources Azure via ce terminal et ce, grâce au Azure CLI installé par défaut dans Azure Cloud Shell et prêt à l’emploi.
Mais tu peux également :
- Invoquer les interpréteurs Java, Python, Go, NodeJS et .net core
- Gérer tes conteneurs Docker et tes clusters Kubernetes
- Gérer des bases de données, tel que SQL Database, MySQL ou Postgre
- Scripter tes infrastructures et automatiser tes déploiements avec Ansible ou Terraform
- Utiliser Git
- Utiliser un éditeur de texte tel que vim, nano, emacs
Pour la liste complète et les mises à jour, réfères-toi au site de Microsoft : https://docs.microsoft.com/en-us/azure/cloud-shell/features#tools
Voici un exemple de création d’une Web App (via un Azure App Service) avec un runtime Python 3.4 en utilisant le Azure CLI :
https://gist.github.com/BelRarr/edcf8fe1625a7fc1618f76a79548c135
Pour la référence complète des capacités d’Azure CLI, c’est par ici que ça se passe : https://docs.microsoft.com/en-us/cli/azure/reference-index?view=azure-cli-latest
Astuce : quand tu n’es pas trop sûr de la syntaxe d’une commande, fais un « TAB TAB » et tu obtiendras de l’aide.
shell.azure.com ?
Il s’agit d’une page web dédiée à Cloud Shell, sans aucune autre fioriture. Tu n’as donc pas accès au portail d’Azure au grand complet, seulement au terminal.
Lorsque tu te connectes au site, si tu as plusieurs souscriptions Azure d’associées à ton compte, tu seras invité à sélectionner celle avec laquelle tu veux travailler.
Wow! C’est super intéressant. Mais comment ça marche ?
Azure Cloud Shell fournit un accès sécurisé au terminal à une machine virtuelle Linux sans qu’il soit nécessaire d’installer et de gérer une machine par toi-même. Azure Cloud Shell fournit des machines à la demande. Cela signifie que lorsque tu lances ton Cloud Shell, une machine virtuelle sera déployée automatiquement.
Tu as remarqué, lors du lancement d’Azure Cloud Shell, l’apparition de ce message « Requesting a Cloud Shell » ? Cela signifie qu’une VM est en cours de déploiement juste pour toi ! 🙂
Quelques principes à garder en tête
- Azure Cloud Shell fonctionne sur un hôte temporaire, fourni par session et par utilisateur
- Azure Cloud Shell expire après 20 minutes d’inactivité
- Azure Cloud Shell nécessite le montage d’un partage de fichiers Azure (C’est pourquoi le fameux compte de stockage est créé avant la première utilisation)
- Azure Cloud Shell utilise le même partage de fichiers Azure pour Bash et PowerShell
- Azure Cloud Shell se voit attribuer une machine par compte d’utilisateur (ce qui signifie que si tu ouvres plusieurs sessions du terminal depuis ton compte, tu n’auras pas plusieurs VM de provisionnées mais bien une seule)
- Bash persiste le contenu de ton répertoire $Home en utilisant une image de 5 Go conservée dans ton partage de fichiers, pour une utilisation lors d’une future session (c’est notamment là que sont stockées tes clés SSH)
- Les autorisations sont définies en tant qu’utilisateur Linux standard dans Bash
Combien ça coûte ?
Je ne suis pas fan de faire mention de prix, surtout qu’avec Azure, les prix varient assez fréquemment (souvent à la baisse, heureusement).
Toutefois, j’en fais mention ici car, tel que nous l’avons mentionné plus haut, lorsque tu invoques Azure Cloud Shell, une VM Linux (Ubuntu pour être exact) es provisionnée et t’es attribuée.
Ce qui est intéressant à noter, en termes de coûts, c’est que Microsoft ne te facture pas l’utilisation de la VM, seul le compte de stockage t’es facturé. C’est très intéressant car ça te fait faire de sacrées économies !
En conclusion…
Azure Cloud Shell apporte une nouvelle dimension à la façon de gérer tes ressources Azure. Tu peux à présent invoquer le Azure CLI depuis n’importe où et, ainsi, réagir rapidement aux demandes et aux imprévus.