Là où je travaille en ce moment, nous devons gérer la partie Linux de notre batterie de serveurs qui est un peu plus de 300 serveurs Linux. Cela comprend principalement HP Proliants, suivi par les IBM 3850, certaines lames IBM, VMware ESX et certains KVM pour nos serveurs de gestion internes.
cordonnier
Nous avons examiné le cordonnier, mais le problème était que le cordonnier est très spécifique à RHEL / Red Hat. Nous devons au moins prendre en charge RHEL et SLES, et Ubuntu est le suivant.
fantoche
Nous avons considéré la marionnette, mais nous avons décidé par la suite de ne pas l'utiliser car cela dépend de Ruby, ce qui signifie qu'une mise à niveau de Ruby pourrait potentiellement briser notre système de gestion.
fil chaud
Hotwire est ce que nous utilisons (développé en interne, mais est open-source), et ce depuis les dernières années. Il inventorie tout d'abord les systèmes qui vont être construits, ce qui signifie inventorier le centre de données, le rack, le matériel, le système d'exploitation, le réseau, etc., et ensuite effectuer la construction et le déploiement rapides. Une fois le système construit, l'inventaire automatique de hotwire maintient l'inventaire synchronisé, tandis que cfengine les maintient. Hotwire connaît le matériel du serveur en parlant aux données SMBIOS / DMI dans le BIOS via python-dmidecode .
Les points bonus sont qu'il combine l'inventaire et le processus de construction en un seul, donc il y a moins à gérer, et la fonction d'inventaire en direct est excellente car nous savons si quelque chose ne va pas bien.
Les inconvénients sont que l'interface utilisateur doit encore être polie, et il y a des bugs ici et là, mais le développement est toujours d'actualité et les bugs signalés sont corrigés relativement rapidement.
cfengine
Nous utilisons cfengine car à part ça, et marionnette, il n'y a rien d'autre. C'est en fait un bon outil, mais "bon" uniquement en fonction de la qualité de vos politiques - si vous définissez des politiques dangereuses, une petite erreur peut causer beaucoup de dégâts. Par exemple, par politique, nous ne «modifions» pas les fichiers, nous les remplaçons ou nous ne le faisons pas. Tous les fichiers remplacés ont également un en-tête qui permet à toute personne qui le modifie de savoir qu'il sera remplacé la prochaine fois qu'il s'exécutera (il est exécuté via cron toutes les heures).
La configuration et tous les fichiers envoyés par cfengine aux serveurs sont également conservés dans un SCM, et en utilisant des hooks post-commit, si possible, nous vérifions la syntaxe et si cela échoue, la validation est rejetée. C'est facile pour de belles applications comme Apache, mais pas si facile pour la plupart des applications d'entreprise.