Outre notre infrastructure informatique interne, nous avons environ 500 machines Linux hébergeant nos services pour le monde en ligne. Ils sont regroupés dans un groupe de clusters comme Database An, Product An, NFS, Backoffice, etc. De plus, ils sont administrés par un prestataire externe, selon nos spécifications et exigences.
Cependant, nous rencontrons beaucoup de problèmes lors du développement, du déploiement et du déploiement de logiciels (Web), en particulier parce que les environnements de développement et de mise en scène n'ont presque rien en commun avec les systèmes en direct (j'épargne les détails désagréables ..) .
Ainsi, j'ai essayé de créer des machines virtuelles, j'ai copié les différents systèmes live aussi exactement que possible et les ai préparés à se connecter, par exemple, aux bases de données de développement au lieu des "vraies" de manière transparente pour les développeurs (ce n'est pas le cas root
). Cela fonctionne plutôt bien, mais ...
Je me demandais comment on pouvait administrer ces systèmes à distance et en masse ? Y a-t-il une famille de logiciels que je ne connais pas? Ou, au moins, certaines techniques ou principes que l'on devrait connaître?
Nous fournirions à chaque développeur un tas d'images à exécuter localement (VirtualBox). Le département QA. obtiendrait des clusters virtuels (XEN ou Hyper-V). Si je dois fournir un module serveur supplémentaire, réacheminer une nouvelle connexion à la base de données ou simplement mettre à jour tout ce qui est fourni par le gestionnaire de paquets ... comment pourrais-je le faire sans être obligé de me connecter à chaque système et / ou demander à mes collègues de télécharger et d'exécuter un script de montage?
Je pense qu'il existe de nombreuses solutions. Eh bien, d'une manière ou d'une autre, je suis trop stupide pour entrer les bons mots clés dans les moteurs de recherche ... Ou ce problème n'est-il pas aussi trivial qu'il y paraît?
Pour mémoire:
- Presque tous les systèmes exécutent Debian GNU / Linux 6.x "squeeze"
- Aucun développeur n'est obligé d'utiliser un système d'exploitation particulier sur son poste de travail
- Le budget est certes limité, mais pas trop petit pour acheter des logiciels propriétaires
- Une solution qui impliquerait notre fournisseur susmentionné est préférée
cucumber-puppet
. Bien sûr, vous pouvez développer / développer votre propre cadre en réutilisant les composants existants, mais il semblait que OP n'a rien en place actuellement et si vous partez de zéro, je pense qu'il est préférable d'utiliser un cadre existant.Ulrich a déjà donné la réponse concernant le déploiement de logiciels et la configuration automatisée du serveur.
Les principes sous-jacents sont
Vous avez demandé un outil pratique pour gérer des masses de serveurs - mon préféré est cluster-ssh (
cssh
). Tapez une fois et effectuez des modifications sur de nombreux serveurs simultanément.Si vous découvrez un problème et avez un correctif pour le supprimer:
Si vous faites face à des masses de serveurs pour résoudre ce problème, c'est un processus qui doit être bien documenté et à la fin une autre équipe devrait vérifier si le correctif a été complètement appliqué.
Nous utilisons à cet effet Mantis (open source, PHP).
la source
Je gère environ 30 produits et quelques centaines de serveurs dans plusieurs pays. Je suis le gestionnaire de configuration logicielle, donc je n'ai pas d'accès root (par conception), je ne touche pas aux bases de données ou à leurs serveurs (encore une fois, par conception) et je dois sauter beaucoup de cerceaux à cause de la sécurité de l'entreprise. Mais je gère les configurations de test, de mise en scène et de production, y compris les liens et les modifications de base de données. J'ai un certain nombre de scripts qui vont vers les serveurs en utilisant des combinaisons de
ssh
,python
et des scripts shell.Les principales choses à penser sont:
ssh
suffisant et à partir d'un emplacement central sécurisé?ssh
pour l'exécuter à distance? Pouvez-vous l'écrire avecexpect
ou simplement un appel en ligne de commande?VirtualBox fournit de nombreux outils de ligne de commande que vous pouvez administrer via des
ssh
systèmes comme ou commepuppet
le mentionne Ulrich.la source