Over the last couple of months we have been working with several customers to reduce the development burden of terraform configuration and simplify the operational complexity of terraform automated workflows. Advanced guide Running Terraform in Automation inspired us to be creative and follow a path of innovation. Today we are proud to announce the open source of TerraHub CLI and launch of TerraHub.io — DevOps Hub for Terraform.
What is TerraHub?
TerraHub is a terraform centric devops tool that simplifies provisioning and management at scale of cloud resources and cloud services across multiple cloud accounts. For example: Serverless on Amazon AWS, or Kubernetes on Google Cloud, or VMs on Microsoft Azure.
This tool empowers customers to:
- Manage AWS, Google Cloud, Microsoft Azure and others in one place
- Manage VM-based, Containers, Serverless and others using one workflow
- Manage ALL cloud resources securely in customer’s private networks
- Manage ALL terraform executions in one system using one CI & CD process
How Does It Work?
Let’s assume we already have some terraform configurations and we’d like to use TerraHub.io as a management and automation layer. Here below are the steps that we’ll have to follow:
Step 1: Create Project
TerraHub is based on projects, which are uniquely identifiable entities that manage under the same umbrella related cloud accounts, regions, services and resources. Below snippet of code shows how to create a project for existing terraform configuration:
Step 2: Create Components
Next, emphasize which folders in current structure will be executed via terraform commands. TerraHub maps those folders as components (see below):
Step 3: Run Automation
Once all components are mapped, TerraHub can execute corresponding terraform commands in distributed mode. For example, terrahub init will execute multiple terraform init in paralel, depends on how many components are defined and how much CPU and RAM is available. But the most important feature is automated workflow, inspired from advanced guide Running Terraform in Automation, which executes init > workspace > plan > apply in automated mode and triggers, if defined, before or after hooks used for automated testing:
Step 4: View Results
One way to view terraform results is using terraform output, but it doesn’t show the whole context. TerraHub implemented terrahub list, which uses native capabilities of cloud providers to list resources across projects, cloud accounts, cloud regions and cloud services:
Bonus: User Interface
The most important innovation is a nice shiny UI that TerraHub provides to registered users. We’re open source friendly, allowing unlimited access to public repositories, but limited only to one cloud account. Customers can upgrade to paid version in order to use private repositories or multiple cloud accounts, as well as deploy TerraHub in their cloud accounts through an Enterprise License.
What Is TerraHub Made Of?
TerraHub consists of 3 major systems:
- TerraHub CLI (hosted by https://github.com/TerraHubCorp/terrahub)
- TerraHub API (hosted by https://www.terrahub.io)
- TerraHub Console (hosted by https://console.terrahub.io)
TerraHub CLI is the open source system that distributes automated execution of terraform configurations, enables automated testing of terraform commands results, creates faster and easier new terraform configurations, as well as visualizes cloud resources under management. It can be used either as a stand alone devops tool or as an integrated tool chain with TerraHub API.
TerraHub API is the backend system that collects data from TerraHub CLI and manages TerraHub Console. This system empowers developers and businesses to centralize their data generated by their terraform configurations that span across cloud providers, cloud accounts, cloud regions and cloud services. It shifts the focus from reactive processes to predictive behavior, making cloud resources management easier, more reliable and better in terms of security.
TerraHub Console is the frontend system that visualizes data collected and stored by TerraHub API. This system empowers developers and businesses view in realtime what is happening to their cloud resources management, as well as audit and see reports of what happened to particular aspects of their cloud accounts over a period of time.