Tes serveurs Debian marchent sur des œufs ?
Je t’aide à améliorer la stabilité et la qualité de ton infrastructure serveurs Debian Linux chez OVH à l’aide du gestionnaire de configuration Puppet.
😱 Ton inquiétude concernant une éventuelle panne prolongée grandit
Tu sais que l’état actuel de tes serveurs Debian est sensible au moindre chaos imprévu.
Serais-tu capable de reconstituer un serveur en partant de rien ? (par exemple à la suite d’un incendie)
Es-tu vraiment certain de comprendre la configuration actuelle de tes serveurs ?
Une panne peut arriver et le temps d’intervention peut être rallongé s’il n’y a pas une bonne maîtrise.
Donc tu ne te sens pas tranquille de rester dans cette situation.
📜 Est-ce que tu gères tes serveurs à l'aide de mémo ?
Tu as de petites notes sur la configuration utilisée par tes serveurs.
Tu les as préparé au tout début, lors de l’installation initiale du serveur.
Mais avec le temps, tu as commencé à changer la configuration sur les serveurs et essayant, plus ou moins, de mettre à jour le mémo.
C’est là que ça commence à dériver, un mémo qui n’est déjà plus exact. Et au fil du temps, le mémo ne sera jamais plus qu’un document périmé.
Au delà du problème d’obsolescence du mémo, réinstaller un serveur ou autre identique prend plus de temps et on n’est jamais certain de ne pas manquer une étape.
L’installation du serveur n’est plus maîtrisée.
🚧 Ton serveur de prod était-il en fait le serveur de dev ? (au tout départ)
Au départ, on commence par préparer un serveur afin de tester un service ou de chercher la bonne configuration (plus rapide que d’utiliser Puppet ou autre). Puis finalement, le serveur de dev se retrouve promu serveur de prod.
Et cette situation dure depuis longtemps (années ?), le système n’est peut-être plus à jour, une vieille Debian obsolète ?
Chaque moindre changement dans la configuration peut aboutir plus facilement à une panne.
📂 Penses-tu que la sauvegarde est une vraie sauvegarde ?
Et oui, le serveur de prod fonctionne mais il n’y a peut-être aucune sauvegarde incrémentale. (Un simple snapshot automatique n’est pas une vraie sauvegarde).
Parce qu’en plus de réussir à mettre en ligne un serveur de prod stable, mettre une sauvegarde est compliquée.
Parfois, un espace de sauvegarde est fourni par l’hébergeur mais ça ne sert à rien. Il faut pouvoir s’en servir réellement comme stockage de sauvegarde incrémentale.
La sauvegarde doit être distante ou avoir une archive de secours distante chez un hébergeur différent.
Là aussi, c’est une étape nécessaire et je suis conscient que ça devient prise de tête quand on ne sait pas s’y prendre, quel outil choisir,…
📑 Et si maintenant la documentation et les scripts d'installation ne faisaient qu'un ?
Finalement, plutôt que d’avoir une documentation jamais à jour par rapport à la configuration des serveurs, autant ne pas écrire de documentation.
Je suggère de ne pas mettre de méthode d’installation dans la documentation et de la garder pour le reste (schéma infrastructure,…).
L’idée est maintenant d’utiliser des scripts ou un langage qui sert également de recette d’installation.
Il y a très longtemps, il y avait un outil « CFEngine », un automate pour configurer les serveurs en rapport avec un état d’installation supposé être.
Et puis un des développeurs voulaient le réécrire pour le rendre rapide, il n’a jamais pu. Enfin, si, il a quitté le projet et a fondé son propre système, nommé « Puppet ».
Depuis, d’autre outils sont aussi apparus dont un, très connu : « Ansible ». De nos jours, celui-ci est plus lent à s’exécuter que Puppet. Il est très accessible car il ne nécessite pas d’apprendre le langage Puppet. Mais la contre-partie aussi, il est plus limité par moment (je n’ai plus les limites en tête, j’avais essayé de réécrire une recette Puppet avec Ansible et le niveau n’est clairement pas le même). Les modules Ansible (autre que les modules intégrés) sont de mauvaises qualité. Les modules de la forge Puppet qui sont très utiles, sont très bien écrits et maintenus.
J’utilise Puppet depuis 2009 dans une configuration « simple » (juste un seul serveur Puppet) : on peut en avoir plusieurs si l’infrastructure est énorme.
L’utilisation de Puppet pousse vers une meilleure maîtrise de son infrastructure donc, moins de hasard dans son fonctionnement, une meilleure qualité de service.
Régulièrement, un agent Puppet contrôle la configuration pour en vérifier l’état et agir si nécessaire.
Bien sûr, l’idée est de ne pas le contourner et d’écrire un maximum de configuration dans Puppet.
🚨 Surveiller l'exécution de Puppet Linux et recevoir des alertes
Il ne suffit pas de laisser Puppet se lancer automatiquement. Il faut le surveiller car en cas d’erreur, il ne sert plus à rien.
J’installe un serveur Prometheus qui interroge le serveur Puppet et en cas d’erreur, je reçois une alerte. Si tu as déjà un autre système de surveillance, il faudrait adapter.
🛏 Éliminer le chaos et le hasard dans ton infra et dormir tranquille
Finalement, c’est ce qu’on veut à la fin.
Avoir un fonctionnement général maîtrisé, éviter les pannes sans être obligé d’avoir une astreinte forte.
Passer plus de temps dans la préparation d’un service pour en améliorer la qualité finale.
Et obtenir le prestige d’une infrastructure système professionnel parfaite et pouvoir en parler dans son milieu professionnel.
S’appuyer sur quelqu’un qui connaît Puppet et Linux et qui pourra t’accompagner.
🛎 Mon tarif journalier moyen ?
700 € HT
Qui suis-je ?
Bonjour/bonsoir 😀,
Je m’appelle Christophe et je suis ingénieur système Linux depuis plus de 25 ans.
J’ai travaillé plus de 10 ans au service de la Recherche française (Inria, CNRS).
Mon environnement de travail ?
Je travaille exclusivement sur Linux Mint, qui repose sur la distribution GNU/Linux Debian utilisée par les serveurs que je gère.
Ma première « distribution » Linux ?
Slackware, installé avec *une seule* disquette d’une capacité de 1,47 Mo. À l’époque, je n’avais pas internet depuis mon PC, je me servais donc de cette disquette pour télécharger Slackware à l’université. Je découpais les téléchargements en petit bout pour le faire rentrer sur la disquette et pouvoir les emmener un par un jusque chez moi. (« Oui, l’opération était un peu longue, oui j’ai beaucoup marché »).
Mon premier projet important ?
Une salle informatique en libre-service avec accès Internet pour les étudiants, entièrement sous Linux. Un dispositif (conçu par moi-même) de gestion de quota d’heure Internet permettait de financer les dépenses matérielles. L’interface du routeur Linux avait été développée en langage Perl et PHP et permettait aux personnes qui s’occupaient du club, d’accueillir les étudiants, de vendre du quota d’heure d’accès à Internet et de faire la comptabilité.
Comment Puppet est-il arrivé dans ma vie ?
Le problème que j’avais était que les documentations techniques concernant l’installation des serveurs n’étaient jamais à jour. Même en intervenant seul, je n’étais pas certain de savoir exactement ce qui avait été configuré sur un serveur.
J’avais commencé à regarder CFEngine et exactement à ce moment Puppet est arrivé, conçu par un ancien développeur de CFEngine.
Au départ, le language était très limité et lent à l’exécution. Puis avec le temps, il est devenu performant.
Entre temps, Ansible est arrivé. Je l’ai essayé, il était plus limité que Puppet, à peine plus simple et beaucoup plus lent à l’exécution. Les modules Ansible de la communauté sont de très mauvaise qualité contrairement à ceux de la forge Puppet. Et j’ai la problématique de pouvoir relancer Ansible toutes les 30 minutes pour s’assurer d’un état, que ce n’était pas vraiment pensé pour ça. J’ai donc abandonné Ansible assez rapidement.
Je me repose beaucoup sur les modules Puppet disponibles sur la forge. Je me suis fait un ensemble de recettes qui me servent souvent.
Envie de te reposer sur Puppet pour obtenir stabilité et fiabilité des services ?
Si toi aussi, tu souhaites être tranquille et savoir que tout est configuré sans surprise, et peut-être apprendre à utiliser Puppet, alors sans doute qu’on peut travailler ensemble.
Je t’invite donc à prendre rendez-vous.
En attendant, je te souhaite une excellente réussite dans ton projet !