
What's the best way to learn to be a sysadmin? - antjanus
I'm wondering what's the best way to learn the ins-n-outs of managing servers, messing with Linux, and doing all of that kind of stuff. There seems to be no coherent course/tutorial set that covers this.
======
oz
Former Big-4 sysadmin here.

Most people who become sysadmins are simple the guys and gals who were playing
around with from an early age and got good at it. This playing around led them
to discover things like the concept of services, the registry 'runas' etc on
Windows, and grep, init and symlinks on Linux.

This is wholly inefficient.

Tinkering is important, but _structure_ is better. Learn the concepts behind
the systems you administer, the correct way to do things, and where everything
fits in and how it interacts. That transforms you from a tinkerer to a
professional.

The best way to do this? Easy: Find out what the certifications are, and get
the certification books. Read the books, but what you're really after is the
Table of Contents - that's your _syllabus_. That will teach what topics are
important, and what can be safely ignored.

Armed with that syllabus, you can do research on the 'Net to your hearts
content, at your own pace. The beauty of the profession is that with virtual
machines, you can learn the vast majority of what you need to on your own.

I've found for Linux, that RedHat / Fedora has very comprehensive
documentation, that will teach you alot. There's also a Debian Handbook that I
encountered a few months ago. There are a lot of sites dedicated to Windows as
well, and Microsoft's own MSDN is quite good.

~~~
antjanus
Thanks, i think this is the best piece of advice I've gotten so far (I went on
reddit and Quora before this). I'm currently working with CentOS VPS (I'm only
a dev) and refer to the sysadmin a lot. And I actually like messing with, have
liked it for a while so I wanted to start learning it but never really found
anything as structure as there is for (for example) PHP, and web development
in general. I've got a half-price books right next to my house and they
actually have a ton of programming books so I'll give that a shot! :)

Thanks!

~~~
oz
Happy to help!

One thing that you'll love about VMs is snapshots. The ability to revert to a
point in time gives you the ability to mess up without consequences. Take full
advantage of this.

------
pilom
This really depends on what your goal is. Do you want to get a job as a
sysadmin? At a startup as a DevOps guy or as a BigCo Sysadmin? Do you want to
host your own website?

You'll probably hear this a lot but start by creating your own Linux VM.
CentOS is a free distro and actually maps exactly to Red Hat Enterprise Linux
so you can put on your resume "I know how to administer RHEL" which would
actually be recognized by an interviewer. Then start doing little challenges.

Ex: Write a bash/perl script which takes a word and a number. Use curl to
download number of images from flickr with the search term. Or: Write a
kickstart file which sets up an apache server and is configured to serve out a
static page you created. Or: Using ping, awk/sed, grep etc, write a bash
script which emulates the tracert command

Bonus points for all of the above: write your scrips in vim/emacs.

every time you don't know what command to use, find a random script in the
/etc directory and try to understand what it does. When you find a command you
don't know, read the man page, then google it b/c man pages can suck a lot.

Use version control. For everything. Git gets a lot of press on HN but
Subversion will be recognized by a lot more people who would interview you
outside of the startup world (though this is changing slowly).

Some people recommend you get familiar with your shell/editor preference files
(alias commands, change colors, change shortcuts, etc). I'd argue that
effective working sysadmins can get by with the defaults in bash and vim or
emacs (though i feel vim is more likely to be installed on barebones
Enterprise Linux distros which happen to be the ones you actually would work
on)

~~~
antjanus
I don't really have a goal with it other than I like messing with it and I do
want to have a VPS to host my sites in the future and develop apps. So that'd
be a "not right now" for the job, and kind of a mix of "hosting your own site"
and "devops guy at a startup". haha :)

I'll setup a virtualbox for it, that will probably be the easiest. :)

Thanks for the exercises! I'm having to use vim (or vi) for the little things
I do on a VPS I got. Oh and, I have used SVN, Mercurial, and Git. I mainly
stick with Git (or mercurial) because of the free private repos bitbucket
offers.

Thanks a ton! :) I really appreciate it!

~~~
pilom
Looks like you're off to a good start. Given your goals, the one thing I'd add
is to get familiar with the Configuration Management tools like Nagios and
Puppet/Chef. Nagios is a management tool ("Server X is getting slashdotted. Go
check it") and you can use puppet or chef for system deployment. A working
familiarity with those tools would put you in the top 5% of sysadmins and
would also be very useful for being the devops guy at a startup.

------
staunch
1\. Run your own servers. Rent a server and do stuff with it, run various
services, host other people's stuff for free, have a favorite PC game? Run a
server. Setup and maintain common software (MySQL, Postgres, Apache, nginx,
OpenSSH, BIND, Wordpress, etc, etc). Learn the init, config, and package
management systems. You can learn a _ton_ with just one machine.

2\. Get a job as a "Junior" Sysadmin somewhere. Once you know enough to be
dangerous you can learn how to be great by working with great people who have
more experience.

3\. Learn to program. Perl/Python are probably the best choices. The better
programmer you are the better syadmin you'll be. Learn how to write long
running daemons, network servers, and automation software.

A lot of what you need to learn to do really interesting sysadmin stuff (like
automating and controlling hundreds of servers, resource management, mass
storage, fault tolerance, power, cooling, advanced networking) only comes into
play when you're dealing with hundreds of thousands or millions of dollars
worth of equipment. Everyone is pretty much forced to learn this stuff on the
job. Even a well equippped lab couldn't do a great job at preparing you for
real world situations.

Most of all: Find useful things you want to be able to do and then figure out
how to do them. Then figure out how to do them better, cleaner, faster.

Good luck. Feel free to shoot me questions. I've setup and run datacenters
many times and I love this stuff.

~~~
andyhmltn
Defiantly agree with #1. I bought a small VPS about 4 months ago ($15 a month)
and have learnt a tonne.

------
devdas
There isn't a coherent course. The closest I have found to a coherent set of
ideas is [http://www.amazon.com/Practice-System-Network-
Administration...](http://www.amazon.com/Practice-System-Network-
Administration-Edition/dp/0321492668)

There's a rather large number of books you would have to pick up, if you
wanted to go that way.

What follows is a set of guidelines, not rules. You want to know at least one
scripting language (Perl, Python, Ruby), the Unix shell, and SQL. On the
Windows side, you need to know Powershell, or equivalent scripting language.

You also need to grok logging, operating systems, and hardware to some level.
(At least to be able to know when to make tradeoffs between space and access
speed).

Knowing various models of IPC is useful (processes, threads, evented models).

You need to know networking (configuring a Cisco or Junpier device is a good,
but not required skill). Knowing the fundamentals of routing, BGP, OSPF, IP,
TCP, UDP, etc are _essential_.

Amongst common technologies, you need to know DNS, email, webservers, proxies,
file storage and access.

Since you mentioned Quora, here's my answer to a similar question from there:
[http://www.quora.com/What-are-some-good-college-courses-
for-...](http://www.quora.com/What-are-some-good-college-courses-for-somebody-
interested-in-becoming-a-computer-system-admin-for-a-small-or-large-
business/answer/Devdas-Bhagat)

------
seiji
Use command lines. Break things. Lose data. Cry. Figure out what broke from an
entire system viewpoint and a code-level viewpoint. Then fix it. Estimated
time to proficiency: 2-20 years.

------
murz
I really like the Linux/server tutorials SliceHost has:
<http://articles.slicehost.com/>

~~~
antjanus
sweet.

