DevOps complexity is rising out of control. Tools like Puppet, Chef
and Ansible get combined with Vagrant, Docker and OpenShift. Mix in
external logging, authentication services and apis (and api failure)
to stir things up. Then add runtime dependency management through
gems, pip and cpan, seasoned with OS distribution updates and CI.
The promise of tools like Puppet, Chef and Ansible is infrastructure
as code, meaning that you describe your infrastructure through an
executable specification. That gives you versioning and
repeatability. For many the question is: How do I get a good
Puppet/Chef/Ansible description.
Unfortunately it often goes like this: copy as many deployment
recipes as needed, put them together in a file, and ready you are.
In this talk I'll describe a method to document and explain deployment
recipes to yourself and others. The method is called Literate DevOps.
Literate DevOps is a simple method to document and explain your
environment. It is based on the concept of literate programming and
independent of your DevOps stack and tools. When you set up a new
system, or modify an existing one, you'll need to document somehow the
inner workings. With literate DevOps you can describe the system and
at the same time include your executable code/playbooks (Puppet, Chef,
Ansible) and its output into a live document.
The talk focuses on pragmatic advantages of Literate DevOps and I'll
show examples to explain the workings of the method. You can think of
Literate DevOps as a tool for understanding, documentation, helping
and teaching.