Pre-requisites
This walkthrough has the following pre-requisites:
Gruntwork Infrastructure as Code Library
This guide uses code from the Gruntwork Infrastructure as Code Library, as it implements most of the production-grade design for you out of the box. Make sure to read How to use the Gruntwork Infrastructure as Code Library.
caution
You must be a Gruntwork subscriber to access the Gruntwork Infrastructure as Code Library.
Terraform
This guide uses Terraform to define and manage all the infrastructure as code. If you’re not familiar with Terraform, check out A Comprehensive Guide to Terraform, A Crash Course on Terraform, and How to Use the Gruntwork Infrastructure as Code Library
CircleCI
This guide uses CircleCI as the CI platform. Although the approach is compatible with any CI platform, a basic understanding of the CircleCI configuration will be useful for translating the configuration format to other platforms. You can take a look at the official getting started guide to get a basic understanding of CircleCI and their configuration format.
AWS accounts
This guide deploys infrastructure into one or more AWS accounts. Check out the Production Grade AWS Account Structure guide for instructions. You will also need to be able to authenticate to these accounts on the CLI: check out A Comprehensive Guide to Authenticating to AWS on the Command Line for instructions.
Repository structure
This guide assumes your infrastructure code is organized in a manner similar to that covered in the
Using
Terraform Modules section of the How to Use the Gruntwork Infrastructure as Code Library guide. This means that you
should have two repositories for your infrastructure code, infrastructure-modules and infrastructure-live. Make
sure that the infrastructure-live repository is locked down as recommended in Lock down VCS systems. This guide
will assume that master is the protected branch where infrastructure is deployed from.
info
This guide will use Terragrunt and its associated file and folder structure to deploy Terraform modules. Please note that Terragrunt is NOT required for using Terraform modules from the Gruntwork Infrastructure as Code Library. Check out How to Use the Gruntwork Infrastructure as Code Library for instructions on alternative options, such as how to Deploy using plain Terraform.