on becoming a sysadmin

Πριν δύο μήνες έλαβα ένα email από ένα φοιτητή:

“Συγνώμη για την ενόχληση […] επειδή θα γίνω admin στο Πανεπιστήμιο μου θέλω μερικές συμβουλές, όπως toolbox, books, sites, live CDs, etc.”

Συμπτωματικά είναι ό ίδιος φοιτητής που ρώτησε τον κ. Σπινέλλη πως να γίνει hacker (με την old-school έννοια του όρου).

(Οι επόμενες παράγραφοι είναι αφιερωμένες στο ερώτημα, αλλά δεν είναι απαραίτητα τοποθετημένες σε μία λογική σειρά.)

Από την περιγραφή του SAGE, για το SAGE Level 1:

Required Skills
* Strong interpersonal and communication skills; capable of explaining simple procedures in writing or verbally; good phone skills.
* Familiar with an operating system and its commands/utilities at a user level; can edit files, issue commands, find users’ home directories, navigate through the file system, and use I/O redirection.
* Able to follow instructions well.

Required Background
* Two years of college or equivalent post-high school education or experience.

Desirable Background and Skills
* A degree or certificate in computer science or a related field.
* Previous experience in customer support, computer operations, system administration, or another related area.
* Motivated to advance in the profession.

Appropriate Responsibilities
* Performs routine tasks under the direct supervision of a more experienced administrator.
* Acts as a front-line interface to users, accepting trouble reports and dispatching them to appropriate system administrators.

Είναι δύσκολο να γράψει κανείς για το πως μπορεί να γίνει κάποιος άλλος system administrator. Η εκπαίδευση για το επάγγελμα δεν είναι συστηματοποιημένη. Η κατάσταση μοιάζει με αυτή που περιγράφεται στο Εκπαίδευση, Τεχνολογία και Βιομηχανικές Επιδόσεις στην Ευρώπη 1850-1939. Για να γίνει κάποιος Μηχανικός είχε (ιστορικά) τρεις επιλογές:

  1. Να μαθητεύσει άμισθα για μεγάλο χρονικό διάστημα δίπλα σε άλλους Μηχανικούς
  2. Να μαθητεύσει πληρώνοντας ένα μεγάλο χρηματικό ποσό σε σχολές μαθητείας κατασκευαστών Μηχανολογικού (και όχι μόνο) εξοπλισμού και λίγο αργότερα
  3. Να μαθητεύσει σε μια Πανεπιστημιακή σχολή πληρώνοντας ένα πολύ μικρότερο (αλλά όχι ευκαταφρόνητο) ποσό.

Σας θυμίζει τίποτε; Εμένα πολλά! Οι περισσότεροι System Administrators που ξέρω έχουν ακολουθήσει (more or less) την μέθοδο #1 (Always two there are; no more, no less: a master and an apprentice). Ή μήπως η χρηματική δαπάνη που απαιτείται για να αποκτήσει κανείς ένα καλό cisco, Sun, Microsoft, Oracle certifictation δεν θυμίζει το #2; Αυτό που σίγουρα δεν υπάρχει (ακόμα;) είναι το #3.

Παρόλο που δεν είχα επίσημα ένα master να με καθοδηγεί θεωρώ τον εαυτό μου προϊόν της διαδικασίας #1. Δεν ακολούθησα ποτέ την διαδικασία #2 και βρέθηκα ανάμεσα στα παιδιά του Εργαστηρίου Βάσεων Γνώσεων και Δεδομένων, το οποίο (τι καταπληκτικό!) είχε κοινή εσωτερική πόρτα με το NETMODE. Δεν νομίζω να είχα ποτέ ερώτηση στην οποία να μη βρήκα απάντηση.

Ο system administrator δεν καταθέτει τα όπλα. Εκεί που οι άλλοι βλέπουν τοίχο, αυτός βλέπει ένα ενδιαφέρον πρόβλημα ή και παιχνίδι ακόμα. Όπλα του είναι η διαίσθηση, η εμπιστοσύνη στον εαυτό του και τα manual. Και ποτέ δεν πιστεύει τον χρήστη όταν “δεν έκανε τίποτε”. Πάντα ρωτάει “δείξε μου το τίποτε που έκανες”.

Ένα πράγμα που έχει πάντα μεγάλη σημασία είναι να μη φοβάται κανείς να ρωτάει. Δεν υπάρχουν χαζές ερωτήσεις, μόνο χαζοί άνθρωποι. Και να έχει κανείς ανθρώπους να μοιράζεται τους προβληματισμούς του και τα ευρήματά του. Τα πρώτα χρόνια, εγώ ο Unique Fish και ο Πάνος ήμασταν διαχειριστές σε διαφορετικά εργαστήρια στο ΕΜΠ. Πολύ συχνά συζητάγαμε για τα ευρήματά μας, τα προβλήματα (τεχνικά ή με χρήστες) και τις λύσεις μας. Δεν υπήρξε ποτέ μία στιγμή που να φοβήθηκε κάποιος να μοιραστεί αυτό που “βρήκε” με τους άλλους.

Το ξενύχτι είναι μεγάλος σύμμαχος. Τη νύχτα υπάρχει περισσότερη ησυχία, μπορείς να συγκεντρωθείς στο διάβασμα (και όταν τελειώσεις να βγεις έξω κατευθείαν). Mailing lists σαν το decstation-managers, sun-managers, coderpunks και cypherpunks και newsgroups σαν το comp.unix.programmer και το comp.security.misc ήταν για χρόνια στην ημερήσια διάταξη.

Το 1991 στη διάρκεια ενός σεμιναριακού μαθήματος, ένας από τους τότε διαχειριστές του ΕΜΠ μας είχε πει πως ο system administrator θυμάται ανά πάσα στιγμή απ’έξω περί τις 300 εντολές και τα ορίσματα που δέχονται. Είχαμε μείνει με το στόμα ανοιχτό. Στην πραγματικότητα όμως είχε πέσει έξω: Είναι πολύ περισσότερες.

Ο ίδιος διαχειριστής μας είχε πει (και είχε δίκιο) πως ο καλός system administrator πρέπει να ξέρει καλή C. Μάθετε το K&R απέξω! Και μια και ο λόγος είναι για τις γλώσσες προγραμματισμού, δεν βλάπτουν λίγη awk και Perl (για αρχή). AWK έμαθα από τα manuals της DEC (nawk) και πρόλαβα την Perl 4 οπότε την αντιμετώπισα αρχικά σαν απλοποιημένη C (δεν δηλώνω μεταβλητές, όλες οι μεταβλητές έχουν μπροστά $, βάζω παντού ; και δεν γράφω the Perl way). Αργότερα είχα την τύχη να δουλεύω για χρόνια με ένα Perl guru. Σήμερα υποθέτω κάποιος θα ξεκίναγε από το βιβλίο του Robbins (υπάρχει online, αλλά αγοράστε το καλύτερα). Για την Perl ο O’Reilly έχει κάνει καλή δουλειά.

Λειτουργικά συστήματα δεν διαχειριζόμαστε; Τι στο %$#@%$@ κάνει ένα λειτουργικό σύστημα; The Magic Garden Explained.

Υπάρχουν άραγε πουθενά τα sources του learn;

Δεν υπάρχει άνθρωπος που δεν θα συστήσει ποτέ το Unix Network Programming του W.R. Stevens (το οποίο και μου είχαν δανείσει από το NETMODE, όπως και το Advanced Programming in the Unix Environment). Σήμερα στο σπίτι μου έχω τα volume 1 και volume 2. Το The Unix Programming Environment το είχε το dblab (όποιος το έχει πάρει να το επιστρέψει!).

“Ρε συ Γιώργο τι netmask έχουμε;” Internetworking with TCP/IP Vol.1.

Η έλλειψη μακροχρόνιου ενδιαφέροντος για ένα και μόνο πράγμα στην Πληροφορική επίσης με βοήθησε πολύ. Για τι ενδιαφερόμαι αυτό το μήνα; Για ότι κι αν ενδιαφερόμουν εκείνο το μήνα, φρόντιζα να το ψάξω καλά. Για τα περισσότερα άλλωστε είχα ανθρώπους γύρω μου που είτε ήξεραν να μου απαντήσουν, είτε ήξεραν κάποιον που ήξερε. Αλλά και για αυτά που δεν ενδιαφέρονταν με έμαθαν πως να ψάχνω. Π.χ. την περίοδο που με ενδιέφερε το reverse engineering, δέχτηκα μια από τις πιο σημαντικές συμβουλές. Ζήτησα από τον der Mouse να μου πει για τον decompiler που έχει φτιάξει: “Είναι ανάμεσα στα αυτιά μου”.

Κάνε το ίδιο install πολλές φορές. Οι φίλοι μου θα πρέπει να έχουν ξεκαρδιστεί από τα γέλια. Το ίδιο install του ίδιου OS το επαναλλαμβάνω πολλές φορές ακόμα και στο ίδιο μηχάνημα. Με τις ίδιες επιλογές ή και με διαφοροποιήσεις. Μπορεί να παίρνει ώρες (learn to multitask) αλλά σίγουρα βοηθάει. Θα βρεις γρήγορα μπροστά σου εκείνη την κουλή περίπτωση για την οποία θα πρέπει να είσαι προετοιμασμένος. Και μιλάμε για ένα system administrator τώρα, όχι για ένα developer, ούτε φυσικά για ένα casual user.

Θυμάμαι ήμουν κάτι μήνες μόνο system admnistrator όταν ο sv1xv με ρώτησε “και αυτό με το DNS πως το κάνεις;”. Τι είναι το DNS; Τι μου λέει τώρα; Θυμάμαι που με ντροπή τον ρώτησα “τι είναι DNS;” και έκατσε με όρεξη να μου εξηγήσει. Φαντάζομαι είναι πιο εύκολο να ξεκινήσει κανείς σήμερα από το DNS and BIND.

Και δεν έχω γράψει τίποτε για τα θέματα ασφάλειας υπολογιστικών συστημάτων. Το Thinking about firewalls είναι μόνο μια αρχή.

Η μεγαλύτερη χαρά μου είναι όταν φίλοι μου με ρωτάνε για πράγματα για τα οποία δεν ξέρω την απάντηση. Ο Παναγιώτης έχει ένα ιδιαίτερο ταλέντο σε αυτό, όπως και στο να βρίσκει τελικά άλλη λύση από αυτή που του προτείνω. Παρόλαυτά, η τριβή με το πρόβλημα σε ασκεί, σε αναγκάζει να επικαιροποιήσεις τις γνώσεις σου, να γίνεις καλύτερος.

Σπάνια πια θα υπάρχει ένα σύστημα που θα διαχειρίζεται κάποιος το οποίο να μην τρέχει μία βάση δεδομένων. Η δικιά μου πρόταση για κάποιον που δεν ενδιαφέρεται να μάθει πολλά για βάσεις δεδομένων, αλλά που θέλει να ξέρει από βάσεις και να μην τις αντιμετωπίζει σαν μια συλλογή πινακοποιημένων δεδομένων είναι το Theory and Practice of Relational Databases. Φαντάζομαι πως κανείς θα περίμενε κάποιο βιβλίο για MySQL ή για PostgreSQL. Απεχθάνομαι αυτά τα βιβλία! Εάν κάποιος έχει κατανοήσει τα βασικά του Σχεσιακού Μοντέλου το online documentation είναι παραπάνω από αρκετό για να μπορέσει να τα βγάλει πέρα.

Να μην αναζητάς το “μπούσουλα”, αλλά το πως δουλεύουν τα πράγματα. Το να έχεις μια λίστα που να λέει “αν γίνει αυτό, τότε κάνε αυτό” δεν λέει τίποτε. Δεν θα σε βοηθήσει ποτέ να καταλάβεις γιατί η εφαρμογή που τρέχει στο server “πάει αργά” (αν πάει) ούτε θα σε βοηθήσει να βρεις τι φταίει, ούτε πως να λυθεί. Θέλεις να είσαι ο go-to guy ή όχι; Εάν ναι, πρέπει να ξέρεις πολλά από πολλά πράγματα. Εάν όχι, κάνε παρέα με τα checklists και μη βγαίνεις ποτέ έξω από αυτά.

Και πως θα μπορούσε να λείπει μια αναφορά στο bat book;

Μέχρι τώρα απέφυγα να γράψω οτιδήποτε για εργαλεία / toolbox. Στην πραγματικότητα διαβάζοντας και δουλεύοντας δημιουργείς το toolbox σου. Δεν έχει νόημα να ξεκινήσεις ανάποδα. Όμως δεν μπορώ να μην αναφερθώ στα ακόλουθα εργαλεία: netcat, traceroute και host. Ειδική μνεία θα ήθελα να κάνω στο tcpdump. Άλλωστε για να μπορέσει κανείς να εκμεταλλευτεί το δυναμικό τους θα πρέπει να έχει διαβάσει πολύ. Αν προσπαθήσει να διαβάσει και τον πηγαίο κώδικά τους, θα μάθει περισσότερα.

Δεν νομίζω πως υπάρχει βιβλίο που να έχει αποδώσει περισσότερο σε εμένα από το SICP. Σε μαθαίνει να σκέφτεσαι.

Όπως βλέπεις φίλε Νίκο, το μόνο που μπορώ να σου ευχηθώ είναι καλή χρονιά, καλή δύναμη και καλό διάβασμα. Το post αυτό βγήκε μεγάλο και με τη βοήθεια και άλλων ίσως να γίνει καλύτερο και διαφωτιστικότερο.

12 thoughts on “on becoming a sysadmin

  1. Λίγο παλιό, αλλά είχε φανεί ιδιαίτερα χρήσιμο (σε παλιότερη έκδοση από αυτή που δείχνει τώρα το Amazon) το Unix System Administration Handbook

    Είχε και πολύ system-specific information για Solaris, SunOS και HPUX που με ενδιέφεραν… μια χαρά ήταν. Τώρα βλέπω ότι η τρέχουσα έκδοση έχει και Red Hat Linux…

    Πάντως ένα πράγμα θέλει αυτή η δουλειά περισσότερο απ’όλα: γερό συκώτι… και πού και πού διαβάζουμε τον BOFH για να γελάμε και να νομίζουμε ότι θα μπορούσαμε να κάνουμε τα ίδια (που δεν θα το κάνουμε εννοείται!)

    Καλή χρονιά…

  2. Στις απαραίτητες γνώσεις ενός καλού διαχειριστή (Unix και σχετικών συστημάτων) θα προσθέσω το φλοιό (sh). Όχι bash, όχι ksh, όχι csh. Το υποσύνολο των φλοιών ksh/bash/zsh, sh, το οποίο υπάρχει σε όλα τα συστήματα (από Solaris μέχρι FreeBSD, Linux, και Mac OS X). Αυτό αποτελεί τη βάση για πολλές λειτουργίες ενός συστήματος Unix (π.χ. cron, init.d ή rc.d, periodic, whatis, catman, locate.*, makewhatis, yypwupdate, adduser, rmuser, ). Επιπλέον, οι δυνατότητες του φλοιού sh μας προσφέρουν έναν εξαιρετικά αποτελεσματικό τρόπο για να εκτελούμε πολλές σύνθετες λειτουργίες διαχείρισης.

  3. Σκόρπιες σκέψεις και σχόλια ακολουθούν:…

    Η #1 είναι σίγουρα η αδιαμφισβήτητα η καλύτερη επιλογή. Κάθε sysadmin έχει τον (ή τους) γκουρού του. Αν αυτό είναι σε ακαδημαϊκό περιβάλλον αυτό είναι και το καλύτερο γιατί τα συστήματα δεν είναι τόσο mission critical (όσο π.χ. σε τράπεζες) και τα λάθη και οι πειραματισμοί επιτρέπονται (έως κάποιου ορίου φυσικά! :) )

    Μην φοβάσαι το prompt – το UNIX δεν είναι Gnome/KDE. Μάθε καλά sh (Bourne Shell) και μετά οποιοδήποτε άλλο shell. Regular expressions πρέπει να είναι η ΑλφαΒήτα σου και μερικά εργαλεία όπως το grep, sed, ed, vi, κ.λπ. πρέπει να τα παίζεις στα δάκτυλα.

    install και ξανά install! Δοκίμασε configuration options, compilation parameters, διαφορετικούς compilers, παίξε με kernel παραμέτρους, και μην ξεχνάς να κάνεις optimizations! Να θυμάσαι ότι η αναβάθμιση hardware δεν είναι η λύση των προβλημάτων σου.

    Χαζές ερωτήσεις σίγουρα δεν υπάρχουν και οι φαινομενικά χαζές είναι συνήθως και οι καλύτερες. Όπως είπες adamo the manual is your friend και μάθε (πραγματικά μάθε) να RTFM!

    Άλλο βιβλίο που θα πρότεινα (παρόλο που είναι outdated) είναι το Design of the UNIX Operating System του Maurice Bach. Απο αυτό έμαθα πραγματικά τα πρώτα internals του UNIX (ioctls, process scheduling, κ.λπ.) Δυστυχώς δεν ακολουθώ τη βιβλιογραφία του Linux – φαντάζομαι πως υπάρχουν αντίστοιχα βιβλία για Linux.

    Καλή χρονιά.

  4. @Διομήδης Σπινέλλης:
    Στις αρχές της δεκαετίας του ’90 στο ΕΜΠ είχε διαμορφωθεί η τάση να γράφονται τα shell scripts σε csh. Μετά διαβάσαμε το CSH PROGRAMMING CONSIDERED HARMFUL του Tom Christiansen.
    :)

    (Αλήθεια θυμάται κανείς εκείνη την περίοδο που η Sun ήθελε να αντικαταστήσει τη χρήση του sh -δηλαδή κατά βάση τα rc* scripts- με την Tcl; [sunscript.sun.com])

  5. Υπάρχουν και τα Windows u know :)

    Αν κάτι κάνει πιο εύκολη την ζωή του admin είναι: “Strong interpersonal and communication skills; capable of explaining simple procedures in writing or verbally; good phone skills.”

    Αν δεν υπάρχει η δυνατότητα συνενόηση και ελιγμών υπάρχει η απομόνωση κάτι που είχα επιλέξει και δεν είναι καλό όμορφο και σωστό. Προσπάθησε να δουλέψεις το κομμάτι της επικοινωνίας με τον χρήστη και τον προϊστάμενο σου ακομα και με ζωγραφιές. Αξίζει τον κόπο μέχρι να μάθεις τα κουμπιά τους και να κάνεις την δουλειά του χωρίς ενοχλήσεις “πότε θα είναι έτοιμο;” ή “μα είχες πει ότι θα πάρω email πριν από 1 ώρα” ή “μου είπαν ότι αυτό ίσως να” κλπ.

    …και φυσικά να εμπιστεύεσαι τον φίλο μας το tcpdump όπως λέει και ο adamo, να ξέρεις τι ρυθμίσεις παίζουν στο BIOS και να βάζεις access password σε αυτό, να έχεις πάντα μαζί σου 3-4 τηλέφωνα τεχνικών που μπορεί να σε βοηθήσουν με hardware ή service (η διαφορά του να καλέσεις την HP για service στις 1μμ αντί για τις 12μμ είναι σημαντική)!

  6. “Υπάρχουν και τα Windows u know :)”

    Δεν έχω δει ποτέ κάποιον καλό Unix administrator να μη μπορεί να βρει το δρόμο του σε ένα σύστημα με Windows (όπου σύστημα: σύνολο Ν μηχανών για Ν >= 1).

  7. Δεν έχω διάθεση να ξεκινήσω holy war, άλλα όποιος γράφει shell scripts σε csh είναι για ψυχιατρείο.

    Ασχέτως του τι προτίμηση έχει κανείς στο interactive shell, τα scripts πρέπει να είναι /bin/sh. Αφενώς επειδή είναι πολύ πιο natural για scripting, αφετέρου γιατί /bin/sh θα έχει και μια τοστιέρα. Δεν μπορείς να υποθέσεις οτι κάποιο σύστημα θα έχει εγκατεστημένο csh shell (στην γενική περίπτωση).

  8. Se mia 10-etia (an oxi ligotero) oi sysadmins tha eimaste obsolete kai tha antallassoume “war stories” tupou BOFH.

    (dustyxws)…

    Ethan
    fmr DUnix/Tru64/Sun/Solaris/FC admin…

  9. @ethan:
    Θα διαφωνήσω. Τα υπολογιστικά συστήματα έχουν αυξανόμενη πολυπλοκότητα και ανάγκες διαχείρισης, ανεξάρτητα από τις προσπάθειες των κατασκευαστών για ενοποιημένη και απλοποιημένη διαχείριση. Ακόμα κι αν μιλάμε για ομοιογενή συστήματα, όπου όλο το hardware πρόερχεται από ένα κατασκευαστή και όλο το software επίσης. Φαντάσου όταν έχουμε να κάνουμε με ανομοιγενή (όπου τέτοια είναι και τα συστήματα που τρέχουν διαφορετικές versions του ίδιου κατασκευαστή).

    Ακόμα κι αν τα data βρίσκονται “κάπου στο δίκτυο”, πάλι κάποιος θα πρέπει να κάνει supervise τη διαδικασία.

    Πιστεύω ακόμα πως ούτε καν ο χαρακτήρας του επαγγέλματος δεν θα αλλάξει: Jack of all trades είναι ο system administrator σήμερα, έτσι θα είναι και αύριο.

    (War stories θα ανταλλάσσουμε πάντα)

  10. Ποτε σκεφτεσαι να κανεις ανανεωση το αρθρο Γιωργο; Πλεον η δουλεια και τα εργαλεια του διαχειριστη συστηματων εχουν αλλαξει κατα πολυ απο το 2008.

    1. Ενδιαφέρον. Ίσως μόλις προσαρμοστώ στην καινούργια δουλειά. Όπως είδες το URL του blog έχει αλλάξει :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s