Let me begin with a story… of misery, frustration and sorcery.
Once upon a time, I had to install Apache and a MySQL database just to try out my application. Online, I found installation notes for version 2.0.39, but I needed a security fix in version 2.0.40. Only four hours later, I had figured out the configuration differences, and successfully triumphed over the gods of the box.
Yeah, we’ve all been there.
Later that year, after changing jobs, I needed to (once again), install Apache. Did I remember what I did before? I fell into a pit of despair, as I did not. I had to re-research the entire process.
I consider system administration…er, operations, akin to the black arts. Sure, you may sell your soul to a Puppet master in exchange for a magic codex, but in 2002, I began my own tome of spells.
My grimoire, like other ancient books on magic, became enchanted, and I could cast spells directly from the book! Really! And those spells could shape the manna that other spells used.
What are you talking about?
This analogy isn’t far from the truth. Right now, you have a
directory full of scripts that you’ve written over the last 15
years. Each written in a fit of panic and need. Through the miracle
of Doug McIlroy’s pipe, you can string the output of the scripts to
other programs or scripts to achieve the results.
This approach is missing a couple of pieces.
First, if the output isn’t good (who the hell came up with the
ifconfig?), you will need to craft some intermediate
perl script. Alternatively, might be nice to essentially place a
break-point mid-stream, edit the results in your favorite editor,
and then resume.
Second, after learning the esoteric incantation for displaying the open UDP ports on a server, you want to refer back to where you found the knowledge…but your shell history doesn’t correlate with your browser history.
Third, after getting stuck in a mire of an exceptional stack trace, you need to mail your teammates the previous forty-two steps to reproduce it. You know that the one step you forgot to copy/paste will be the critical step needed to troubleshoot the problem.
These are some of the reasons why I’ve been using various features of Emacs in a way I call Literate Devops.