Quelles sont les choses que tout administrateur système doit savoir sur le programmeur?

20

Inspiré par cette question , je demande l'inverse: combien d'informations sur la programmation les administrateurs système doivent-ils savoir? Plus précisément, quels outils de programmation sont utiles à un administrateur système?

Tim
la source
1
Cela ne devrait-il pas être une question SO. Je pense que cela a déjà été demandé de toute façon.
Tim Matthews
2
Oui, mais comme cela a été noté sur cette question, il existe deux communautés très distinctes sur SF et SO. Je pense que ce serait intéressant de voir ce que les choses programmeur sysadmins pensent sysadmins doivent savoir, plutôt que ce programmeur programmeurs pensent des choses sysadmins devraient savoir.
Tim

Réponses:

29
  • Contrôle de version . Être capable de générer, lire et appliquer des correctifs. Sachez comment utiliser un système de contrôle de version qui présente les versions à l'échelle du référentiel et pourquoi vous en voulez une. Sachez comment rédiger des journaux de modifications descriptifs et pourquoi vous les voulez. Savoir comment rechercher dans les journaux d'un référentiel des mots clés et des délais.
  • Scripting . Faites quelque chose une fois et soyez en route. Faites-le deux fois ou plus, faites-le une fois puis écrivez un script.
  • Débogage . Sachez lire une trace de pile et comment signaler les erreurs pertinentes à votre contact de support logiciel. Trouver l'erreur est agréable et utile, mais savoir comment la corriger peut prendre beaucoup d'investissement dans la lecture du code. Faites la partie qui est facile pour vous et laissez-les faire la partie qui leur est facile.
  • Test . Surveillez en continu et enregistrez les erreurs. Utilisé conjointement avec le contrôle de version et les tests, vous avez une idée précise de ce qui a pu mal tourner et de ce qui a changé à ce moment-là. Surveillez la production et la pré-production.
  • Examen par les pairs . Proposer et réviser les modifications des systèmes de production. Testez la préproduction, déterminez exactement ce qui doit être fait et enregistrez quels services peuvent être affectés pendant combien de temps. Ne laissez pas la gestion du changement se dégrader en batailles politiques de pouvoir bureaucratique.
  • Étudiez la cryptographie . Un administrateur système moderne est en charge des ressources réseau; l'ajout de la sécurité comme étape finale est quelque part entre impossible et une proposition très coûteuse. Comprendre la cryptographie à clé publique, les pratiques de gestion des mots de passe et le cryptage en général sera extrêmement précieux.
jldugger
la source
Et même si vous ne pouvez pas script (ou bien script), être en mesure de reconnaître quand automatiser quelque chose est très important.
Ether
Qu'est-ce qu'un système de contrôle de version simple et rapide pour une boutique Windows pure?
jftuga
SVN? Je veux dire, cela semble assez bon pour cet idiot: codinghorror.com/blog/2008/04/…
jldugger
9

Je commencerais par:

  1. Comment écrire plus que les scripts les plus élémentaires, peu importe la langue. L'automatisation est votre amie.
  2. Comment exécuter un débogueur / savoir lire les rapports de plantage de quelque sorte: cela facilite la détermination d'un rapport de plantage et à qui demander ce que le diable a beaucoup plus facile.
  3. Contrôle de version - pas seulement pour le code mais pour tout ce qui vaut la peine de conserver un historique ou de contrôler les changements.
Chealion
la source
7

L'administration système n'est que de la programmation. Un système de gestion de configuration vous permet de voir l'ensemble de votre infrastructure comme une machine distribuée. En tant qu'administrateur système, votre travail consiste à programmer cette machine.

Connaissez un éditeur de texte. Habituellement, vi pour les administrateurs système, emacs pour les programmeurs.

Savoir écrire. Choisissez un langage de script. Perl est un favori éternel, tout comme le combo shell / sed / awk. Ruby et Python peuvent fonctionner, mais pour beaucoup de choses, les objets ne sont pas le bon paradigme.

Savoir écrire une documentation lisible.

Contrôle de version. Crucial pour la maintenance des fichiers de configuration et des pistes d'audit.

Apprenez à penser en termes de programmation. Comprendre les paradigmes de programmation procédurale, orientée objet et fonctionnelle. Ceux-ci peuvent ne jamais être utilisés, mais les connaître vous rend infiniment plus productif.

Apprenez à utiliser un débogueur (ou plus) et la journalisation.

Apprenez à utiliser un SGBDR. Il existe de nombreuses exigences de traitement des données qui peuvent être simplifiées en utilisant correctement un SGBDR. Même la possibilité de passer à un rôle DBA à la demande peut faire des merveilles.

Testez avant le déploiement. Voir la philosophie de développement pilotée par les tests.

La programmation en binôme est bonne. Demandez à quelqu'un d'autre de regarder par-dessus votre épaule pour apprendre / conseiller / corriger.

Apprenez à avoir au moins une familiarité passagère avec un tas de langues. Apprenez une nouvelle langue chaque année.

Devdas
la source
De retour dans le monde réel ... Je n'ai pas encore rencontré un administrateur système qui fait tout cela (à part tester et écrire un peu de doc). J'ai peut-être travaillé pour les mauvaises entreprises!
PowerApp101
1
Ensuite, votre version de la réalité est nulle. Chacun de mes employés préfère vi (j'ai appris des emacs et je n'ai pas envie de traverser cette torture deux fois); nous avons des centaines de scripts Perl et une douzaine de sites Web php uniques à des fins d'assistance. Nous exécutons Opsview / nagios pour la surveillance, qui n'est en fait qu'un test de formulaire en cours d'exécution en continu - une rétroaction instantanée lorsque vous validez un changement. Néanmoins, j'aimerais avoir plus de contrôle de version en place pour les sites Web et les scripts, et de meilleures pistes d'audit.
jldugger
Vous êtes des administrateurs Unix? Dans le monde Windows, une grande partie de ces éléments n'a pas encore pénétré dans la conscience des administrateurs système. Croyez-moi, j'adorerais ça.
PowerApp101
Garçon du 20ème siècle, nous avons poussé nos administrateurs Windows à apprendre ce genre de choses. Ils ne sont pas encore là, mais c'est mieux ici que lorsque j'ai rejoint. Les problèmes les plus importants auxquels nous sommes confrontés actuellement sont les problèmes politiques / de gestion, plutôt que les problèmes techniques que nous avons rencontrés.
Devdas
Oh, et nous avons également des développeurs Windows avec un indice, donc ils soutiennent en fait de tels efforts.
Devdas
5
  • Savoir programmer. Oui, c'est important: comme l'a dit un commentateur, si vous le faites plus d'une fois, alors écrivez un script - et écrivez-le bien.
  • Connaître les outils inclus dans une installation de système d'exploitation standard. Pour les administrateurs UNIX, cela signifie des outils comme Korn Shell (ksh) et Perl et vi. Ne comptez pas sur Emacs ou Ruby ou Tcl ou C shell étant présent.
  • Connaissez le réseau. Comment les paquets Ethernet sont-ils assemblés? À quoi ressemble un paquet? Quels sont les différents types de paquets? Apprenez à connaître des outils comme tcpdump, Wireshark, Snoop et autres.
  • Écrivez du code portable. Si le code doit fonctionner sous Linux - et Tru64 - et Solaris - et OpenVMS - alors écrivez du code portable. Même s'il ne fonctionnera que sous deux versions d'UNIX - rendez-le portable. Mais alors, s'il n'a pas besoin d'être portable, ne passez pas plus de temps dessus.
  • Sachez où se trouve la documentation. Pour Perl, cela signifie perldoc, Perl Mongers, perl.org, etc. Pour ksh, cela signifie la page de manuel et vos livres de shell Korn préférés.
  • Document, document, document, document! Documentez votre code, créez des pages de manuel, créez une documentation Perl en ligne et tout ce qui est approprié. Expliquez comment utiliser le programme et pourquoi vous l'avez codé de cette façon.
  • Connaissez les outils d'emballage de votre système. Savoir créer des RPM pour Red Hat, des dépôts HP-UX ou des packages Solaris: cela vous permettra de créer des packages pour vos systèmes, et donc de les intégrer dans le processus d'installation.
Mei
la source
3

Les scripts sont essentiels, mais j'appuierais l'avis que la connaissance de "vraies" langues est un avantage certain. Vous pouvez faire des choses très utiles avec l'espace de noms .NET System.DirectoryServices, par exemple.

Maximus Minimus
la source
3

Je suis programmeur et administrateur / intégrateur senior. Pour travailler là où je travaille, vous devez savoir les choses suivantes:

  • Comment écrire des scripts shell (POSIX, pas de Bashisms), un peu de Perl, un peu de Python
  • Basic C (spécification UNIX unique)
  • Comment installer une chaîne d'outils de compilation
  • Comment créer des bibliothèques et d'autres projets OSS à partir de la source
  • Qu'est-ce que Valgrind et comment l'utiliser pour détecter les fuites de mémoire
  • Comment rouler des packages .rpm et .deb
  • Bien que nous n'en ayons pas besoin , un peu de PHP et un peu de LISP ne feront pas de mal

La plupart des administrateurs juniors peuvent regarder l'un de nos programmeurs et dire (avec autorité), oui, je l'ai installé correctement, voici où vous avez une fuite, c'est pourquoi le code que vous venez de pousser se casse. Ou "non, ce n'est pas notre version de MySQL, regardez votre requête ici ..."

Je pense que nous sommes un peu différents, quand nous embauchons un administrateur doué .. nous nous attendons à mi-chemin pour eux (finalement) trouver leur chemin vers la programmation, même si c'est juste pirater quelque chose que nous utilisons pour travailler comme ils en ont besoin pour fonctionner .

En résumé, être bien équilibré ne vous fera jamais de mal.

Tim Post
la source
1

Il y a de nombreuses années (Windows NT 3.1 en fait), j'ai commencé comme programmeur spécialisé dans les services d'écriture et même les pilotes de périphériques occasionnels. Cela signifie que vous connaissez très bien le noyau Windows. Avec le temps, je me suis un peu ennuyé avec la programmation et je suis passé à la gestion de réseau. J'ai trouvé que mon expérience en programmation a été immensément précieuse à maintes reprises.

Ce n'est pas seulement que l'écriture de scripts VBScript est relativement indolore. Connaître le fonctionnement de Windows, et en particulier comment IP fonctionne, aide grandement à démêler les problèmes de serveur et de réseau. C'est aussi un état d'esprit. Les programmeurs sont habitués à la documentation et au contrôle de version, et cela me fait horreur de voir combien d'administrateurs Windows vont juste essayer quelque chose pour voir si cela fonctionne et s'inquiéter de démêler le gâchis par la suite.

Tout cela est très bien, mais ce n'est pas un conseil très utile de dire partir et travailler comme programmeur pendant dix ans! Cependant, je pense que cela aiderait la plupart des administrateurs système à avoir une certaine expérience de la programmation dans un langage "dur" comme C ++ ou C #. Et si vous avez des programmeurs apprivoisés dans votre organisation, allez boire avec eux!

John Rennie

John Rennie
la source
1

De mauvaises choses se produisent, votre code durera plus longtemps que vous ne le pensez. Échec gracieusement, avec des messages d'erreur utiles. Vous allez manquer de disque, de ram, de processeur, de temps, etc., traitez-le.

Ne soyez pas si optimiste, qu'un problème étrange une fois sur un million se produira beaucoup trop souvent en production.

Ronald Pottol
la source
1

Avec toutes les descriptions ici, je ne vais pas dire que je suis un administrateur système. Mais le fait que j'ai construit et géré quelques serveurs Windows / Linux, je dois admettre quelque chose:

  • sous linux, le script bash est un must à savoir - si vous savez comment l'intégrer avec perl / awk / etc, c'est mieux. J'ai trouvé que de nombreuses tâches sont devenues plus faciles en l'utilisant.

  • Savoir programmer en C / C ++ aide beaucoup. Parfois, vous devez modifier un code source GNU (si vous en utilisez un) pour répondre à vos besoins, car devenir un produit GNU ne garantit pas que vous obtiendrez toujours l'aide dont vous avez besoin à temps - et souvent, ils sont écrits en C / C ++.

Mario Patty Fc
la source
0
  • SQL - Tout fonctionne avec des bases de données
  • Programmation - Le langage n'a pas d'importance, tant que vous comprenez la logique et le processus que vous pouvez apprendre et adapter à n'importe quel langage.
  • Comment DOCUMENTER LE CODE et les MODIFICATIONS - celui-ci est énorme. Combien de fois avez-vous été bloqué en regardant une configuration essayant de comprendre pourquoi diable quelqu'un a fait cela et ce que cela va affecter si nous la modifions en arrière. Celui-ci va au-delà de tout ce que vous codez ou script, celui-ci couvre lorsque vous modifiez les paramètres du pare-feu pour gérer un cas marginal lorsque l'utilisateur X reçoit des e-mails du domaine Y un mardi après-midi lorsqu'il pleut. Et ce n'est peut-être pas vous, c'est peut-être le PFY qui décide d'aller de l'avant et de vous appeler à 2h du matin pendant vos vacances parce que tout s'est cassé d'une manière hideuse.
  • Langages système - Sous Windows, ce sont des choses comme Powershell et WMI qui permettent à vos langages de script de se connecter à des ressources assez puissantes et de faire quoi que ce soit sur un PC. Unix / Linux a son propre ensemble d'outils dont je ne suis pas qualifié pour parler.
Shial
la source
0

Savoir comment se lier à votre LDAP et récupérer les informations nécessaires dans le langage de script de votre choix est essentiel pour tout, du dépannage à l'intensification réelle de divers types d'automatisation (approvisionnement de comptes et de ressources, contrôles plus intelligents des comptes d'utilisateurs ou de machines).

Cela peut sembler basique, mais j'ai vu de nombreuses boutiques de pain et de beurre où les gens ne pensent pas avoir besoin de ce type d'administration système. Beaucoup d'endroits dépensent gros $$$ sur de gros ensembles d'outils administratifs et, pour autant que je sache, 95% de ce pour quoi ils utilisent les outils auraient pu être faits avec quelques heures de script si quelqu'un le savait ou savait le faire fais le.

damorg
la source
0

J'ai découvert que la connaissance des scripts bash, dos batch et powershell fournit à un administrateur système le cadre pour faire à peu près n'importe quoi, sur n'importe quel système populaire.

Bip Bip
la source