Solution 1 :
Avis de non-responsabilité :je suis l'un des développeurs de Puppet.
La manière évidente est de simplement appliquer les concepts :définir un cycle de développement/test/production, et pousser les changements à travers eux. Utilisez le contrôle de version pour suivre les systèmes.
En bref, s'engager sur cette voie conduit à découvrir que vous voulez vraiment des outils qui automatisent ces choses - essentiellement, que vous voulez automatiser l'administration des systèmes, de sorte que vous n'utilisiez pas ces techniques sur des machines, vous les utilisez sur le système qui gère les machines.
Des outils comme Chef, Puppet, Salt et CFEngine sont tous des outils populaires pour répondre à ce deuxième besoin. Ils travaillent dans le sens général de transformer l'administration des systèmes en une solution centrale que vous pouvez contrôler et tester en version.
Le mouvement DevOps est une autre source de bonnes informations sur la façon de procéder. Bien que le précepte soit une meilleure coopération entre les développeurs et le personnel des opérations, il tend également dans cette même direction.
Solution 2 :
La réponse courte est "Gestion du déploiement du système d'exploitation", "Gestion de la configuration" et "Empaquetage de logiciels". La réponse longue suit.
J'aimerais ajouter à la réponse de Daniel Pittman une ventilation de ce qui forme un "système" dans l'administration des systèmes.
Un système ou un environnement va comprendre :
- Serveurs
- Système d'exploitation
- Configuration
- Forfaits fournisseur ; et
- Forfaits locaux
Enveloppant ceux-ci seront des processus tels que :
- Déploiement ou imagerie du système d'exploitation
- Gestion des configurations
- Gestion des packages logiciels
- Audit/journalisation
- Surveillance
- Sauvegardes
Et vous aimeriez les combiner pour vous aider à atteindre des objectifs non fonctionnels tels que :
- Répétabilité
- Maintenabilité
- Mesurabilité
- Performances
- Traçabilité
- Testabilité
- Changement
C'est une décharge de cerveau rapide. Je suis sûr que d'autres pourraient être ajoutés à toutes les listes.
Votre question touche à un certain nombre d'entre eux sans utiliser les mots spécifiques. Par exemple, vous voulez pouvoir déployer facilement et revenir en arrière, c'est-à-dire que vous voulez la maintenabilité ; vous voulez le faire dans un environnement de test et tester jusqu'à ce qu'il réussisse, c'est-à-dire la répétabilité, la testabilité et la mesurabilité ; vous envisagez de mettre des images vm dans le contrôle de version parce que vous souhaitez la répétabilité des déploiements de système d'exploitation et de configuration.
Il existe de nombreux outils pour vous aider, dont certains mentionnés par Daniel. D'autres sont :
- Kickstarts (basé sur RedHat), Preseed (basé sur Debian), WDS (MS Windows) pour le déploiement d'environnements de système d'exploitation connus
- Spacewalk/Satellite (basé sur RedHat), stratégies de groupe (MS Windows) pour la configuration et la gestion des packages
- Systèmes de packaging YUM et APT pour générer, déployer, mettre à niveau et supprimer des packages (ensembles de binaires, de données et de configuration comprenant un logiciel)
- Nagios, OpenNMS et SCOM pour la surveillance
- Amanda, Bacula et Windows Backup Server pour les sauvegardes
- Munin, PCP et Hyperic pour le suivi des performances
- CVS, SVN, GIT ou Bazaar pour le contrôle de version
- Hudson et Jenkins pour la gestion des builds
- Sélénium et Robot pour les tests
- Bugzilla, Request Tracker et Jira pour l'enregistrement, la communication et le suivi
Encore une fois, ce n'est pas une liste exhaustive, mais quelque chose que je garde en tête pour me guider et j'espère que cela vous aidera aussi.