Closing thoughts on the future of Terraform

If you invest some efforts in the tool and introduce it into a large organization, then you should consider many factors. After all, you don't want this tool to be suddenly abandoned by all developers and deal with an expensive process of replacing it. That is unlikely to happen with Terraform though. The company behind it seems to be growing strong, adoption of its tools grows, and more and more third-party developers contribute their code to Terraform, Consul, Packer, and others. But in which direction will it exactly grow? We can only guess, of course, but let's try anyway.

You already heard about Puppet--one of the main configuration management tools out there, backed by a seemingly successful company Puppetlabs. Unlike Chef, which is pure Ruby, Puppet had its own DSL from the very beginning, which makes it (arguably) easier for administrators to learn when compared with learning a programming language. Today, Puppet language is a bit less of DSL and is a bit more of a full language though. In recent releases, it even got a native support for things like loops.

Puppet was made to solve the problem of the automated, predictable configuration of a server. Now, because of Puppet language itself being powerful, it can be used to configure higher levels of infrastructure, such as AWS resources. As one of the people working at Puppet said (rephrasing):

You don't actually care what to manage with Puppet.

It has a powerful declarative language, with many features, capable of performing updates and being idempotent. Puppet is not just Puppet itself though. It has Hiera to store data, has MCollective for orchestration, and dozens of another tools, either provided by Puppetlabs or by the community (see TheForeman (https://www.theforeman.org/) as an example) that make it even better.

Why so many details on Puppet? Because the way it started is very similar to Terraform, and the way it developed over time is similar as well. Terraform has a special DSL instead of a full programming language, and this DSL has characteristics very similar to a Puppet language. It is still very new DSL, which gets more features over time. Recently, it got simple conditional support, for example. Maybe one day it will even get some kind of loops support in addition to the existing count mechanism.

The difference, though, is that unlike Puppet Terraform started with the top level of cloud resources instead of an in-server configuration. It appeared just at the right time: when the whole Cloud thing exploded, every major technology company built their own portfolio of cloud services, and the need for a tool to manage it properly was really high, and it is even more true today. However, in addition to these cloud providers, Terraform gets more and more providers focused on software that goes inside your servers. There are, for example, InfluxDB and MySQL providers, being able to create databases on a server. While Puppet went from a lower level of single server configuration to the management of higher layers, Terraform goes the other way around--adds more and more lower level providers, while still keeping high-level providers up to date.

That's where uncertainty about the direction of Terraform comes from. Is it a tool like CloudFormation or is it a new-born configuration management tool? Currently, it is neither of them. To be a complete infrastructure provisioner, Terraform currently lacks many important features that are available only in Terraform Enterprise. To be a complete configuration management tool, it lacks so many nice features and maturity of titans such as Chef and Puppet.

Maybe it will eventually focus on one area, dropping the major support for the other one. Perhaps it will become both configuration management and infrastructure provisioning tool: the first tool that can successfully take care of all the layers of your infrastructure, from installing packages inside an EC2 instances to creating an Auto-scaling groups for these instances. But it will be a really long ride (years, for sure) to get there. It will need to have features both from infrastructure provisioners and configuration management tools.

Terraform proved to be useful for putting the cloud under code control, being the best tool for this purpose. It also has some fresh well-thought ideas that it is built upon.

As the release of version 1.0 is getting closer, we will see if Terraform will become a major player on configuration management or infrastructure provisioning market or it will remain to be a small, focused tool with a very narrow specific set of applications.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.143.168.172