Runway
Runway is a lightweight integration app designed to ease management of infrastructure tools.
Its main goals are to encourage GitOps best-practices, avoid convoluted Makefiles/scripts (enabling identical deployments from a workstation or CI job), and enable developers/admins to use the best tool for any given job.
Features
- Centralized environment-specific configuration
- Automatic environment identification from git branches
- Automatic linting/verification
- Support of IAM roles to assume for each deployment
- Terraform backend/workspace config management w/per-environment tfvars
- Automatic kubectl/terraform version management per-environment
Supported Deployment Tools
- AWS CDK
- Kubectl
- Serverless Framework
- CFNgin (CloudFormation)
- Static websites (build & deploy to S3+CloudFront)
- Terraform
Example
A typical Runway configuration is unobtrusive -- it just lists the deployment order and locations (regions).
deployments:
- modules:
- resources.tf
- backend.sls
- frontend
environments:
dev: "123456789012"
prod: "234567890123"
regions:
- us-east-1
The example above contains enough information for Runway to deploy all resources, lambda functions and a static website backed by S3 and Cloudfront in either dev or prod environments
Install
$ pip install runway
$ runway new
# OR
$ poetry add --dev runway
$ poetry run runway new
Documentation
See the doc site for full documentation.
Quickstart documentation, including CloudFormation templates and walkthrough can be found here