Comment enregistrer les modifications du serveur?

52

Nous avons donc probablement tous eu cette situation: vous résolvez un problème, mais vous vous rendez compte que cela a été causé par un changement de configuration que vous avez effectué il y a six mois, et vous ne vous rappelez pas pourquoi vous l'avez fait. Donc, vous annulez et corrigez le problème, et maintenant un autre problème revient. Oh oui, maintenant je me souviens! Ensuite, vous corrigez le problème correctement.

C'est parce que tu n'as pas pris les bonnes notes, imbécile! Mais quel est le bon moyen de faire cela?

En ingénierie, nous avons une multitude de logiciels destinés à nous aider à détecter et à suivre les changements. Contrôle de la source, revues de code, etc. Chaque changement est suivi, chaque changement nécessite un commentaire sur ce que c'est. Et les départements d'ingénierie habituels ont besoin de bons commentaires. Ainsi, en six mois, lorsque vous déterminez pourquoi vous l'avez brisé de cette façon, vous pouvez utiliser une fonction historique de "reproches" ou des constructions de recherche binaire pour identifier le problème. Ces outils sont des outils de communication et des archives historiques très efficaces.

Mais dans Serverland, nous avons 500 services différents, tous avec différentes manières de les configurer. Et ils ne disposent pas toujours d'un format texte (envisagez de définir des autorisations sur un dossier ou de modifier l'emplacement du fichier d'échange) bien qu'ils puissent avoir une représentation textuelle.

Dans notre environnement, nous vérifions quels fichiers de configuration sont disponibles dans Perforce, mais il y en a très peu. Impossible de vérifier exactement dans la base de données Active Directory ... bien que peut-être un vidage qui pourrait être diff ...

Dans le passé, j'ai essayé de garder un journal de changement manuel dans notre wiki, mais il est extrêmement difficile de maintenir la discipline pour le faire (je sais, ce n'est pas une bonne excuse, mais c'est vraiment difficile).

Ma question: Quelles stratégies et quels outils utilisez-vous pour faire face à ce problème de suivi des modifications de la configuration de vos serveurs?

-- Mise à jour --

Remarque: je ne cherche pas d'outils de prise de notes partagées (je connais OneNote, etc.) autant que des outils automatisés spécifiquement conçus pour faciliter le suivi des modifications du serveur. Il n'y a pas d'outil complet pour suivre les modifications de la configuration du serveur, mais il en existe peut-être pour des applications spécifiques telles que les objets de stratégie de groupe.

De plus, je suis très intéressé par les stratégies spécifiques que vous avez trouvées utiles. "Nous partageons des notes dans Sharepoint" est assez vague. Comment maintenez-vous la discipline? Quel format utilisez-vous pour suivre vos modifications? Comment organisez-vous vos données de changement? Je voudrais vraiment des exemples ainsi que des idées.

Scott Bilas
la source

Réponses:

20

Sur Linux, les gens poursuivent deux stratégies différentes:

  • Systèmes de contrainte de configuration , comme cfengine ou marionnette ou chef . Celles-ci sont similaires aux GPO Windows. Le point étant que toute la configuration du serveur est intentionnellement documentée en un seul endroit et que vous savez à quelle granularité (salle des serveurs, groupe, serveur spécifique) la stratégie est appliquée. Cela ne vous sauvera pas vraiment de "qu'est-ce que l'enfer était différent il y a six mois?" mais cela vous permet simplement de décomposer une configuration de serveur et de la reconstruire à partir de zéro. Vous pouvez mettre les politiques de cfengine et de marionnettes sous contrôle de révision pour répondre à la question.
  • Contrôle / etc Révision . Généralement, les programmes Linux stockent leur configuration au même endroit, / etc. Les audacieux commencent à écrire des scripts pour placer / etc dans le contrôle de révision. Un de ces programmes que je connais est etckeeper :
Description: magasin / etc dans git, mercurial, bzr ou darcs
 Le programme etckeeper est un outil permettant de stocker / etc dans un git, mercurial,
 Dépôt bzr ou darcs. Il se connecte à APT pour valider automatiquement les modifications
 fait à / etc pendant les mises à jour du paquet. Il suit les métadonnées de fichier de cette version
 Les systèmes de contrôle ne supportent pas normalement, mais c’est important pour / etc, comme
 comme les permissions de / etc / shadow. Il est assez modulaire et configurable, tout en
 être aussi simple à utiliser si vous comprenez les bases du travail avec la version
 contrôle.
jldugger
la source
1
+1 pour mentionner les deux types de système, et plus particulièrement etckeeper, ce qui facilite les choses - fonctionne avec git ou hg.
RichVel
1
J'utilise l'un pour installer l'autre, et donc les deux.
Dan Garthwaite
Pour info, le lien cfengine pointe vers www.cfengine.org, qui est maintenant en panne. Le site officiel se trouve maintenant sur www.cfengine.com . Aussi ectkeeper a maintenant une page d'accueil à etckeeper.branchable.com
e_i_pi
@e_i_pi et aussi marionnette n'est plus des marionnettes.
Jldugger
10

L’un des problèmes dans cette situation est qu’il s’agit en réalité d’un processus combinant processus commercial et problème technologique. Et il est définitivement plus important que de simplement suivre les modifications apportées par un administrateur. Vous devez également garder un œil sur les modifications inattendues et sur une bonne coordination entre les administrateurs ou les unités afin qu’une modification sur un contrôleur AD n’annule pas le paramètre d’autorisations de la base de données sur un serveur départemental. C'est-à-dire que votre question est une boîte de conserve géante :)

Dans mon organisation, nous mettons environ un an à déployer des processus et des systèmes pour résoudre ce problème. Du côté des processus métier, nous avons formé une équipe de gestion du changement. Selon les SOP, toutes les modifications apportées aux environnements de production sont coordonnées. Ils compilent toutes les modifications, ainsi que la portée, les systèmes affectés, les services concernés, etc. Appliquez une bonne documentation sur les modifications, ainsi que les plans de déploiement et de restauration. Organisez des réunions hebdomadaires (ouvertes) pour passer en revue les modifications d'environnement à venir, puis envoyez des e-mails détaillant toutes ces modifications. L'objectif final de ce processus est de faire en sorte que tout le monde dans l'informatique sache effectivement tout ce qui se passe. Cela aide à résoudre le problème posé, par exemple, par un administrateur système (SYSAdmin) qui installe un correctif du noyau et redémarre un système qui supprimera la base de données timeclock.

Pour ce qui est de la technologie, je ne peux parler que des gars sous Unix / Linux car je ne traite pas avec Windows. Ils ont déployé Puppet, de Reductive Labs, pour la gestion de la configuration de tous ces systèmes. Simplement, est un système client / serveur où l’on définit une configuration d’ordinateur sur le serveur et où le client tire ces chances de temps en temps (30 minutes par défaut). De plus, si des risques sont créés pour les fichiers gérés localement, ils sont également rétablis à ce moment-là. Nous l'utilisons pour gérer les services en cours, les configurations de pare-feu, les autorisations des utilisateurs, etc.

Je recommanderais également de rechercher quelque chose comme TippingPoint. C'est un service client qui surveille la configuration du système et envoie des alertes sur les modifications. Cela nous rend les gens de la sécurité plus heureux. Il est largement utilisé pour le suivi des modifications malveillantes ou non publiées.

Scott Pack
la source
Lorsque vous stockez des fichiers de configuration de marionnettes dans un VCS, vous obtenez un historique complet et journal de vos configurations de serveur, très propre :) Mais, convertir tout à un script de marionnettes nécessite une autre discipline: D
hayalci
Je n'ai jamais dit que c'était facile, seulement utile :) Le truc avec marionnette est de faire un usage prolifique des modules, et de garder à l'esprit que vos efforts seront récompensés. Maintenant, si seulement RSA EnVision avait un analyseur pour les logs ...
Scott Pack
Vous avez absolument raison de dire que le problème dépasse la seule technologie d'enregistrement des modifications. Mais n'élargissons pas le problème dans le domaine de l'insoluble non plus. Avoir un outil efficace peut concentrer votre équipe et ne pas en avoir, détruit le moral d'essayer de changer sa façon de penser. J'ai implémenté plusieurs systèmes différents, le meilleur reste probablement la page wiki avec un tableau des modifications, mais ce n'est toujours pas parfait. / etckeeper est certainement un avantage, mais difficile à faire évoluer d’un système à l’autre. et le plus important: Active Directory! C'est le besoin clé.
ckg
4

Je suis allé à 4 ou 5 compagnies maintenant je ne me souviens pas vraiment.

Nous avons tous eu ce problème. Aucun d'entre nous n'a résolu le problème à 100%, mais dans l'entreprise où je suis actuellement, nous avons ce que je considère être la meilleure stratégie à ce jour.

Sharepoint / Wiki / Evernote / NIP

  • Sharepoint
    • gémissez tout ce que vous voulez ... il a de très jolies fonctionnalités de liste.
    • Listes d'adresses IP
    • inventaire
    • comptes de service et utilisation
    • changer les journaux de notification
  • Wiki
    • Mode d'emploi
    • listes de tâches à long terme
  • Evernote
    • mon partenaire et moi l'utilisons pour mettre tout ce que nous ne voulons pas dans le wiki
    • plus de tutoriels techniques
    • notes à gratter nous avons tous deux besoin de voir
    • comptabilité de la semaine
    • listes de tâches des entrepreneurs
    • evernote clipper facilite la capture d'écran des paramètres AD / droits
    • disponible partout
  • NIP
    • Référentiel de mots de passe
Thomas Denton
la source
2

Il y a probablement de meilleurs outils pour certains d'entre eux, mais voici ce que nous utilisons:

  • Suivre les modifications de configuration et les mises à niveau / correctifs serveur par serveur dans un wiki privé
  • Conservez également les howtos et un enregistrement des problèmes / solutions dans le wiki
  • Utilisez Sharepoint ou Google Docs pour conserver des copies faisant autorité, telles que des listes d'adresses IP statiques
  • utiliser Subversion pour suivre les modifications apportées aux fichiers de configuration
Brent
la source
j'aime utiliser le contrôle de source sur les fichiers de configuration - appliquez-vous des commentaires "utiles" lors de l'enregistrement ou de la sortie d'une version?
Warren
Non, en fait, j'ai écrit quelques scripts (soumettre et restaurer) pour faciliter la soumission et la restauration des modifications. Cependant, nous expérimentons maintenant avec etckeeper.
Brent
2

Pour Windows, consultez la série Microsofts System Center ou tout autre concurrent en matière de configuration et de gestion de services pour cette plate-forme.

Les changements doivent être acheminés via une routine de gestion de changement décente qui, par elle-même, les approuve et les enregistre avant leur exécution. Cela peut être 100% manuel pour les débutants. Avec certains des meilleurs outils intégrés, vous pouvez lui demander d’effectuer les modifications et d’en faire une connexion "automatique" vers une base de données de configuration centrale - plutôt que de vous débrouiller seul dans la console d’un serveur individuel, en fouillant manuellement les paramètres. essayez de résoudre un problème de style cow-boy.

Oskar Duveborn
la source
2

Vous devez absolument mettre en place un processus de gestion des modifications, en particulier si plusieurs personnes ont la capacité / la possibilité d’apporter des modifications au niveau du système dans votre environnement. Cela fournit également un moyen à la direction de valider les modifications éventuelles, mais l'inconvénient qu'elle induit une latence dans le processus de modification si vous ne pouvez pas effectuer de modifications à la volée.

Certains moyens de suivre les modifications peuvent inclure la validation des événements dans votre SEM (en supposant que vous ayez un gestionnaire d’événements de sécurité) ou des outils tels que Nessus (avec beaucoup de travail, vous pouvez auditer votre environnement pour rechercher les modifications).

David Yu
la source
2

Ceci est une réponse plus localisée, basée sur * nix. Je n'ai pas trouvé de bons outils pour l'imiter sous Windows.

Il y a plusieurs façons de mettre cela en œuvre ... et de l'attraper quand vous oubliez.

Les systèmes de contrôle de révision tels que Subversion, Git, CVS ou RCS constituent un bon moyen de suivre l'historique d'un fichier de configuration. Si vous ne souhaitez pas installer de système de contrôle de révision sur vos serveurs de production, le stockage des répertoires de fichiers de configuration localement ou à distance à l'aide de quelque chose comme rsnapshot vous apportera l'essentiel des avantages d'un RCS, mais vous perdez la possibilité d'auditer ou de laisser commettre. journaux (bien que cela puisse être contourné avec des commentaires dans les fichiers eux-mêmes).

Pour vous aider à vous souvenir de la consignation des modifications, la génération de rapports automatisés des modifications de configuration via une exécution journalière, tripon fil est un bon début. Après avoir construit la base de données de tripwire sur l'état actuel des fichiers, toute modification de ceux-ci entraînera l'envoi d'un courrier électronique lors de la prochaine exécution. Vous continuerez à recevoir ce courrier jusqu'à ce que la base de données soit mise à jour, ce qui "réinitialisera" le tripwire.

Greg Work
la source
1

Je voudrais utiliser un système de suivi des problèmes tels que flyspray (tout ira, mais j'aime flyspray pour les trucs de non-programmation). Avant que quiconque ne touche à une configuration, l'amélioration / le problème doit être consigné. Lorsque vous corrigez / implémentez-le, les modifications sont intégrées au ticket.

Un wiki peut être utile pour documenter la configuration actuelle, mais il est facile pour lui de devenir obsolète - et il semble que plus de efforts soient nécessaires pour mettre à jour IMO.

Vous n'allez pas trouver quelque chose d'automatisé pour le faire - bien que vous puissiez probablement le configurer, les modifications apportées à certains fichiers de configuration ont été automatiquement envoyées par courrier électronique au système de suivi des problèmes, si vous le souhaitez.

Je pense que c'est juste une question de bonne politique, d'outils à faible barrière et de discipline.

Draemon
la source
1

Nous avons créé quelque chose de local pour faire le suivi des journaux de changements dans notre environnement; ce n'est pas quelque chose de super compliqué, et ça marche plutôt bien.

  • Une politique d'auto-contrôle est configurée de manière à ce que tout changement qui, selon votre estimation, s'écarte d'une configuration prête à l'emploi ou qui pourrait potentiellement causer des problèmes, doit être documenté dans le système des listes de modifications.
    • Si vous résolvez un problème, cherchez les entrées récentes ou associées dans le journal des modifications.
  • Connectez-vous au système et choisissez le serveur, le service ou le composant matériel que vous modifiez.
    • les composants sont précédemment entrés dans le même système avec les informations de base "démographiques" (emplacement, fournisseur, numéro de série, département responsable)
  • Choisissez parmi une liste déroulante de catégories de base
    • Temps d'arrêt non planifié
    • Patcher
    • Maintenance du matériel
    • Installation du logiciel
  • Mettez dans les détails de ce que vous avez fait, vu, observé
  • une copie est envoyée au responsable et stockée sous forme de fichiers XML indexés par un système de recherche.
  • Profit

Comme je l'ai dit, rien d'extraordinaire. Il utilise PERL CGI (écrit il y a un milliard d'années) et un système de recherche Google pour l'indexation.

Lacunes:

  • Il est difficile de travailler avec des groupes de services. Par exemple, vous venez d’ajouter le même correctif à chacun de vos 25 contrôleurs de domaine; nous n'avons pas de groupe "Contrôleur de domaine", nous devons donc tous les sélectionner manuellement
  • N'intègre pas les rapports d'erreur de matériel, de logiciel ou de journal des événements pour faciliter le dépannage
  • De même, la saisie manuelle de données pour toutes les données «démographiques», comme je l'ai dit ci-dessus

Quoi qu'il en soit, si, après tout, le code vous intéresse, faites-le moi savoir et je pourrai probablement le saisir pour le partager.

Guamaniac
la source
1

Comme il a été dit, c’est souvent un problème culturel - après tout, certains magasins de développement ne se soucient plus des commentaires (le code auto-documenté est un mot à la mode de nos jours!) Et d’autres utilisent un système de contrôle de version en tant que saint Graal de documents historiques. Évidemment, ce ne sont pas parfaits.

Donc, la seule vraie solution pour y remédier est d'en faire une solution culturelle. Assurez-vous que toutes les raisons de modification sont consignées dans un outil de suivi des bogues (ou une base de connaissances ou un wiki) et que toutes les modifications sont consignées dans un système de contrôle des modifications.

Nous avons des clients des services d'urgence, chaque modification apportée à leur système est enregistrée et chaque fois que nous nous connectons à leur système, nous devons le connecter. Pour certains d'entre eux, nous devons d'abord demander la permission (et je suppose qu'ils l'enregistrent aussi!). Chaque modification est enregistrée et le fait de modifier le système client sans le consigner constitue une infraction disciplinaire.

Cela semble difficile, mais ce n'est pas le cas. Vous prenez rapidement l'habitude de vous ajouter au journal des accès et de le modifier - ce n'est pas pire que d'avoir à écrire un commentaire lors de l'enregistrement d'un changement de code.

Je recommande un bugtracker comme journal des raisons du contrôle des modifications, car il est généralement facile à mettre à jour (j'utilise Mantis).

gbjbaanb
la source
1

Si vous recherchez une "solution d'entreprise" (vous avez plus d'argent que dieu et souhaitez disposer d'un outil vraiment génial), l'outil que j'avais l'habitude de supporter et de fournir sur site est une de ses nombreuses fonctionnalités.

Aucune idée du prix de base, mais avant que HP rachète Opsware, le prix était d'environ 350 000 USD (sans assistance, et croyez-moi, vous aviez besoin d'assistance lorsque j'ai commencé à utiliser Opsware).

Plusieurs des clients que nous avions lorsque je travaillais là-bas utilisaient les fonctions de configuration d'application et de capture instantanée en conjonction avec Tripwire .

Bien sûr, si vous n'avez pas de budget - c'est un mauvais choix ™ :)

Et, fwiw, la publicité qui est apparue en haut de cette page pour moi lorsque je l'ai rechargée était pour spiceworks . Ressemble à HPSA :)

garenne
la source
1

Si tout ce que vous voulez, c'est suivre les modifications et non pas gérer l'ensemble du processus (via Chef ou Puppet), rsyncvous devez uniquement insérer votre etcrépertoire (où qu'il se trouve) dans un référentiel git local.

for HOST in alpha bravo charlie delta ...; do

    rsync -avz --exclude-from=exclusions -e ssh admin@$HOST:/opt/local/etc/ ./$HOST

done

Vous pouvez bien sûr ajouter d’autres sources au besoin.

Commande partielle
la source