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.
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.
- Go toolchain (tested on 1.19)
- Needed to build binary
- 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
- 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)
go build
# e.g.
# GOOS=linux GOARCH=amd64 go build -o cloudseed
# GOOS=darwin GOARCH=arm64 go build -o cloudseed
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.
Refer to the quickstart source directory for an example. Make sure to update the config values as required.
Run the command in the build / CICD environment.
chmod +x cloudseed
./cloudseed build
Refer to the examples for sample patterns.
- Refer to the docs for CLI and input file specifications
- Refer to HCL JSON Syntax Specification for the output file specifications
- Cloud support
- GCP
- AWS
- Services support
- Compute Services
- FaaS
- GCP Cloud Functions (2nd Gen)
- AWS Lambda
- Container PaaS
- GCP Cloud Run
- AWS Fargate
- FaaS
- 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
- Event Buses
- Networking Services
- Ingress
- GCP API Gateway
- Amazon API Gateway
- Egress
- GCP Cloud NAT
- Amazon NAT gateway
- Ingress
- Security Services
- IAM
- GCP Service Accounts
- AWS IAM execution roles
- Secrets
- GCP Secret Manager
- AWS Secrets Manager
- IAM
- Orchestration Services
- GCP Workflows
- AWS Step Functions
- Compute Services
- Terraform Backend support
- GCP Cloud Storage
- Amazon S3
- Local
- 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.
This software uses the following modules whose distribution and usage is governed by the terms of the MPL-2.0 licence: