Skip to main content

Terraform

Terraform

We make use of Terraform for deploying and managing cloud infrastructure.

Shared Infrastructure Repo

The "main" Terraform repository contains the relevant code for networking and compute. This can be found here.

The repo has the following structure:

.
├── legacy # Legacy Terraform Code
├── live # Terragrunt Workspaces
│ ├── aws
│ ├── bridge
│ └── oci
│ └── minds-oci-kubernetes
│ ├── ops
│ ├── production
│ └── sandbox
└── modules # Modules for shared infrastructure
├── aws
├── bridge
└── oci

As this repo uses terragrunt, you will need to deploy changes to the Kubernetes module using the live/oci/minds-oci-kubernetes/$ENVIRONMENT folder:

ENVIRONMENT="sandbox"

cd live/oci/minds-oci-kubernetes/$ENVIRONMENT
terragrunt init
terragrunt plan
terragrunt apply

Individual Modules

Most Terraform will not be in the shared repo, but in the individual module repositories. For example, the Terraform code for Mautic is here. Usually this will be in a terraform subfolder for the module.

These modules typically do not use terragrunt, but instead are deployed with terraform directly:

cd terraform
terraform init
terraform plan
terraform apply