Terraform Cloud for deployment management - Spot.io

Terraform Cloud for deployment management

Reading Time: 3 minutes

As we develop and deploy cloud compute automation and optimization solutions here at Spot by NetApp, we use various tools to improve our day-to-day operations. In this post I’ll share how we’ve found Terraform Cloud from Hashicorp to be quite helpful with deployment management.

 

Dev team collaboration is complex

In the past, collaboration among dev team members could be somewhat fragmented with templates being managed in separate places by different people. This sometimes led to complex deployment management, templates being overwritten and similar, with the result being wasted time, effort and (gasp) lost template versions. 

To remedy this, HashiCorp Terraform Cloud offers a rich feature set that gives you complete control over how your entire cloud infrastructure is being provisioned.  Terraform Cloud is HashiCorp’s managed service offering that eliminates the need for unnecessary tooling and documentation to use Terraform in production.

Let’s take a look at 3 areas where we needed greater scalability, collaboration and  governance and where Terraform Cloud adds tremendous value for us as we manage our cloud workflows. 

Deployment management with Terraform Cloud Runs and States

With Terraform Cloud you can create your configuration whether in their UI, locally, from your S3 bucket, or even from your Git repository. All versioning is saved and accessible in the Terraform Cloud UI and as shown in the screenshots below, you can select any of your runs and keep track of revisions (states). This way if your application suddenly stops working you can easily check if any template changes are to blame. In addition, you can easily see what workloads are running, who ran the workloads, when they started and similar for all your cloud infrastructure.

Keep track of your Terraform runs

RBAC with Terraform Cloud Teams

In addition to giving you full versioning visibility of all your runs, Terraform Cloud makes it simple to control exactly who can access which environments. In just a few clicks you can either grant access or block individuals and teams from specific environments. 

set role based access for your teams in Terraform Cloud UI

Centralized control of Variables 

Another area where things can get mixed up is whenever there is some variable such as account credentials or similar. Any time there are changes in these variables, they need to be updated in all places they are being used. So, for example, if I change a token for a particular workload, if I’m using it in multiple environments, I’d need to update it in each and every place. Quite tedious and prone to error. 

With Terraform Cloud however, I can control all such variables in one central place, with Terraform Cloud automatically updating them wherever they are being used.  

You can also use Terraform Cloud Variables to secure sensitive credentials so that they can be used safely by a wider group of users.

Running production and mission-critical workloads on affordable spot instances

In addition to helping optimize deployment management, Terraform is fully integrated with Spot by NetApp so you can easily run even production workloads on affordable spot instances (up to 90% less expensive than on-demand instances), with high availability and workload continuity guaranteed.   

Review the Terraform’s documentation on Spot or Spot by NetApp’s documentation on Terraform to get started with optimizing your workload deployment, infrastructure management and cloud compute spend today!