Learn Terraform The Hard Way - Ian Miell

07/06/2018  

Ian Meill is a well known name within the DevOps circuit. He has spoken at The DevOps Exchange a couple of times regarding deployment with containers, along with various Open Source tools he has built.  

Ian has over fifteen years' experience working with FTSE-100 companies delivering mission-critical services, is the Author of the book Docker in Practice, and runs a great blog on DevOps and Docker - https://zwischenzugs.com 

Following the success of Ian's book on Bash, he has decided to write a new publication on one of the most popular DevOps tools at the moment, Infrastructure as Code Software, Terraform. 

Why did you decide to write Learn Terraform the Hard Way?

A couple of years ago I had to build some infrastructure regularly on the cloud as part of some Kubernetes work. I knew Terraform was the tool of choice in this area. As a result I stumbled through learning, experiencing a lot of pain and confusion along the way. The docs were there, but there was a lot of figure out, and the docs that existed tended to assume a level of awareness of both the cloud and Terraform itself that was potentially unhelpful to the casual user.

Since I'd already written https://leanpub.com/learngitthehardway and https://leanpub.com/learnbashthehardway it seemed natural to take the material I'd gathered and help others with it.

Also, writing a book like this is usually the best way to properly learn a technology! You can't really hide from a critical reader who's handed over money for your help, and it forces you to go right into the weeds and explain everything from first principles. Hand-waving just won't do!

Who is the book aimed at?

My imagined reader would have been given a set of Terraform scripts already in use and is wondering what to make of them, how they work, and where to start. I think there's going to be a lot of these people around in the coming years.

Or the reader might want to add Terraform to their CV. This will get them using it in a realistic enough way that they can say they've used it without fibbing. Or they're just curious to use Terraform in a safe way before going to the real world.

Why is it always the 'Hard Way'? Is a quick fix not possible?

Quick fixes are easy to find - just google them or look them up on StackOverflow! I do this myself (everyone does!), and it's fine if you just want to solve a particular problem and move on. If you want to actually get proficient with a technology though, you're going to have to take a step back and study the technology from the ground up. Whether it's with this book or not, there are certain key concepts and ideas that must be grasped before you can really get to grips with a technology.

The 'Hard Way' is a concept developed by Zed Shaw (see https://learncodethehardway.org/). His books take a similar approach, where the reader has to type everything in and develops a muscle memory of the things you need to learn. Software development is a practice - you learn by doing and thinking. Both are intimately related. What his (and I hope my) books do is guide you through that journey so you don't waste time going down the wrong path. Think of how you learned to ride a bike - you probably had someone with you coaching you as you struggled to learn, but you had to turn the pedals yourself. The aim of the book is to be that coach.

What should the reader expect to learn from reading the book? 

They might be surprised at the start, as we don't get to 'the cloud' until Part II. All we provision is local files. That's because Terraform's essence is that it's a dependency manager of configurable items. This makes it perfect for the cloud, but if you're not a cloud expert already that can add significant cognitive overload to 'getting' Terraform. So I start simple and build up.

I've seen Terraform guides that make the assumption that you're an expert on cloud technologies, and I think my approach is a better one for those that aren't. What you get is a pretty short path to a deeper understanding of what's going on and how all the bits fit together. Then when someone mentions some supposedly sophisiticated concept to intimidate you in a meeting you answer them with confidence that you really know what's going on.

The latter part of the book will also go over some of the real-world aspects of Terraform use, like how you structure your work, and some of the gotchas that trip people up.

And where can I purchase the book?

It's available at https://leanpub.com/learnterraformthehardway
It's 50% complete at the moment, and all updates from here are free. The price will likely rise as it nears completion!