Anyone have a good introductory article about these tools (and others like Vagrant etc)? I keep hearing about them, but so far, have been managing a single VPS fine with ssh+git, with supervisord thrown in. Am I missing out by not using these?
I'm working on Ansible for DevOps[1]. You can download a preview, which has a couple good chapters on setup and initial usage. Even for managing one server, a configuration management tool is a major help; I've started using Ansible to manage my Mac workstation as well[2] (so I can keep my two Macs in pretty much perfect sync).
I only assume the reader has basic command-line familiarity, but I try to make the writing approachable for both newer admins and veterans.
I hope to have the first draft complete by summer. I'm planning on pushing out a new chapter every couple weeks, and already have notes and material for four more chapters... Just need to keep writing.
Right now I'm working on a chapter on security, and another on Roles, and will probably publish an updated version next week.
I'm also working on getting one or two really good technical editors, as right now I'm basically doing my own editing as I go, one chapter at a time. Once I feel comfortable with where the book is, I'll be publishing on Amazon so people can get a hard copy.
I'm publishing as I go on LeanPub; I've written a little about the process so far on Server Check.in[1]. I'll probably work on getting the book on Amazon/Kindle before it's in its '1.0' state, but LeanPub will always have the latest version of the book (including after the '1.0' release).
Here's a question for you: if your VPS would die today, what would it take to get a new one up and running? Create a user? Install some packages? Add an nginx config file? Maybe add a line or 2 to ~/.ssh/authorize_keys?
If you didn't have a checklist, could you remember all the steps to get the machine back to its current state? If not, you probably should have a checklist. Chef/Anisble/Puppet lets you make such a checklist, but that checklist is actually runnable so that if you needed to bring up a new box it's just one command line away.
So, are you missing out? Maybe. It depends on how complicated your setup is. My experience is that over time, the complexity tends to go up. It seems like extra work up front to make all your configuration changes in some weird extra layer, but as your changes grow and grow it becomes nicer and nicer to have them all listed and documented.
An analogy: it's kind of like programming with no source control. You can do it, especially if you're not collaborating, but as time goes on it becomes more and more cumbersome to work without it.
Not really. For a single box, ssh+git are fine. Chef/puppet/Ansible are particularly useful when you have many servers with various configurations. NixOS seems to be useful for many servers with various configurations that have to be modified over time.
I'm normally not a fan of O'Reilly books. But the "Vagrant" O'Reilly book is one of the best coding books I've ever read. Made me see the power of Vagrant and Chef and gets you up and running with Vagrant pretty quickly.