Skip to content

groutr/hydrovis

This branch is 13 commits ahead of, 54 commits behind NOAA-OWP/hydrovis:ti.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a2e7103 · Jan 30, 2025
Dec 5, 2023
Jan 30, 2025
Aug 7, 2023
Apr 3, 2024
Aug 7, 2023
Jan 8, 2025
Jun 14, 2024
Aug 7, 2023
Dec 18, 2024
Sep 27, 2024
Jan 10, 2022
Jan 10, 2022
Jan 12, 2022
Aug 7, 2023
Aug 7, 2023
Jan 10, 2022
Jan 10, 2022

Repository files navigation

Overview

The Hydrologic Visualization and Information Services (HydroVIS) project aims to process and disseminate hydrologic data through the AWS public cloud. The HydroVIS visualization process pipeline (VPP) ingests forecast data from the National Water Model (NWM) and River Forecasting Centers (RFC), analyzes the data, and then creates products and services that are disseminated through an AWS hosted GIS platform.

This repo contains all the infrastructure as code (IaC) used to create and setup AWS services for the HydroVIS VPP.



Terms

  • ENV - The name of the environment you are deploying to e.g prod.
  • REGION - The AWS Region you are deploying to e.g us-east-1.
  • TF_STATE_ENV - The name of the environment that your Terraform Remote State is stored in.

Usage

Dependencies
  • terraform (v1.2.0+)
  • aws-cli (v2.5.6+)
Initial Setup

Before you can perform deployments to the HydroVIS environment you will need to do the following:

Setting up the Codebase

  1. Clone this repository to your deployment machine.
  2. Clone the private ENV storage repository into a folder called sensitive at the root of your local copy of this repository.

Setting up the AWS CLI

  1. Download and Install the AWS CLI
  2. You will need to configure an AWS profile for each of the corresponding ENV_REGION combination you will be deploying to. Here are the instuctions on how to set up AWS CLI profiles to use SSO credentials. Simply follow the instructions and name the profiles as the environment and region names.

Setting up Terraform

  1. Download and Install the Terraform CLI tool.
  2. Navigate to /Core in your local copy of this repository.
  3. Run aws sso login --profile TF_STATE_ENV.
  4. Run terraform init. This will initialize the remote state backend to give you access to the terraform workspaces for all the cloud environments.

The following is the deployment process for updating a given HydroVIS environment. The steps are identical regardless of which environment you are deploying to.

  • $ git checkout ENV
  • $ git pull
  • $ aws sso login --profile TF_STATE_ENV
  • $ terraform workspace select ENV_REGION
  • $ terraform init
  • $ terraform plan -out buildplan
  • Review the console output to see all the changes that will be made to the environment. If there is too much output to read through, a good way to get a summary of the Terraform plan would be to run something similar to terraform plan -out buildplan | Select-String "# module".
  • $ terraform apply "buildplan"

Troubleshooting

Generally, Terraform is very good at telling you where exactly an issue is when you run the terraform plan command. Simply go to the file and line number provided in the console output and investigate. Terraform has excellent documentation, so you can go to the AWS Provider documentation here to get details on all of the terraform resources.

If Terraform fails during the terraform apply command, first try re-running the plan and apply commands to see if the issue resolves itself. This issue sometimes happens due to race-conditions on Terraform resource dependencies.


Specific Errors

Error: error configuring S3 Backend: no valid credential sources for S3 Backend found.

Description: This error message means that you need to re-authenticate with the AWS environment that stores the Terraform Remote State.

Solution: $ aws sso login --profile TF_STATE_ENV



Development

The workflow for developing new features in HydroVIS is as follows:

  • Create a new feature branch from the existing ti branch.

  • Navigate to the /Dev folder.

  • Copy env-example.yaml to env.yaml and fill it out with the environment variables.

  • Using the main.tf as a template, create Data Sources to relevant existing AWS resources and create the new resources for your feature.

  • Deploy and test your new features.

    • $ aws sso login --profile ENV
    • $ terraform init
    • $ terraform plan -out buildplan
    • Review changes that will be made to the AWS environment
    • $ terraform apply "buildplan"
  • Once development is finished, re-integrate the new resources in the Dev folder into the /Core folder and reset the /Dev folder back to how it was originally.

  • Create a pull request to have your new feature branch merged into the ti branch.

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 55.2%
  • Python 30.4%
  • HCL 12.7%
  • Shell 1.0%
  • PowerShell 0.5%
  • Dockerfile 0.2%