dstockdale
Is there an equivalent to Rails 5.2 'Credentials' library?
I’m just wondering if anyone knows if there’s an equivalent approach / library in Elixir to credentials that came out in Rails 5.2
I dismissed it at first but since I’ve been battling with Ansible and setting tonnes of environment variables by using ansible-vault edit ... on a project I’ve realised it’s quite cool. It means I don’t really need the indirection and complexity that Ansible brings to just changing a few configuration variables.
If you’ve no idea what it is it’s just an encrypted yaml file. Your encrypted yaml can be checked into your repo as it’s encrypted, so deploying configs is suddenly easy.
You edit config/credentials.yml.enc with rails credentials:edit which decrypts the file and let’s you change the config vars and carry on. I like the idea of being able to do this in Elixir apps too. Is there anything out there or is this a terrible idea?
Most Liked
kieraneglin
Hopping in this a little late, but I just created my first Elixir library and it handles encrypted secrets much like Rails! Let me know what you think: https://github.com/kieraneglin/encrypted_secrets_ex
dstockdale
Cool. I like the sound of that. I might have a go at doing it when I get some free time.
webdeb
You need your configs at the run-time, so you could use env variables for this.
I can recommend confex
config :credentials,
username: {:system, "USERNAME", "dev_user"},
password: {:system, "PASSWORD", "dev_user"}.
aws: [secret_access_key: {:system, "AWS_SECRET_KEY", "1234567"}]
At startup of you App, just do
defmodule MyApp do
use Application
def start(_type, _args) do
# Replace Application environment with resolved values
Confex.resolve_env!(:credentials)
# ...
end
end
This way you will be able to access your configs via the usual
Application.get_env(:credentials, :username)
carlosoteras
Hello everyone
Rails 5.2 introduced a new feature called Credentials and I think that is a good feature for Phoenix (or elixir) sometimes we have a build server and prod server in build server we need environment variables to build a project with Distillery, the point is that’s not easy to change environment variables to each project pipeline and usually we use (puppet, chef, etc) for that things. I’ll be very happy if have a possibility to add the project credentials together with the project (encrypted). To learn more about credentials.
carlosoteras
I didn’t know about confex, seems very useful.







