What is Terraform and why is it Important

Andrei Ciorba
Andrei Ciorba December 09 2020 #terraform

share this on:

  

Terraform is a tool for developing, changing and versioning infrastructure safely and efficiently. Find more about it from our video demo below:

 

[Video Transcript]

What exactly is Terraform?

If we were to start describing Terraform we can start from the official definition, which is this one, which will probably lose you as its audience around the middle section. 

So let's try a shorter one. The short definition that you will find a lot of places on the Internet is infrastructure as code.

It's very comprehensive. It's 1% correct. And this is a concept that will be coming back to in just a moment.

It doesn't exactly help you put a finger on Terraform and what precisely it does. So I would say the better definition would be the third one which is a definition that is tricked by me over the course of the past one or two years since I've been teaching Terraform. So it basically is a tool for defining a virtual infrastructure. Right?

So you're creating virtual infrastructure and talking about virtual infrastructure. We will refer to public clouds. We refer to virtue Infrastructure that might be living in your own on-premises data center doesn't matter if it's a private public or hybrid cloud. And in order to define that virtual infrastructure Terraform lets you use code? It's just text, code in a human friend language. And then you can use that code as the piece of text and you can deploy it across a variety of cloud providers. This is a very important idea here because Terraform does not tie you to one single cloud provider; actually Terraform works with hundreds. Lots of cloud providers. Yes, there are hundreds of cloud providers out there.

Why Do We Need Terraform?

 

 

What kind of problems is Terraform actually attempting to solve?

[Video Transcript]

Well, to start the story here. I would say that a long long time ago, everything was deployed manually and then managed by hand. But things became more complicated and doing everything by hand becomes quickly and increasingly difficult since infrastructure nowadays is extremely mixed.

An extremely mixed environment. You not only find servers storage backup appliances databases and tons of networking devices in your current data centers, but they come from tens and hundreds of vendors out there right there on on-premises, they're running clouds. They even ran somewhere in between and we had some things to fear.

Of course, some risks that we had to face. First of all, it was the fear of downtime. You know when things have to change management, when something went wrong. Incident response. Stuff like that. Even when something new was introduced in the network. 

All of these were actually hurdles right in the process of conducting the smooth business. Then the second point here: typos and misconfigurations. Actually, this is probably the most important reason, doing the same manual tasks on a hundred servers or a hundred switches it's bound to cause some errors at some point in time. It happens. We're all humans. 

This is actually the main reason behind the development of automation tools to prevent accidental misconfigurations and on the entire internet and news sites and IT. 

It is full of examples of how badly simple typo can go right you're going to find examples from Google, from Amazon, from Microsoft, all the large Cloud providers have had at some point in time to suffer before because of a simple human error. Humans make mistakes, right? 

It's not a question of if but of when it happens and in this software-defined everything world changes are that much easier to make as well as mistakes. Also, we have the issue of fragmentation: every team deploying their servers, every team deploying their storage appliances, you have the networking team, we have the applications team. 

It's very difficult to have a true high level overview of what's going on in the enterprise network.

Now, there are a lot of tools out there, which are marketed as being a single pane of glass for your enterprise environment no matter how large or how complex it is. 

I'm sure you're aware that none of them are going to provide your 100 percent with that single pane of glass where you don't need any other tool out there to figure out what's running in your environment. 

And there's also inconsistent deployments because you have a lot of synchronization overhead between these various teams and usually this synchronization overhead between people between teams is usually the hardest thing to do, and the weakest link and also the last point here on the slide. 

 

New call-to-action

share this on: