Contexte et problématique
Depuis quelques années (environ dix ans), l’univers informatique connait une révolution grâce à l’apparition d’une nouvelle méthodologie appelée DevOps. C’est en effet un nouveau système de pensées et de processus, qui permettent aux développeurs et aux équipes opérationnelles, de travailler ensemble.
Cette nouvelle méthodologie de travail est possible grâce à l’utilisation de plusieurs outils d’automatisation, de conteneurisation, de gestion d’intégration continue, de gestion des développements continus et des déploiements applicatifs. Ces outils sont très nombreux. On peut citer par exemple : Docker, Kubernetes, Terraform, GitLab, Jenkins, Vagrant, Puppet, Chef, Ansible … etc. Je ne peux pas tous les citer car ils sont très nombreux. Mais un outil en particulier attire mon attention aujourd’hui : Ansible .
Ansible est l’un des outils d’automatisation et d’orchestration des tâches les plus utilisés dans le milieu DevOps . C’est également une plate-forme logicielle qui permet de configurer et gérer des ordinateurs à distance. Cette gestion se fait entre un nœud de contrôle (la machine qui gère) et un nœud contrôlé (la machine qui est gérée ) . Il se pose donc le problème suivant :
Ansible peut être installé de façon native, uniquement sur des systèmes d’exploitations ayant un noyau Linux ou UNIX (Ubuntu, Debian, FreeBSD, CentOS, RedHat, Mac OS …etc ) . Pour que l’installation soit possible sur un système Windows, il faut impérativement utiliser un émulateur de type WSL (Windows Subsytem for Linux) tel que CygWin par exemple .
Cette contrainte a attiré mon attention et m’a ainsi poussé à effectuer des recherches, car j’aimerai comprendre pourquoi n’est-il pas possible d’installer Ansible directement et nativement sur un système d’exploitation Windows, sans passer par un émulateur intermédiaire .
Les raisons techniques
Afin de décrire les raisons qui expliquent cette incompatibilité, je me suis basé sur les travaux réalisés par Matt DAVIS , un ingénieur logiciel sénior qui travaille chez RedHat depuis plus de 20 ans et qui est focalisé sur le déploiement de Ansible dans les systèmes Windows . En effet, Matt a réalisé deux prototypes internes d’un contrôleur Windows pour Ansible, dans le but de voir quels seraient les différents bugs qui surviendront et de savoir à quel point il serait difficile de résoudre le problème.
Plusieurs causes peuvent être énumérées, mais j’en ai retenu deux :
- Le processus d’exécution de Ansible
Lorsqu’un contrôleur Ansible est exécuté, il effectue un appel système intensif qui permet de cloner le processus d’exécution de chaque tâche (ou de chaque module). Ce processus de clonage est appelé fork et est exécuté de la même façon sur tous les systèmes UNIX . Le problème principal qui se pose ici est que : Windows n’a pas de fork. Cela signifie que l’ensemble du processus décrit précédemment est non fonctionnel sur Windows. C’est d’ailleurs pour cette raison que les projets de compatibilité POSIX tel que Cygwin ont vu le jour .
Pour conclure cette partie, retenons que les processus utilisés sur Linux/UNIX, pour configurer Ansible, ne seront pas reconnus sur Windows. C’est le premier blocage .
- L’environnement POSIX et l’interpréteur de commande
le second problème qu’on peut évoquer est qu’une grande partie des modules Ansible/Python, des modules de base et d’autres parties du moteur d’exécution, supposent qu’ils s’exécutent dans un environnement POSIX. Cela implique par exemple l’utilisation des interpréteurs de commandes, des shebang, des systèmes de fichiers spécifiques … etc .
la plupart des ces éléments peuvent avoir un équivalent sur Windows, mais il y’ aura toujours une différence dans le processus d’exécution . De plus, les commandes exécutées à partir de Linux ne sont pas reconnues sur Windows ; Sans oublier l’impossibilité d’utiliser le protocole SSH sous Windows (on est obligé d’utiliser WinRM ou OpenSSH). C’est le deuxième blocage.
- Mon conseil
Avec tous les blocages évoqués ci-dessus, je vous conseille de rester sur un environnement UNIX si vous souhaiter installer Ansible. Les problèmes de compatibilités ne seront pas résolus d’ici peu car la majorité des informaticiens ne réfléchissent même pas à un éventuel changement . Pourtant avec une mobilisation générale (tant financière qu’humaine ), les choses pourraient changer.
Par contre si vous êtes vraiment un amoureux de Windows et que vous souhaitez tout gérer (et tout installer) à partir de Windows, la meilleure option qui s’offre à vous est l’utilisation d’un émulateur tel que Cygwin. Cependant, Ansible fonctionne sous le nouveau sous-système Windows pour Linux ( WSL ou WSL2) sur Windows 10. Bien qu’il ne soit pas officiellement supporté pour les charges de travail de production (ni par Ansible Core, ni par Microsoft), il fonctionne assez bien pour développer et tester le contenu Ansible.
Note : Surtout ne pas confondre nœud de contrôle et nœud contrôlé. La gestion d’un nœud contrôlé Windows à partir d’une machine Linux ne cause aucun problème. Ici, nous parlons uniquement du nœud de contrôle (la machine qui gère les hôtes) .
Mes sources :
Pour rédiger cet article, j’ai utilisé les sources suivantes :
About Us
KAMERCLOUD c’est :
– Une plateforme de formation et d’information ;
– Une micro-entreprise de Consulting Informatique .
Nos Consulting se font en Free-lance .
Pages
Contact
- contact@kamercloud.fr
- +33 07 56 94 76 84