Skip to content

Philosophy

Before settling for Terrabutler, it's a good idea to understand the philosophy behind the project, in order to make sure it aligns with your goals. This page explains the problem and the solution.

Problem

All our IaC projects are backed by Terraform. Instead of having a folder with every resource, we have created different folders that have resources from the same category, and we call them sites. For example inside the network site we will have the creation of VPC, SG and WAF, so this site is where we have all the resources related to network. By splitting the code into various sites we have smaller plans and it's more easy to manage the code. By having all the code divided into various sites it's a bit more difficult to manage all the terraform variable files. And we wanted all of this for each environment, so it needs to be divided into different environments, for example production and development. All of the sites state needs to be have a remote state and with a lock function, to prevent usage at the same time.

Solution

Create a IaC with the inception site that will be responsible to manage the project environments via Terraform workspaces tool and where the backends for each site will be created. Use Terrabutler to manage all the IAC between all the sites.