Docker sur Azure : Setup une plateforme de Dev entière... pour pas cher
Introduction
Avoir sur une seule machine, réunis :
- Un agent de Build capable de produire des Builds qui s’exécutent en 29 secondes (packaging aspnetcore, Angular prod ainsi que tests unitaires compris)
- Un agent de Release
- 2 Environnements (Intégration continue et Recette), chacun composés de :
- Une api web aspnetcore
- Un front web Angular
- Une base de données Sql Server 2017
- Un service web Elastic Search
- Un service web Kibana
Le tout pour la modique somme de … moins de 1,5€ par jour ouvrés ?
Tout ça est rendu possible via l’utilisation d’une petite VM Docker sur Azure, dont la création est relativement simple.
Création de la VM sur Azure
Afin de bénéficier de la fonctionnalité d’auto-extinction du nouveau format des machines virtuelles, il est important de créer une VM utilisable directement dans un Resource Group.
Pour cela, la VM Ubuntu Server de Canonical (en version 16.04 LTS ou 17.10) est parfaitement adaptée.
Pour la connexion à distance, l’utilisation d’une paire de clé générée avec Git Bash me semble particulièrement pratique à l’usage (https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ssh-from-windows).
Une taille de VM raisonnable est recommandée, par exemple la taille D2S_V3 qui offre 2 vCPUs et 8 GO de RAM. Le prix affiché sur Azure correspondant moyennement à une VM allumée tout le temps, le coût réel de la plateforme (éteinte les soirs et weekend) est très sensiblement plus faible.
Bien entendu, il ne faut pas oublier d’activer l’auto-extinction de la VM durant la dernière étape de configuration de la VM.
Concernant l'auto-allumage, il existe plusieurs moyens tel que passer par une commande azure cli depuis une Release VSTS, etc. (Mais on me souffle dans mon oreillette que Nicolas est en pleine préparation d'un article autour de ce sujet)
La VM devrait être créée en quelques minutes.
Installation de Docker dans une VM Azure Ubuntu
Une fois déployée, il faut se connecter en ssh à la VM et y installer Docker.
L’installation de Docker sur Ubuntu est très simple et bien documentée, elle est découpée en 2 étapes :
- Configuration du dépôt de package pour accéder aux packages officiels de Docker
- Installation du package et exécution d’un conteneur de test hello-world
Bonus – Exécuter la commande docker sans devoir la précéder de sudo
Il suffit d’exécuter la ligne de commande ci-dessous
sudo usermod -aG docker ${USER}
(Cette commande permet de vous ajouter dans le groupe de sécurité « docker », et vous dispense donc du sempiternel sudo)
Une fois déconnecté / reconnecté, vous devriez maintenant pouvoir utiliser la commande docker directement.
Installation de l’agent de Build VSTS dans la VM
L’installation d’un agent de Build VSTS sur la VM se fait également de manière classique depuis le portail Web de VSTS.
À noter que pour télécharger l’archive depuis une invit de commande, il est possible d’utiliser la ligne de commande curl avec l'argument --output vsts-agent-linux-x64-2.127.0.tar.gz
Étant donné que toutes les activités de Build et de Release à exécuter peuvent se faire sous Docker, il n’est pas forcément nécessaire d’installer tous les outils classiques d'une machine de Build (npm, dotnet core, etc.).
Conclusion
Pour un coût de mise en place relativement faible, il est possible de mettre en place en quelques clics une machine qui pourra servir de plateforme de développement entière sous Docker (Build, Release, Environnement CI et Environnement de Recette).
Il ne reste ensuite plus qu'à y rajouter de nouveaux environnements. Par exemple une application Angular avec un back end aspnet core, couplé à du SQL Server 2017 comme décrit dans un de mes précédents articles.
Je ne suis pas rentré dans les détails de son utilisation au quotidien, mais Jonathan pourra témoigner de la facilité à monter un nouvel environnement en quelques minutes, via ajout de quelques fichiers de config et clone d'un environnement de Release VSTS :)
Commentaires