What & Why
Digger is the missing infrastructure framework.
Easy to use for developers; fully customisable for DevOps.
- Infrastructure should be defined as code, otherwise things get messy quickly. Terraform is the industry standard here. But it is verbose and low-level. The language itself is simple, but to make use of it you need to understand all the cloud-native primitives and "glue" them by hand.
- Developers want to build applications, not to get into the weeds of infrastructure that runs their apps. But having DevOps engineers support every application change creates a bottleneck. So they build internal tooling for developers to self-serve. Developers define what their apps need from infrastructure, while DevOps engineers control how is it implemented.
- Alternative infrastructure-as-code tools like Pulumi or CDK partially solve the first problem. They make it easier for developers to build infrastructure using languages they are familiar with, like TypeScript or Python. But that makes it less appealing to DevOps engineers and larger teams because of lesser popularity and flexibility. Concepts are still low-level; and developer workflow is still tightly coupled, so internal tooling on top still needs to be built.
- Terraform is an "assembly language". Most of it should not be written by hand. Instead, compile higher-level concepts into Terraform.
- Meaningful defaults - like in an opinionated web framework (eg Rails). Zero configuration needed to get common things up and running. Customise with Terraform if needed.
- Decouple "infrastructure interface" from "infrastructure implementation". Developers define what they need from infrastructure; DevOps engineers define how to meet those requirements if it differs from the framework defaults.
Digger comes with sensible defaults so things work out of the box with zero configuration. No cloud or DevOps knowledge needed.
To create a new piece of infrastructure, simply run:
dgctl block add --type container
Digger "compiles" the high-level
dgctl.jsonspec into Terraform, which is the most popular infrastructure-as-code language. It automatically configures the "glue" like networking configurations, access controls, security groups, etc.
You can completely customise the way it is generated or add your own Terraform code.
Most blocks are cloud-agnostic - so you can quickly migrate to AWS, GCP or Azure
dgctl generate --platform AWS