cloud-seed

command module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2022 License: Apache-2.0 Imports: 1 Imported by: 0

README

Cloud Seed

Configure serverless applications for multi-cloud deployments 🚀 ☁

What is it?

Do you want to deploy serverless applications to the public cloud, but are worried about vendor lock-in?

Do you want to use Terraform to manage event-based multi-cloud applications, but do not want the overhead of writing and maintaining platform-specific config?

With Cloud Seed you only need to define minimal cloud-agnostic config once, and the cloud-specific Terraform IaC is generated for you.

Write once, and target multi-cloud.

How does it work?

Cloud Seed wraps around and executes CDKTF, letting you use Hashicorp's ecosystem and tooling in your downstream stages.

Cloud Seed ingests opinionated config in the form of files which are kept close to your source code, and generates the HCL JSON-based IaC required to implement the desired cloud platform deployments.

CDKTF Constructs generated by Cloud Seed can also be modified at the attribute-level by adding custom arguments as part of the config.

Prerequisites

Direct (build time)

Direct (run time)

  • A working build or CICD environment where the binary will run, and has the source code which needs to be deployed
  • Node.js (tested on 18.x Hydrogen)
    • Needs to be enabled in the build environment
    • This is a CDKTF dependency

Indirect

  • Working target cloud environment(s)
  • A means to process the HCL JSON-formatted IaC (e.g. CDKTF or Terraform CLI) with the appropriate access to, and permissions on, the target cloud environment(s)

Quickstart

Build the binary (one-time step)

go build
# e.g.
# GOOS=linux GOARCH=amd64 go build -o cloudseed
# GOOS=darwin GOARCH=arm64 go build -o cloudseed

Add the quickstart project config file

Add a project config file at the root of your source code called cloudseed.json.

Refer to the quickstart cloudseed.json for an example. Make sure to update the config values as required.

Add the quickstart source code

Refer to the quickstart source directory for an example. Make sure to update the config values as required.

Run the build command

Run the command in the build / CICD environment.

chmod +x cloudseed
./cloudseed build

Examples

Refer to the examples for sample patterns.

API and File Specification

Current status

  • Cloud support
    • GCP
    • AWS
  • Services support
    • Compute Services
      • FaaS
        • GCP Cloud Functions (2nd Gen)
        • AWS Lambda
      • Container PaaS
        • GCP Cloud Run
        • AWS Fargate
    • Event Sources
      • Event Buses
        • GCP Eventarc
        • Amazon EventBridge
      • Publish/Subscribe Topics
        • GCP Pub/Sub
        • Amazon SNS
      • Queues
        • GCP Cloud Tasks
        • Amazon SQS
      • Schedules
        • GCP Cloud Scheduler
        • Amazon EventBridge
    • Networking Services
      • Ingress
        • GCP API Gateway
        • Amazon API Gateway
      • Egress
        • GCP Cloud NAT
        • Amazon NAT gateway
    • Security Services
      • IAM
        • GCP Service Accounts
        • AWS IAM execution roles
      • Secrets
        • GCP Secret Manager
        • AWS Secrets Manager
    • Orchestration Services
      • GCP Workflows
      • AWS Step Functions
  • Terraform Backend support
    • GCP Cloud Storage
    • Amazon S3
    • Local

TODO

  • Add support for AWS
  • Swap GCP Preview features in favour of GA ones (API Gateway)
  • If targeting GCP Cloud Run, the resulting IaC includes gcloud CLI commands to submit an image build. Implement an alternative that does not depend on this CLI.

Notices

This software uses the following modules whose distribution and usage is governed by the terms of the MPL-2.0 licence:

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL