Terraform vs Stacker 1: What are the differences?
What is Terraform? Describe your complete infrastructure as code and build resources across providers. With Terraform, you describe your complete infrastructure as code, even as it spans multiple service providers. Your servers may come from AWS, your DNS may come from CloudFlare, and your database may come from Heroku. Terraform will build all these resources across all these providers in parallel.
What is Stacker 1? An AWS CloudFormation Stack orchestrator/manager. stacker is a tool and library used to create & update multiple CloudFormation stacks. stacker Blueprints are written in troposphere, though the purpose of most templates is to keep them as generic as possible and then use configuration to modify them.
Terraform and Stacker 1 can be primarily classified as "Infrastructure Build" tools.
Some of the features offered by Terraform are:
- Infrastructure as Code: Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.
- Execution Plans: Terraform has a "planning" step where it generates an execution plan. The execution plan shows what Terraform will do when you call apply. This lets you avoid any surprises when Terraform manipulates infrastructure.
- Resource Graph: Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds infrastructure as efficiently as possible, and operators get insight into dependencies in their infrastructure.
On the other hand, Stacker 1 provides the following key features:
- Easily Create/Update/Destroy many stacks in parallel (though with an understanding of cross-stack dependencies)
- Makes it easy to manage large environments in a single config, while still allowing you to break each part of the environment up into its own completely separate stack.
- Manages dependencies between stacks, only launching one after all the stacks it depends on are finished.
Terraform is an open source tool with 21.6K GitHub stars and 5.62K GitHub forks. Here's a link to Terraform's open source repository on GitHub.