One of the growing challenges in DevOps and cloud adoption is the inevitable toolchain sprawl. The variety of projects and tools available to help us manage and deploy better software faster leads to complexity. That complexity becomes a bottleneck which slows down delivery.
So the question is, how do we simplify our toolchain and manage resources more efficiently?
Enter env0, with support for multiple infrastructure as code frameworks such as Terraform, CloudFormation, Kubernetes, Terragrunt, and Pulumi. Whichever framework you’ve adopted, we help you automate, govern, and manage the entire stack.
We’re excited to announce the release of CloudFormation support in env0.
With AWS having the lion’s share of the cloud provider market, it’s no surprise that AWS CloudFormation is one of the most commonly used infrastructure as code frameworks.
CloudFormation allows you to provision and manage AWS resources like EC2, EBS, SNS, and ELB through code. With CloudFormation, your stack and its dependencies are managed in a single template file.
We see that many of our customers use multiple IaC frameworks, such as Terraform, Terragrunt, and Pulumi. Especially in complex enterprise environments, different teams can have different needs which are best served by a different IaC framework. As the platform to manage your entire infrastructure as code, it was a simple choice for us to support CloudFormation.
Instead of using multiple tools to manage the different frameworks in your cloud environment, env0 makes it easy to automate and govern your whole infrastructure. We can now mix and match Terraform, CloudFormation, and the different cloud providers.
For example, we can use Terraform to provision resources in GCP or Azure, with CloudFormation managing AWS infrastructure.
This makes all the features we need to automate and manage infrastructure at scale available to your CloudFormation deployments:
When creating a new template in env0, select the CloudFormation template type.
It’s just as easy setting up your CloudFormation templates as it is adding your Terraform modules or Kubernetes yaml.
To use CloudFormation without creating a new template in env0, select “create new environment” from within your project:
Choose the VCS option to “Create an environment from a VCS integration.” This allows us to create a new environment directly from your source code repo:
Select the CloudFormation type:
In step 2, choose your VCS, select the repository, branch, and define the path to your CloudFormation folder and template file name:
In step 3, define the variables. When creating an environment directly from the VCS, variables in env0 are inherited from the Organization and Project layers. This allows us to reuse common variables, such as VPC IDs and API keys, securely:
Finally, name your environment and enable your desired env0 features. For example, “Run CloudFormation Change Set on Pull Requests” will comment the results back to your pull requests, and continuously update the summary as changes are committed.
Deselect “Approve plan automatically” to implement an approval step in between merge and deploy to satisfy governance and compliance requirements:
We often find multiple infrastructure as code frameworks when dealing with complex environments. Whether primarily just using CloudFormation, or using it alongside Terraform or Kubernetes, this release makes it easy to automate, orchestrate, and govern the entire infrastructure stack. Instead of relying on manual deployments in AWS, we can define all infrastructure as code, and even combine different frameworks to manage dependencies between resources.
It would be great to get your feedback on this implementation of CloudFormation support, so give it a test and get in touch with your thoughts!