Skip to content

An Elixir Release Config Provider to pull vault secrets into app env.

License

Notifications You must be signed in to change notification settings

sevenmind/vault_config_provider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VaultConfigProvider

Module Version Hex Docs Total Download License Last Updated

VaultConfigProvider is an Elixir release config provider for loading secrets from Vault into app env at runtime.

Built for Vaultex.

Installation

The package can be installed by adding :vault_config_provider to your list of dependencies in mix.exs:

def deps do
  [
    {:vault_config_provider, "~> 0.4.0"}
  ]
end

Configure your release and add VaultConfigProvider as a config provider:

def project
  [
    releases: [
      config_providers: [{VaultConfigProvider, nil}]
    ]
  ]

Configuration

Read the Vaultex docs, and configure vaultex with your vault address and credentials. The Vault address can be set from the system environment or application environment.

VaultConfigProvider assumes vault auth credentials are already set in application environment by earlier config providers.

config :vaultex,
  auth: {:kubernetes, %{jwt: File.read!("/tmp/token"), role: "my_role"}},
  vault_addr: "http://127.0.0.1"

# or

config :vaultex,
  auth: {:token, {"root"}}

Usage

The provider will resolve secrets stored matching two patterns: strings or keyword lists. Keyword lists can contain transformations.

config :my_app,
  username: "secret:secret/services/my_app key=username"
  
  username: "vault:secret/services/my_app#username"

  username: [
    path: "secret/services/my_app",
    key: "username",
    fun: &String.upcase/1
  ]

  user_config: "secret:secret/services/my_app" # %{"key" => "username}

A string address is expected to include secret:/path and key=key_name or vault:path and #key_name

A keyword address must contain the keys key and path and may contain optional fun function which will be applied to any returned values

Copyright and License

Copyright (c) 2018 7Mind GmbH

This library licensed under the MIT license.

About

An Elixir Release Config Provider to pull vault secrets into app env.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages