Les 4 outils Open source essentiels pour automatiser l’IT
Jenkins, Cockpit, le pipeline GitOps de Kubernetes et Ansible sont les quatre environnements que tout administrateur système devrait maîtriser. Cet article explique leur principe et liste leurs accessoires.
Les activités informatiques d’une entreprise peuvent se développer si vite que les équipes techniques n’arrivent plus à suivre. Arrivé à un certain point, la seule option possible pour continuer à croître est de passer à l'automatisation. La bonne nouvelle est que, quels que soient vos besoins ou les solutions que vous utilisez, il existe quatre outils Open source, gratuits, qui vous permettront d’ajouter de l’automatisation à vos processus.
Jenkins pour enchaîner les processus de mise en production
Jenkins est un outil dit de CI/CD (intégrations et mises en production en continu). Il est crucial pour ceux qui déploient des applications et des services depuis une infrastructure Kubernetes. Jenkins sert à créer les scripts interactifs qui lanceront comme vous le souhaitez, les processus d’assemblage et de mise en route de vos travaux.
En tant qu'outil d'automatisation Open source, Jenkins s’interface naturellement avec de nombreux systèmes de gestion des versions successives, comme AccuRev, CVS, Apache Subversion, Git, Mercurial, Perforce, TD/OMS, Rational ClearCase et Rational Team Concert. Cela signifie que Jenkins peut se synchroniser avec des dépôts – des bibliothèques de packages logiciels - et lancer des assemblages automatiques qui tiennent compte des dépendances selon les numéros de version des applications. Jenkins peut d’ailleurs être configuré pour déclencher une nouvelle de compilation de code à chaque fois qu’il détecte que quelque chose a été modifié dans un dépôt.
Jenkins comprend par ailleurs de nombreux plugins pour enclencher des fonctions tierces, typiquement un système de notifications automatiques qui indique si une construction a échoué, est instable ou a réussi.
La console graphique de Jenkins appelle les processus d'automatisation des « jobs ». Les types de jobs possibles sont le processus libre (« free-style »), le pipeline qui enchaîne plusieurs processus, le processus multi-configuration, le dossier qui regroupe une famille de processus, le pipeline à multiples embranchements qui enchaîne les processus selon certaines conditions.
Jenkins s’installe sur la plupart des systèmes Linux, dont Debian, Fedora, Red Hat Enterprise Linux (RHEL) et Ubuntu.
Cockpit pour rendre les mises à jour transparentes
Cockpit est une console graphique au format web qui sert à administrer plusieurs fonctions des serveurs Linux. On l’utilise principalement pour automatiser la gestion des utilisateurs ainsi que l'installation des logiciels et de leurs mises à jour. Dans ce dernier cas, Cockpit peut être paramétré pour installer toutes les mises à jour ou seulement celles de sécurité et à quel moment les appliquer.
La subtilité est qu’une mise à jour impose généralement un redémarrage automatique du serveur. Pour contourner cet écueil, Cockpit permet de configurer le processus de manière à ce que le redémarrage du serveur ne pose aucun problème.
Cockpit est installable sur la plupart des systèmes Linux, mais il est automatiquement fourni sur ceux de Red Hat : CentOS et RHEL 8.
Le pipeline GitOps de Kubernetes pour automatiser les configurations de l’infrastructure
Bien que Kubernetes ne soit pas un outil d'automatisation à proprement parler, il dispose de puissantes fonctions pour industrialiser la mise en route des containers. En configurant son pipeline GitOps, d’ordinaire destiné aux développeurs, il devient possible d’industrialiser la mise en route des containers sans avoir à écrire à la main de longs scripts.
En l’occurrence, Kubernetes supporte de lancer un processus d’assemblage automatique décrit par un code que l’administrateur place dans un dépôt Git. L’idée consiste à ne pas mettre dans ce code des instructions de compilation pour une application, mais bien d’y enchaîner les outils de packaging, de monitoring ou de provisionnement de ressources. Citons Flagger, Flux, Helm, Prometheus et Terraform parmi les options possibles.
En procédant ainsi, le processus de déploiement automatique de containers devient plus intuitif et gagne en fiabilité. D’abord, les opérations d’infrastructure peuvent vérifier qu’elles sont cohérentes, par exemple qu’elles n’attribuent pas des ressources inexistantes. Ensuite, les configurations liées au réseau ou au stockage dans le cluster de containers, sont toujours celles enregistrées dans le dépôt Git, ce qui garantit leur uniformité. Enfin, les règles de sécurité et de résistance aux incidents sont également définies en amont, ce qui permet de mieux réfléchir à la manière de les rendre plus efficaces.
Ansible pour piloter les machines
Ansible est un logiciel de Red Hat qui utilise un langage de script simple pour automatiser la configuration et le fonctionnement de toutes les machines du réseau. Ansible fonctionne sur le principe d’un contrôleur qui pilote des nœuds. Notons qu’il n’y a pas d’agent à installer sur les nœuds : Ansible communique avec eux en SSH. Les tâches à effectuer sont décrites dans des Playbooks déclinables à tous les niveaux de l’infrastructure.
On se sert d’Ansible pour lancer des applications sur les machines virtuelles ou physiques, pour industrialiser des flux de traitements ou des systèmes d'approvisionnement en données, pour jongler entre les configurations système... Bref, pour transformer toutes les tâches d’administration répétitives en automatismes et ainsi faire gagner du temps à l’équipe IT. Sa seule limite est de ne pas pouvoir déployer lui-même les machines virtuelles ou mettre en route les serveurs physiques.
Ansible s’utilise en ligne de commande, mais des consoles graphiques tierces sont possibles. Parmi celles-ci, Rundeck est l’une des plus populaires.