Christophe TREMBLAY-GUILLOUX
Expert PUPPET et GNU/Linux Debian

Christophe TREMBLAY-GUILLOUX
Expert PUPPET et GNU/Linux Debian

Reprenons ensemble la maîtrise et l’évolution de
tes serveurs Linux Debian avec Puppet,
tout en te libérant du temps et sans babysitting technique.

Plus de 25 ans d'expérience avec toujours la simplicité en priorité

Avec une infrastructure solide, il n’y a plus automatiquement besoin d’une grosse équipe dédiée pour veiller sur ton serveur à la bougie.

Beaucoup d’applications critiques ont recours à la très haute disponibilité pour ne jamais avoir 1 seconde de panne pour leur application, ce qui induit automatiquement des infrastructures importantes avec plusieurs équipes dédiées qui peuvent se relayer jour et nuit.

Mais est-ce que la base de l’infrastructure permet au moins de réduire le risque de panne ?

Est-ce qu’une panne pourrait se résorber d’elle-même en attendant une analyse plus profonde du problème ?

L’art de complexifier ce qui n’a pas besoin de l’être.

De nos jours, beaucoup commencent par mettre en place leur environnement de production à l’aide de micro-services dans des conteneurs Docker orchestrés par kubernetes.

Mais pourquoi ?

Pour ne pas avoir à supporter et à communiquer avec un SysAdmin qui va essayer de cadrer l’environnement pour éviter les problèmes ensuite ? C’est à mon avis l’avantage caché tout en faisant croire que ça permet aux ops de travailler avec les devs. Par « travailler », je pense qu’ils veulent dire « travailler tranquillement sans le SysAdmin et inversement ».

Docker est une façon de déployer fonctionnelle. C’est comme sortir un plat surgelé et le réchauffer. Mais il faut vraiment que la construction de l’image soit absolument sans faille et reconstruite et redéployée à chaque fois qu’il faut changer un élément de l’image et tout relancer.

Docker donne trop de libertés aux Devs (nécessaire en phase de développement et pourquoi pas en début de production s’il n’y a pas de SysAdmin). Donc le conteneur peut contenir n’importe quoi et sera vu comme une boîte noire par le SysAdmin.

Un Dev n’aura pas la vision d’un SysAdmin et endosse, de fait, la casquette de SysAdmin dans son conteneur.

Le SysAdmin veut :

  • mettre à jour le système simplement et relancer les services rapidement
  • déployer ou faire évoluer la configuration des services sur plusieurs serveurs à l’aide d’un modèle qui va convenir au type d’application
  • entrer rapidement dans le système pour voir ce qui se passe en cas de besoin
  • intervenir sans se poser de question et ne pas se retrouver avec un système fait maison ou différent à chaque conteneur : avoir des environnements hétérogènes (et qui reposent sur des images de base qui sortent d’une source obscure et peu testée)
  • suivre et maîtriser le système sur la durée

Il est possible d’utiliser Docker uniquement, de façon minimaliste si on se limite à des applications sous licence libre livrées telles quelles mais en ayant conscience qu’en cas de problème, ce sera sans doute plus complexe d’intervenir.

Je préfère donc garder la maîtrise de la configuration système à l’aide de Puppet et t’inviter à gérer l’évolution de ton application métier, le cas échéant, avec Ansible. C’est une excellente façon de faire travaille le SysAdmin et Dev ensemble pour de vrai.

Avec de bonnes pratiques, il est possible d’atteindre un très bon taux de disponibilité avec une architecture simplifiée. Ce qui permet aussi une intervention plus rapide avec tout administrateur système.

Et aussi plus de 25 ans à travailler avec le Logiciel Libre

Je travaille uniquement sur distribution GNU/Linux basée sur Debian et entièrement chiffrée.

Quelle horreur de voir des soi-disant « Experts Linux » travaillant en réalité dans une machine virtuelle, elle-même gérée par un système vulnérable par nature.

Mon système (et celui de mes éventuels partenaires SysAdmin) démarre directement sur GNU/Linux et si j’ai besoin d’un système Windows, ce sera lui qui sera dans une machine virtuelle.

Je travaille depuis plus de 25 ans sur GNU/Linux et j’ai travaillé 10 ans au service de la Recherche française (Inria) pour gérer par exemple une forge logicielle et un cluster de calcul.

Slackware a été ma première distribution GNU/Linux, installée 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 petits bouts 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é »).

Difficile de tout faire ?

Tu sais que l’état actuel de tes serveurs Linux 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 ou d’un effacement)

Es-tu vraiment certain de comprendre la configuration actuelle de tes serveurs ?

Une panne peut arriver n’importe quand et le temps d’intervention peut être rallongé s’il n’y a pas une bonne maîtrise.

As-tu l’esprit tranquille de savoir que tout peut s’arrêter du jour au lendemain ?

📜 Est-ce que tu gères tes serveurs à l’aide de mémos ?

Tu as des 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 en 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 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,…

Tes services fonctionnent mais reposent sur du sable ?