How to Deploy Cumulus
Overview
This is a guide for deploying a new instance of Cumulus.
This document assumes familiarity with Terraform. If you are not comfortable working with Terraform, the following links should bring you up to speed:
- Introduction to Terraform
- Getting Started with Terraform and Amazon Web Services (AWS)
- Terraform Configuration Language
The process involves:
- Creating AWS S3 Buckets
- Configuring a VPC, if necessary
- Configuring an Earthdata application, if necessary
- Creating/configuring a PostgreSQL compatible database, and an AWS Secrets Manager secret to allow database access
- Creating a Lambda layer for the Cumulus Message Adapter (CMA)
- Creating resources for your Terraform backend
- Using Terraform to deploy resources to AWS
Please note that internal and sensitive information is not in this public resource and you may have to visit our Cumulus wiki for NGAP access steps and other credentials.
Requirements
Linux/MacOS Software Requirements
- git
- zip
- AWS CLI - AWS Command Line Interface
- Terraform
Install Terraform
It is recommended to keep a consistent version of Terraform as you deploy. Once your state files are migrated to a higher version, they are not always backwards compatible so integrators should pin their Terraform version. This is easily accomplished using the Terraform Version Manager (tfenv). If you have a Continuous Integration (CI) environment (or any other machine) that you are using to deploy the same stack, you should pin your version across those machines as well, otherwise you will run into errors trying to re-deploy from your local machine.
If you are using a Mac and Homebrew, installing tfenv is as simple as:
brew update
brew install tfenv
For other cases, installation instructions are available to follow along here.
$ tfenv install 1.5.3
[INFO] Installing Terraform v1.5.3
...
[INFO] Switching completed
$ tfenv use 1.5.3
[INFO] Switching to v1.5.3
...
[INFO] Switching completed
It is recommended to stay on the Cumulus Core TF version which can be found here. Any changes to that will be noted in the release notes.
To verify your Terraform version, run:
$ terraform --version
Terraform v1.5.3
Credentials
- CMR username and password. CMR credentials must be provided if you are exporting metadata to CMR with Earthdata Login authentication.
- NASA Launchpad. Launchpad credentials must be provided if you are using Launchpad authentication to export metadata to CMR or to authenticate with the Cumulus API. For more information on how to authenticate go to Launchpad Authentication.
- Earthdata Login username and password. User must have the ability to administer and/or create applications in URS. It's recommended to obtain an account in the test environment (UAT).