Show HN: Digger – Open Source Terraform automation and collaboration tool
github.com
github.com
Digger makes it sound like it might address this:
> Digger runs terraform natively in your CI. This is: Secure, because cloud access secrets aren't shared with a third-party
From the Github+AWS demo:
> 4. Add environment variables into your Github Action Secrets (cloud keys are a requirement since digger needs to connect to your account for coordinating locks) AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY
It sure looks like AWS admin credentials are shared with Github, and also available to anything else in the diggerhq/digger action.
In practice, it's pretty normal to use OIDC to authenticate Github Actions to AWS:
https://docs.github.com/en/actions/deployment/security-harde...
They should update the main readme to include this under Features, and also call it out in the demo files.
I am a co-founder of Terrateam[0] which is a Terraform CI/CD as well. At the end of the day, you need to execute something to do these operations and having this component open source is important for auditing purposes. For Terrateam, we lean heavily into GitHub Actions so GitHub is at least managing any secrets and runs. One challenge is users could pin the Action that we publish to a specific version, but we also update it regularly and communicating to customers to update it is a challenge.
https://docs.digger.dev/cloud-providers/authenticating-with-...
Still need a more permissive role to manage the cluster in other ways but you can isolate that and limit access to its repo.
This does require something that should essentially be embedded in your environment or account vending machine, otherwise it becomes very cumbersome to maintain.
Companies that use Atlantis at scale (eg Lyft) felt the need to fork it and use a scalable compute backend instead, eg Temporal. At which point you've basically got a DIY in-house CI.
Our view is that it's best to keep matters separate. The CI part with compute, jobs, logs etc is a solved problem. What's unsolved for Terraform is state-aware logic when / how to run those jobs. It's all about the orchestrator really.
To us, CI is about integration while Terraform is about reconciliation. Technically both could be categorised as 'jobs', but by that metric, a CD event is also just a job, and so is a migration for an RDBMS and adding and removing products from inventory. But we don't call them jobs, because their specialisation warrants specialised handling. To be fair, we aren't based in the US so perhaps it's more of a localised thing.
More Detailed Here: https://old.reddit.com/r/golang/comments/14rduec/we_rewrote_...
Also blogged about it: https://medium.com/@DiggerHQ/we-rewrote-our-product-in-go-fr...
1. I don't like the idea of the tool creating resources I didn't explicitly tell it to create
2. I don't like the idea of a public endpoint for someone to pwn and get owner-level access of all my stuff.
It would be nice if the docs explained what the serverless backend thing does (besides the vague comment about handling webhooks), and it would be nice if there was an option that didn't require the public backend even if it means slightly degraded functionality. (github actions can be triggered by PR opened, PR updated, comment created, comment edited, merge to main, and many other things. Seems to me like that should be enough?)
We were initially completely backend-less; but then it increasingly became apparent that a central orchestrator is unavoidable.
Rationale here: https://diggerdev.notion.site/Why-digger-introduces-an-orche...
In hindsight, it makes sense that literally every single other tool in the space has a central backend that orchestrates jobs. There's a good reason for that.
To address security / access concerns, you can either self-host the orchestrator, or use OIDC, or both
The most fun thing is - Digger + Dagger could be a great combo! We haven't yet explored properly but in theory it shouldn't be anything different from adding another CI provider; we already support GitHub Actions, Gitlab CI and Azure DevOps
Would be awesome if they find a way to integrate state management.
Tracking here: https://github.com/diggerhq/digger/issues/206
And btw contributions very welcome, we're a small team so every bit helps, even if it's just filing or labeling an issue
Those people have not experienced the :heart_eyes_cat: of GitLab's TF state store, which I find just a bazillion times superior to creating TWO separate AWS resources only for storing a bunch of JSON to make TF work: https://docs.gitlab.com/ee/user/infrastructure/iac/terraform...