Cela dépend de ce dont vous avez exactement besoin et de ce que vous recherchez. Mais en général il existe plusieurs solutions de "gestion de configuration comme :
- marionnette
- cuisinier
- cfengine
- ansible
- sel
etc. Personnellement, je recommanderais la marionnette car elle a une grande communauté et de nombreuses recettes externes fournies. Cela vous permet de configurer et de gérer automatiquement les systèmes. Si vous combinez cela avec vos propres dépôts et mises à jour automatisées via par ex. unattended-upgrades
vous pouvez automatiquement mettre à jour le système.
Une autre solution consiste simplement à fournir vos propres packages comme company-base
etc. qui dépend automatiquement du logiciel nécessaire et peut configurer votre système automatiquement.
Vous devriez également vous pencher sur les déploiements automatisés (barebone et virtualisés). Si vous combinez cela avec la gestion de la configuration ou votre propre référentiel, vous pouvez facilement automatiser et réinstaller vos systèmes. Si vous souhaitez vous lancer dans l'installation automatisée, jetez un coup d'œil à theforman qui prend en charge libvirt ainsi que les installations simples et a un support de marionnette intégré. Si vous voulez le faire vous-même, vous pouvez vous tourner vers kickstart (redhat et. al.) ou "preseeding" pour configurer automatiquement votre système. Pour Debian, vous pouvez également utiliser quelque chose comme debootstrap ou un wrapper nommé grml-debootstrap prenant en charge les images virtualisées.
Pour vous aider à fournir les images VirtualBox à votre développeur, jetez un œil à vagrant, il vous permet d'automatiser la création de systèmes virtualisés avec VirtualBox prenant en charge les scripts chef, puppet et shell pour personnaliser votre environnement virtuel.
Si vous souhaitez utiliser la solution de votre fournisseur existant, vous devez lui demander comment il gère vos systèmes, mais il s'agira probablement d'une sorte de gestion de la configuration. Il peut être possible d'exécuter leur agent sur vos systèmes si vous pouvez accéder au serveur de configuration.
Pour les mots-clés Google, consultez devops
, configuration management
, it automation
et server orchestration
.
Bref automatisez au maximum et ne pensez même pas à faire des trucs manuels.
Ulrich a déjà donné la réponse concernant le déploiement du logiciel et la configuration automatisée du serveur.
Les principes sous-jacents sont
- Définissez à quoi vos serveurs doivent ressembler :cela inclut les logiciels courants installés par défaut, le schéma de partitionnement et la disposition du système de fichiers
- Les serveurs de production, de préproduction, de test et de développement ne doivent pas différer en ce qui concerne ces normes de base (sinon vous rencontrerez des problèmes plus tard - comme vous l'avez fait)
- Utilisez une gestion des modifications appropriée pour documenter TOUTES les modifications que vous avez apportées (y compris les minuscules modifications d'une ligne dans n'importe quelle configuration)
- Changez-vous toujours d'abord en test, puis en développement, puis en staging et en dernier en production
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 plusieurs serveurs simultanément.
Si vous découvrez un problème et que vous disposez d'un correctif qui résout le problème :
- Appliquez le correctif à Test/Dev/Staging/Prod (voir ci-dessus) si cela fonctionne vraiment
- Appliquez le correctif à vos modèles virtuels afin que les futurs clones de VM n'aient pas ce bogue
- Appliquez le correctif à votre processus d'installation physique (kickstart/autoyast/peu importe)
- Appliquer le correctif à TOUS les serveurs
Si vous faites face à des masses de serveurs pour réparer, c'est un processus qui doit être bien documenté et à la fin une équipe différente doit vérifier si le correctif a été complètement appliqué.
Nous utilisons Mantis (open source, PHP) à cette fin.
Je gère environ 30 produits et quelques centaines de serveurs dans plusieurs pays. Je suis le responsable de la 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 en test, en staging et en production, y compris les liens de base de données et les modifications. J'ai un certain nombre de scripts qui sont envoyés aux serveurs en utilisant des combinaisons de ssh
, python
et les scripts shell.
Les principales choses à penser sont :
- Quels types d'interactions allez-vous avoir avec vos serveurs ? Juste des téléchargements de fichiers ? Exécutez des programmes en ligne de commande ? Exécutez des clients X distants ?
- Quel niveau de sécurité est nécessaire pour accéder à ces serveurs ? Pare-feu, réseaux sécurisés, VPN ? Est
ssh
suffisante et à partir d'un emplacement central sécurisé ? - Combien peut-on automatiser sur chaque serveur ? Pouvez-vous installer un programme sur chaque serveur et l'exécuter, ou avez-vous besoin de diffuser le programme via quelque chose comme
ssh
pour l'exécuter à distance? Pouvez-vous le scripter avecexpect
ou juste un appel en ligne de commande ?
VirtualBox fournit de nombreux outils de ligne de commande que vous pouvez administrer uniquement via ssh
ou des systèmes comme puppet
comme le mentionne Ulrich.