Terraform

Introduction

Terraform is an infrastructure as code (IaC) tool that allows you to build, change, and version infrastructure safely and efficiently. This includes both low-level components like compute instances, storage, and networking, as well as high-level components like DNS entries and SaaS features.

 

Why Terraform?

Easily provision elements in the cloud

The core functionality of Bunnyshell is to allow users to easily create environments where they can test their applications. However, if you want to create any elements in the cloud, you will need to use Terraform. It is independent from our Kubernetes integration and it lets you define both cloud and on-premise resources in human-readable configuration files that you can version, reuse, and share.

 

Define reusable modules

With Bunnyshell you can easily create reusable Terraform modules that can later be easily configured. The modules are defined at the project level and can later be used in any environment inside that project.

For example, a DevOps engineer can handle the creation of the Terraform template and define all the variables. Developers can then attach this module to environments, with little to no input required on their side.

Find out more about Adding a Terraform Module in Bunnyshell.

 

Integration with application deployment

With our Terraform integration, an output value can be mapped to an environment variable from an application deployed in Kubernetes.

For example, let's assume a database in a cloud service has a random IP assigned to it. Bunnyshell can extract that IP in an output and then map that output to a variable from the web application component. When the environment is deployed, we first run Terraform and when the app is deployed, we inject the database IP in the variable from the web application.

Read more about Output Values Mapping.