Terraform Builder
Welcome to Terraform Builder. Terraform builder is based on a similar concept of Packer Builder.
NOTE: This is highly under development and far from fully featured.
About Terraform Builder
Terraform Builder is completely open-source, and we welcome feedback, contributions, and recommendations. Start using Terraform Builder now, by heading over to https://github.com/mrlesmithjr/terraform-builder.
Why Terraform Builder
But, Terraform is simple already right? Of course it is!
So, why do we need Terraform Builder?
Simple! To make generating configurations more consumable.
Terraform Builder also creates a majority of the documentation, etc. for your
project by creating README.md
files where appropriate and other important
files such as .gitignore
pre-populated for Terraform usage. Explore the
example build to see the directory structure that is
stamped out for you.
Problems That Terraform Builder Solves
Removing the complexities of Terraform HCL, etc. Moreover, standardizing Terraform configurations. By using Terraform Builder, it is easy to add or remove resources, etc. to ensure consistent functionality.
Concepts
One of the major concepts of Terraform Builder is, to keep configurations as agnostic as possible. For example, defining resources should be done in a way that is not provider specific. By simply setting a variable to the desired provider, the magic happens on the backend for the translation.
With Terraform Builder, everything is a module. Therefore, all configurations
are based off of this concept. This is not a new concept, as Terraform already
assumes that a single directory of configurations is a module. This module
is the root
module. So, with the root
module being the foundation to all
other modules. However, we hang the root module off of the parent root (project root). Therefore the parent root becomes the passthrough module.
The other concept enforced with Terraform Builder is environments. By default,
environments are implemented as modules as well. These environments are:
development
, staging
, and production
. By automatically stitching these
environments together with all other modules, removes the complexity of trying
to do it manually. And at the same time ensuring that, by default we have our
different environments accounted for from the start.
Does any of this mean that Terraform Builder is the right tool for everyone? Absolutely not! However, it will hopefully enable those who may be starting out new with Terraform to implement best practices as part of their learning. As well as, their implementations.