Skip to content

Latest commit

 

History

History
184 lines (138 loc) · 9.93 KB

File metadata and controls

184 lines (138 loc) · 9.93 KB

Lantern - Infrastructure

Note

This page is specific to the BAS Catalogue.

Overview

This diagram shows this project's infrastructure components:

Infrastructure Diagram

Tip

The Processing Scripts component shown in the diagram currently consists of the Non-Interactive Publishing Script.

Environments

Available environments:

  • development:
    • for prototyping and making changes (see Development documentation)
    • hosted locally with an optional Local Stack for external infrastructure
  • staging:
    • referred to as testing publicly
    • externally accessible
    • for infrastructure testing (i.e. HTTPS configuration, deployment workflows, etc.)
    • for experimentation and previewing content by authors and invited testers
  • production:
    • referred to as live publicly
    • externally accessible
    • for general use

Development environments may be created and destroyed as needed. Staging and Production environments are long-lived.

Deployment

Hosting

This diagram shows this project's hosting components:

Hosting Diagram

Endpoints:

The testing and live environments share their endpoints with the legacy Discovery Metadata System (DMS), via reverse proxying. The BAS HAProxy load balancer proxies applicable requests to either:

  • a relevant AWS Cloudfront Distribution (for public content)
    • controlled by the data_redirect.txt load balancer config file (🔒)
  • or a relevant part of the BAS Operations Data Store 🛡️
    • controlled by the data_internal_redirect.txt load balancer config file (🔒)

Note

For testing the UKRI managed AWS offering, a replica of the production S3 bucket and parallel CloudFront distribution are in use. This parallel CF distribution is used by the BAS Load Balancer for 100% of live traffic.

See WSF/bas-aws#71 🔒 for more information.

Infrastructure as Code

OpenTofu, an open-source fork of the Terraform infrastructure as code tool, is used to manage some project infrastructure in resources/envs/main.tf.

Remote state is managed by the BAS Terraform Remote State 🛡️ project.

To apply this infrastructure:

  • install tools (brew install opentofu awscli 1password-cli)
  • configure credentials for the BAS AWS 🛡️ account (aws configure)
  • copy resources/envs/terraform.tfvars.tpl to resources/envs/terraform.tfvars and populate credentials/values

Then run:

% cd resources/envs
% opentofu init
% opentofu apply

Components

1Password

Sentry

GitLab

Power Automate

Plausible

Cloudflare

Font Awesome

ArcGIS Online

  • OAuth application 🔒
    • for adding AGOL items to records as distribution options and syncing record metadata to AGOL items
    • managed manually as per Setup documentation

Exporters

Note

For testing the UKRI managed AWS offering, a replica of the production S3 bucket and parallel CloudFront distribution are in use. This parallel CF distribution is used by the BAS Load Balancer for 100% of live traffic.

See WSF/bas-aws#71 🔒 for more information.