A Review of Terraform

Created on 2021-02-08 14:47

Published on 2021-02-08 15:01

Terraform is an excellent tool for changing, building, and versioning infrastructure. The advantage of using Terraform is that you can quickly shift into the regular automation phase. Before using Terraform in automation mode, it is best to use it by a large team or in production.

With Terraform, you can choose which processes to automate. This flexibility increases the effectiveness as some manual jobs that don't require much effort can still be done manually. Terraform is capable of managing existing infrastructures. It also offers some in-house solutions for many IT needs. The best thing about this tool is that it works with any cloud service provider.

Advantages of using Terraform

There are many advantages to using Terraform.

Portability

Terraform offers portability as no other IT solution does. You can use Terraform with any cloud service provider like Google Cloud and Amazon Web Services. Since Terraform is written and operated using a single language, the configuration processes to use these cloud service agents will also be relatively straightforward. The high portability comes in handy, especially when you're thinking of switching your cloud provider.

Simple Graphical User Interface

Terraform comes with a simple Graphical User Interface. You can manage most of the work from the GUI itself. If you are not familiar with command-line interface tools, you can use this GUI to operate the whole system.

Safety and Security

Terraform has many fantastic security features. The security needs of organizations vary with the field they're working in. However, there are some common principles that every organization has to follow. Defense in depth is one such practice to ensure the safety of your organization. Many organizations such as Target could have avoided the data breaches had they followed proper defense-in-depth techniques.

Terraform also offers defense in depth in the form of access control. Using access control features, we can allow only a selected group of users to access some information. This will come in handy when you're dealing with the automation of more than one department. For instance, if both the security and the marketing teams are on the same infrastructure, you can use access control to separate the information available to the security team from the marketing team.

Terraform is Masterless

By default, Terraform is masterless and doesn't need a master code to track all the configurations. The masterless architecture will save us some resources such as time and money since we don't have to maintain a master code for the platform.

Promote collaboration

Terraform makes it easier to collaborate on the infrastructure. Increasing its use cases and is a fantastic feature in general. The ease of collaboration combined with flexibility makes it a truly excellent tool to work with.

Declarative Style

Terraform has a declarative style. The declarative style means that the software can figure out the end state of a task and achieve it all by itself. Further reducing the workload and increases efficiency.

Disadvantages of Using Terraform

Further Work Needed on Integration

One of the best features of Terraform is its integration. However, the integration features are not completely matured. They are still in the "initial" stages and are always changing. Some users also reported that the APIs feel a bit buggy at times. Showing that some work still needs to be done on the integration of application interfaces.

Terraform is New

Terraform is "new" compared to its competitors (initial release date July 28, 2014). This could mean there are less resources out there. 

Terraform has its own language

Even though this disadvantage is not unique to Terraform, it is still a significant concern for many DevOps engineers. DevOps engineers need to learn the language to work with Terraform, which may be hard at first. Combined with the few educational resources, really puts a damper on the developer community.

Breaking Updates

Since Terraform is "new", it's coming up with a lot of features in the upgraded versions. Users demand that all the features on cloud service providers like Amazon Web Services or Google Cloud be available on Terraform. Because of the demand, Terraform keeps adding features that make upgrades massive and hard to navigate. This is not a good sign for large enterprises using Terraform as they may have to do days of work to upgrade the infrastructure.

Errors are not Detailed

Some users reported that the errors they are facing on the Terraform platform are not quite detailed. This may lead to a misunderstanding among the DevOps teams and cause an infrastructure breakdown.

Using Terraform

Using Terraform is quite simple. You first have to download the application from the official website. Terraform is available for macOS, Windows, FreeBSD, OpenBSD, Linux, and Solaris. Once you have downloaded the files, proceed with the installation.

Terraform can be used with major cloud service providers like Amazon Web Services, Azure, and Google Cloud. Terraform offers a free learning repository on GitHub for its first-time users. Clone this repository to explore how things work in Terraform. You can also download it to your system.

Resources

While I stated that their resource can be hard to find here are a few of them. A beginners course from linkedin Learning

And an advanced one from linkedin learning

There are a good selection of examples and ready to use code on

Conclusion

Terraform is a great tool for automation. The sheer flexibility it offers makes it one of the best tools out in the market. However, since it is still in the "development" phase, it is best to wait for stable versions before implementing this in your organization. I would go for 0.14.2 and then look at what the rest brings. But always do a Prove of concept for your self.