Imaginez que vous allez gérer un certain nombre de serveurs avec un certain nombre de services différents utilisés par un certain nombre de personnes. Supposons maintenant que vous souhaitiez reconfigurer ou remplacer certains logiciels sur l'un de ces serveurs. Évidemment, vous ne voulez pas travailler sur des serveurs en production.
S'il s'agissait d'un changement de code, en tant que développeur, je ferais le changement sur ma machine de développement locale, le testerais localement et validerais le changement dans un système de contrôle de version. Les modifications pourraient ensuite être déployées dans un environnement intermédiaire, testées plus avant et finalement déployées dans un environnement de production. Il serait également facile pour moi de revenir en arrière, si nécessaire.
De manière générale ou spécifique, comment y parvenir dans l'administration système?
(La première chose qui me vient à l'esprit est d'utiliser des machines virtuelles et de mettre des images de machines virtuelles dans le contrôle de version, mais je suis sûr qu'il y a beaucoup de littérature et de solutions intelligentes que je ne connais pas actuellement.)
Réponses:
La réponse courte est "Gestion du déploiement du système d'exploitation", "Gestion de la configuration" et "Packaging logiciel". Une longue réponse suit.
Je voudrais ajouter à la réponse de Daniel Pittman une ventilation de ce qui constitue un "système" dans l'administration des systèmes.
Un système ou un environnement va comprendre:
Ces processus seront enveloppés de processus tels que:
Et vous aimeriez les combiner pour vous aider à atteindre des objectifs non fonctionnels tels que:
Ceci est une décharge de cerveau rapide. Je suis sûr que d'autres pourraient être ajoutés à toutes les listes.
Votre question touche à plusieurs 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 passe c.-à-d. répétabilité, testabilité et mesurabilité; vous envisagez de mettre des images vm dans le contrôle de version parce que vous aimeriez la répétabilité des déploiements de système d'exploitation et de configuration.
Il existe de nombreux outils pour vous aider, certains d'entre eux mentionnés par Daniel. Quelques autres sont:
Encore une fois, ce n'est pas une liste complète, mais quelque chose que je garde dans ma tête pour me guider et j'espère que cela vous aidera aussi.
la source
Avertissement: je suis l'un des développeurs de Puppet.
La manière la plus évidente consiste 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 peu de temps, commencer dans 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, afin de ne pas utiliser ces techniques sur les 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.
Le mouvement DevOps est une autre source de bonnes informations sur la façon de procéder. Si le précepte est une meilleure coopération entre les développeurs et le personnel d'exploitation, il tend également dans cette même direction.
la source
Dans un monde Windows, ces problèmes liés à la gestion du cycle de vie des applications sont résolus avec System Center 2012.
Dans System Center Virtual Machine Manager (SCVMM), les services sont définis à l'aide de «modèles de service» (par exemple, un service classique à trois niveaux) et les environnements d'exécution sont définis comme des «nuages» (par exemple, développement, transfert, production). Les modèles de service peuvent être versionnés et déployés (de manière automatisée) sur différents Clouds. Sous les couvertures, SCVMM fait le travail pour approvisionner, déployer et configurer le matériel virtualisé (VM, etc.) et les logiciels (OS, composants d'application, etc.).
System Center Service Manager est l'élément qui relie cela d'un point de vue du processus. Par exemple, la gestion des problèmes et le contrôle des changements.
la source