Code Monkey home page Code Monkey logo

diggerhq / digger Goto Github PK

View Code? Open in Web Editor NEW
2.7K 16.0 122.0 18.05 MB

Digger is an open source IaC orchestration tool. Digger allows you to run IaC in your existing CI pipeline ⚡️

Home Page: https://digger.dev

License: Apache License 2.0

Go 91.84% Dockerfile 0.09% Makefile 0.01% CSS 0.48% JavaScript 7.48% HCL 0.07% Shell 0.03%
infrastructure-as-code terraform terraformcloud tacos github-actions terraform-aws terraform-gcp terraform-github-actions hacktoberfest

digger's Introduction

digger-opensource-gitops-banner

CI/CD for Terraform is tricky. To make life easier, specialised CI systems aka TACOS exist - Terraform Cloud, Spacelift, Atlantis, etc.

But why have 2 CI systems? Why not reuse the async jobs infrastructure with compute, orchestration, logs, etc of your existing CI?

Digger runs terraform natively in your CI. This is:

  • Secure, because cloud access secrets aren't shared with a third-party
  • Cost-effective, because you are not paying for additional compute just to run your terraform

Features

  • Terraform plan and apply in pull request comments
  • Private runners - thanks to the fact that there are no separate runners! Your existing CI's compute environment is used
  • Open Policy Agent (OPA) support for RBAC
  • PR-level locks (on top of Terraform native state locks, similar to Atlantis) to avoid race conditions across multiple PRs
  • Terragrunt, Workspaces, multiple Terraform versions, static analysis via Checkov, plan persistence, ...
  • Drift detection

Getting Started

How it works

Digger has 2 main components:

  • CLI that runs inside your CI and calls terraform with the right arguments
  • Orchestrator - a minimal backend (that can also be self-hosted) that triggers CI jobs in response to events such as PR comments

Digger also stores PR-level locks and plan cache in your cloud account (DynamoDB + S3 on AWS, equivalents in other cloud providers)

Compared to Atlantis

  • No need to host and maintain a server (although you can)
  • Secure by design: jobs run in your CI, so sensitive data stays there
  • Scalable compute: jobs can run in parallel
  • RBAC and policies via OPA
  • Drift detection
  • Apply-after-merge workflows
  • Web UI (cloud based)
  • Read more about differences with Atlantis in our blog post

Compared to Terraform Cloud and other TACOs

  • Open source; orchestrator can be self-hosted
  • Unlimited runs and unlimited resources-under-management on all tiers
  • Jobs run in your CI, not on a third-party server
  • Supports PR automation (apply before merge)
  • No duplication of the CI/CD stack
  • Secrets not shared with a third party

Contributing

We love contributions. Check out our contributing guide to get started.

Not sure where to get started? You can:

Telemetry

Digger collects anonymized telemetry. See usage.go for detail. You can disable telemetry collection either by setting telemetry: false in digger.yml, or by setting the TELEMETRY env variable to false.

Running migrations

atlas migrate apply --url $DATABASE_URL

Resources

  • Docs for comprehensive documentation and guides
  • Slack for discussion with the community and Digger team.
  • GitHub for code, issues, and pull request
  • Medium for terraform automation and collaboration insights, articles, tutorials, and updates.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.