Configuration orchestration and configuration management tools, both of which are considered IaC tools. Configuration orchestration tools, which include Terraform and AWS CloudFormation, are designed to automate the deployment of servers and other infrastructure. Configuration orchestration tools do some level of configuration management, and configuration management tools do some level of orchestration. Companies can, and many times use both types of tools together.
Terraform is an infrastructure provisioning tool created by Hashicorp. It allows you to describe your infrastructure as code, creates “execution plans” that outline exactly what will happen when you run your code, builds a graph of your resources, and automates changes with minimal human interaction.
Terraform uses its own domain-specific language (DSL) called Hashicorp Configuration Language (HCL). HCL is JSON-compatible and is used to create these configuration files that describe the infrastructure resources to be deployed.
Terraform is cloud-agnostic and allows you to automate infrastructure stacks from multiple cloud service providers simultaneously and integrate other third-party services.
You even can write Terraform plugins to add new advanced functionality to the platform.
Like Terraform, AWS CloudFormation is a configuration orchestration tool that allows you to code your infrastructure to automate your deployments.
Primary differences lie in that CloudFormation is deeply integrated into and can only be used with AWS, and CloudFormation templates can be created with YAML in addition to JSON.
CloudFormation allows you to preview proposed changes to your AWS infrastructure stack and see how they might impact your resources and manages dependencies between these resources.
To ensure that deployment and updating of infrastructure is done in a controlled manner, CloudFormation uses Rollback Triggers to revert infrastructure stacks to a previous deployed state if errors are detected.
You can even deploy infrastructure stacks across multiple AWS accounts and regions with a single CloudFormation template. And much more.
We’ve written a ton of CloudFormation templates, so we’ll dig much deeper into this in future posts.
Azure Resource Manager
Microsoft Azure offer their own IaC tools like AWS CloudFormation. Azure Resource Manager allows you to define the infrastructure and dependencies for your app in templates, organize dependent resources into groups that can be deployed or deleted in a single action, control access to resources through user permissions, and more.
Google Cloud Deployment Manager
Google offer their own IaC tools like AWS CloudFormation. Google Cloud Deployment Manager offers many similar features to automate your GCP infrastructure stack. You can create templates using YAML or Python, preview what changes will be made before deploying, view your deployments in a console user interface, and much more.