A reading list for the larval stage sysadmin. This list is focused on the UNIX family of OSes, mainly because that is my area of expertise.
Table of Contents generated with DocToc
- Books to Read
- Languages
- Windows Administration
- Blogs and Podcasts
- Online Communities
- Other Resources
So you've got your first sysadmin job. Congratulations, it's going to be an interesting ride.
- Effective DevOps - A practical guide for creating affinity among teams and promoting efficient tool usage in your company.
- Site Reliability Engineering - How Google Runs Production Systems.
- Systems Performance: Enterprise and Cloud by Brendan Gregg, this book is an award winner and a favorite of many a sysadmin, it addresses systems performance at scale.
- The Art of Capacity Planning - John Allspaw's book is a hands-on and practical guide to planning for such growth, with many techniques and considerations to help you plan, deploy, and manage web application infrastructure.
- The Art of Monitoring - James Turnbull's book on the art of modern application and infrastructure monitoring and metrics.
- The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations - The results of a multi-user case study on DevOps and the practical-oriented sequel to The Phoenix Project
- The Goal - A foundational novel on the Theory of Constraints and many other operational concerns.
- The Phoenix Project - know why your projects are important to the business
- The Practice of Cloud System Administration, by Tom Limoncelli. Focuses on “distributed” or “cloud” computing and brings a DevOps/SRE sensibility to the practice of system administration. Includes case studies and examples from Google, Etsy, Twitter, Facebook, Netflix, Amazon, and other industry giants are explained in practical ways that are useful to all enterprises.
- Time Management for System Administrators, by Tom Limoncelli. You're going to be pulled in a dozen different directions, if you can't manage your time you're going to suffer.
- UNIX-Linux-System-Administration-Handbook by Evi Nemeth is a great book, this book is targeted to larger system deployments and real world large systems.
- Web Operations: Keeping the Data on Time - A collection of essays and interviews, with web veterans such as Theo Schlossnagle, Baron Schwartz, and Alistair Croll that will teach you strategies for designing your web site to scale up smoothly to web-scale load.
Every sysadmin needs to know Bash.
- Advancing in the Bash Shell - Sam Rowe's bash as CLI tutorial
- Bash Pitfalls - Greg Wooledge has a great list of unpleasant surprises in Bash
- Learning the Bash Shell - hard to go wrong with an O'Reilly reference on anything, really.
- shellcheck is a lint for bash. It'll help you find unused variables, deprecated syntax and other things that make your bash scripts less stable. You can install it with
apt-get
,brew
,cabal
, oryum
. - Google's Shell Style Guide lists what Google's developers consider best practices for bash scripts.
If you're in a Ruby shop, you'll want these:
As of Python, compared to bash, you will love it's higher support towards string manipulation and system infrastructure.
A couple of places to go into as training would be:
- Learn Python the Hard Way, a rather comprehensive tutorial covering many aspects of the language.
- Programming Python, a well-written O'Reilly book, short and concise.
- Practical Python for Sysadmins, an awesome transition course from Bash to Python (full highlights).
- General Data, a neat place to see usage and examples of Python and not only.
- WSGI - Web Server Gateway Interface, the Python implementation of web servers.
Often you'll find yourself in a Windows enviroment, like it or not. These might come help you in those cases -
- Code-Repository
- Best Practices and Style guide
- PS Cmdlets In Your Inbox lets you schedule a task to get PowerShell Cmdlets via email daily or at the command line.
- PowerShell.org eBooks Tools
- AWSCli provides a unified command line interface to Amazon Web Services. Wean yourself off of the webui if you want to be truly productive
- S3cmd is a free command line tool and client for uploading, retrieving and managing data in Amazon S3 and other cloud storage service providers that use the S3 protocol, such as Google Cloud Storage or DreamHost DreamObjects.
- og-aws is an excellent resource to AWS written by and for engineers who use AWS extensively.
- Azure Quickstart Templates community contributed Azure Resource Manager templates for tons of things.
- Azure Friday "Just two engineers, a laptop and the cloud, solving problems".
- Azure Xplat CLI cross platform CLI interface for Azure (written in nodejs).
- Azure CLI 2.0 new preview CLI interface for Azure (written in python).
- Azure Code Samples samples of code showing how to interact with Azure.
- Official Azure Documentation official documentation for all Azure services.
Quite simply, if you aren't using configuration management, you're doing it wrong.
You don't want to manually configure any servers - no matter how hard you try, they won't end up truly identical and having meat typing in commands takes far too long per server, doesn't scale, and the manual labor will discourage you from standing up new VMs for testing.
There are several good options:
- Ansible is designed to be minimal in nature, consistent, secure, and highly reliable. Was recently purchased by Red Hat.
- Chef is written in Ruby and Erlang and uses a Ruby DSL to describe system configuration
- Puppet makes it easy to automate the provisioning, configuration and ongoing management of your machines and the software running on them. Make rapid, repeatable changes and automatically enforce the consistency of systems and devices – across physical and virtual machines, on premise or in the cloud.
- Salt orchestrates the build and ongoing management of your infrastructure.
Among the many places you're going to find regexes very useful for is handling logs. When you have a multi-gigabyte logfile, it's a lot less painful to look at just the entries generated by the service that you got alerted about.
- sed and awk Pocket Reference presents a concise summary of regular expressions and pattern matching, and summaries of sed and awk and how to use them to edit files and convert data from one format to another.
No matter what source control you use (git, hg, perforce, whatever), you're going to have to write commit messages. Make them good. Explain why you made the change, not just what you changed. And no, the diff is not an explanation.
Good commit messages help the rest of your team understand what you're trying to do and make it easier for them to find logic errors in your pull requests - the code may be technically correct, but if they understand what you're trying to do, they can see when your code isn't actually doing what you want it to.
Here are a few articles that while focused on git apply to any system you're using:
- 5 Useful Tips for a Better Commit Message is another good article on writing commit messages.
- A Note About Git Commit Messages
- Writing Good Commit Messages is a good article on writing coherent commit messages
Whether or not your shop uses git internally, you're going to end up needing to use it for the many useful things on GitHub.
- 19 Git Tips for Everyday Use - a good set of starter tips for using git
- git-flight-rules is Kate Hudson's guide to using Git in specific situations.
- git-tips/tips is a collection of git tips
- Pro Git by Scott Chacon and Ben Straub is a great overall resource for git.
- Why the Heck is Git so Hard? The Places Model - an article about moving from SVN/CVS to git.
Don't get involved in the Editor Wars. Just. Don't. Your choice of tool does not need defending. Nor does anyone else's choice.
However, you should care about your tools. You should be able to use them efficiently.
Vim is a reality of life for SysAdmins. It is the one editor you can be sure is installed in even the most minimal install. You must be able to do at least basic edits with it. You don't need to love it, but you will have to use it.
- Damian Conway, "More Instantly Better Vim" - OSCON 2013
- vi and Vim Editors Pocket Reference, 2nd Edition
Many people like Emacs. You might be one of them. Don't be afraid to try it out.
Use tools with which you are productive. If you want to use a GUI Text Editor or IDE, don't let anyone give you a hard time about that.
There are GUI versions of vim and emacs that have ardent followers.
Atom is a fairly new editor with significant traction and plugin ecosystem. Sublime Text is another editor with an extensive plugin ecosystem and arguably one of the inspirations for Atom. Visual Studio Code is a cross platform editor that is gaining traction in the marketplace.
- Arrested Devops is hosted by Matt Stratton, Trevor Hess, and Bridget Kromhout. ADO is the podcast that helps you achieve understanding, develop good practices, and operate your team and organization for maximum DevOps awesomeness.
- Code as Craft is Etsy's ops blog and is full of well written examples of dealing with real-world problems at scale.
- Hey, Scripting Guy! Blog is a blog that answers common (and some uncommon) PowerShell queries.
- Julia Evans' Blog - Julia writes a great blog where she'll dive into interesting topics and explain them clearly.
- Kitchen Soap - John Alspaw is the CTO at Etsy and writes a great blog about web operations and operating at scale and other things that are interesting to ops types.
- PowerScripting Podcast is hosted by Jon Walz and Hal Rottenberg.
- DevOpsChat Slack is another community of DevOps minded folk with a diverse set of topic specific chat rooms. Home to Arrested DevOps.
- Hangops Slack is a community of DevOps minded folk with many subject focused chat rooms.
- PowerShell Slack is a community of PowerShell enthusiasts and Windows centric DevOps topics.
- awesome-sysadmin - A curated list of awesome open-source sysadmin resources.