Hello HN :) I made a kind of dotenv file on steroïd. It helps developers, sysadmins and DevOps load and source secrets / configs as env vars and files seamlessly from various providers (e.g. Hashicorp Vault, Clouders, etc.) without having to maintain .env files manually.
Having worked in tech for 10+ years through various positions I consistently hit the same problem: setting up local environment is hard. Situation got better thanks to Docker, Nix and alike but it's still difficult to manage secrets & some configs locally as they're often not versioned for good reasons. This hits pretty hard when you have to play with Infra as Code / GitOps projects and/or multi-environment contexts (e.g. Terraform, Ansible, Pulumi...)
Most often the issue is not "My company does not allow access to environment X", but more something like "CI is configured with a bunch of secrets / env vars and there's no way I reproduce all of that voodoo magic locally. I'll just commit and wait for my changes to be executed on CI."
Tired of this situation, I developed Novops: it helps manage and share secrets/configs safely so it can be used both locally and by CI/CD. Secrets can be referenced from various sources (e.g. Hashicorp Vault, AWS, GCloud, Azure...) and loaded as files or environment variables. It also handle multi-environments setup along with various helper features (such as automatically impersonate AWS IAM Role).
Novops just needs a YAML file referencing your secret sources so it can load them in your environment.
I kept digging and I knew this was coming…
https://novadiscovery.github.io/novops/config/aws.html
There is absolutely never a reason to have an AWS secret key and access key in an environment file. You should always use the role attached to the EC2 instance, Lambda, Fargate instance etc.
Even when developing locally you should be using temporary credentials or if that’s not possible use your credentials that are configured when you use “aws configure” at least then your credentials are in your home directory and not in your repository directory.
No you don’t need to specify credentials when instantiating a client using the various SDKs.
This entire project is recommending bad practices by having anything sensitive ever in a file that you’re committing to source control or that’s in your repository even with .gitognore.