Today we are announcing the beta version of Clustering for HashiCorp Terraform Enterprise. Increasingly, organizations are adopting Terraform Enterprise as their standard provisioning platform and the new Clustering functionality enables them to easily install and manage a scalable cluster that can meet their performance and availability requirements. The beta version of Clustering supports installations of Terraform Enterprise in AWS, Azure, and GCP.
This blog will discuss the clustering capability in Terraform Enterprise, including:
A Horizontally Scalable, Redundant Cluster
Until today, Terraform Enterprise followed the industry standard of a single instance appliance. This was acceptable at first, but as organizations expand their usage of Terraform Enterprise and it becomes their central provisioning platform across business units, the requirements around performance and availability increase. Organizations expect to be able to:
- Scale Terraform Enterprise horizontally to keep up with ever-growing workloads
- Trust Terraform Enterprise will always be available to provision their most critical infrastructure
The new Clustering functionality in Terraform Enterprise meets both of these needs.
Scale to Meet Demand
As organizations look to spread the benefits of Terraform Enterprise across their businesses, performance becomes a top concern. Even with the largest instances available, end-users can experience sluggishness in the UI and long wait times for runs to complete.
Running Terraform Enterprise as a cluster solves these performance issues by spreading the workload across multiple nodes. All API requests, background processes, and Terraform runs are fanned out across the cluster, allowing any number of concurrent end-users and runs to be supported.
In fact, our default installation pattern now includes configuration options to enable autoscaling groups. Giving organizations the ability to respond to spikes in demand without human intervention.
Terraform Enterprise is responsible for the infrastructure behind some of the world’s most critical applications. Before today, organizations relied on a pair of instances with one acting as a passive standby to make sure Terraform Enterprise was always available.
While sufficient for some, the risk was too high for many organizations. The existing strategy required too much downtime to promote the passive instance, and then there was always the question of what would happen if both instances were lost.
Running Terraform Enterprise as a cluster mitigates these risks. The provided installer provisions nodes across availability zones by default, and running Terraform Enterprise across three or more nodes ensures zero downtime for most common failure events.
Easier to Install & Manage
Installation is now as simple as a
terraform apply from an operator’s machine. Instead of configuring a single instance from the command line, operators can now use an official module from the Terraform Module Registry to deploy an entire cluster to AWS, Azure, or GCP.
That same Terraform config can then be edited later to reconfigure the cluster. For example, increasing the maximum size of the auto-scaling group before rolling Terraform Enterprise out to a new business unit.
Please see the public documentation or watch the demo below to see how simple it is now:
The journey begins and ends with infrastructure as code, just as it should.
While the Clustering beta already represents a big leap forward, we have bigger plans as we continue to build out the platform.
More Configuration Options
The Terraform modules we provide today are meant to cover the requirements of most straightforward solutions; however, they will not work out of the box for some unique situations. Operators are welcome to fork our modules to make them work for their environment, but our goal is to make the official modules extensible enough to eliminate this need.
HA without External Dependencies
The current Clustering Beta is the most reliable version of Terraform Enterprise we have ever built, but it still requires an external PostgreSQL server and blob storage to achieve a high level of availability. Our goal is to remove these external dependencies to make installing a highly available cluster even simpler.
Simpler Backup and Restore Procedure
Operators can expect to see our new snapshot tooling in beta over the next six weeks. Rather than relying on vendor-specific backups, we are building our own tool that makes your data completely portable. Controllable via the command line or an HTTP API, the new functionality will be the key to smooth production upgrades.
We are excited to release the beta version of clustering for Terraform Enterprise to help organizations with scalable performance, high availability, and simple install and management of the application. To learn more about clustering in Terraform Enterprise refer to the documentation here.
For more information on Terraform Enterprise or to get started with your free trial, visit the Terraform product page.
Originally posted on Hashicorp Blog
Author: Evan Phoenix