The many tools around Terraform

Terraform is a small tool. While reading this book, you've hopefully noted how many different other tools were introduced all the time. They are as follows:

  • Chef, Ansible, and Puppet: For configuration management
  • Inspec and TestKitchen: For testing
  • Terragrunt and Terraforming: As a helper for Terraform operations
  • Git, git-crypt, GitLab, and GitLab CI: For teamwork
  • S3 and Consul: For storage
  • Bash and Ruby: For scripting

You have to learn all of these (or their analogues) to make Terraform production ready. The focus of all HashiCorp tools is to solve one problem and solve it well, and leave everything else to other software out there.

It can be beneficial quite often - you are not forced to change your toolset, you can pretty much naturally integrate Terraform into your workflows without any big sacrifices. Introducing Terraform to an existing environment is easy. Pick one particular service you want to manage with it and write first template. Decide on how you want to store your state file and roll out upgrades early. Slowly extend the area managed by Terraform. There is no big switch, no big rewrite.

This focus on one-tool-for-the-job has some downsides as well, especially if you compare them with competitors. Let's take CloudFormation. It is a nightmare to write huge CloudFormation templates. For every small thing you have to add another 10 lines of JSON or YAML. It is a true example of bad developer's experience. But note how well it is integrated into the whole AWS ecosystem. And take a look at AWS Service Catalog: just using CloudFormation, you can offer complete user-friendly interface for spawning up, updating, and destroying entire stacks, without ever thinking about state files, building this UI yourself, and so on.

Just using CloudFormation and Service Catalog, you can build the whole internal App store for infrastructure environments in a single day. Its the same story for tools such as ManageIQ, which gives you tool not only templating, but the complete life cycle management, full overview of infrastructure, an API to all entities, and a self-service portal for teams inside your organization. If you want to come any close to AWS Service Catalog or ManageIQ with Terraform, you have to do all the work yourself or pay for Terraform Enterprise, of course, which is a bit better alternative that just the Terraform tool itself.

So keep in mind that Terraform is not a full, packaged solution for your infrastructure. It's a tiny useful tool that must be wrapped with and connected to many other tools if you want to use it at scale and in production.

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

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