Skip to content

Manage configuration variable obtains from environment or docker secrets

License

Notifications You must be signed in to change notification settings

sjmallon/unify-secrets

Repository files navigation

unify-secrets

GitHub package.json version GitHub Travis (.org)

A tiny module to make it easier to work with configurations - especially secrets - held in either environment variables, or docker secrets. Useful when a single code base may be used either directly on the local machine (using environment variables), or under docker-compose or a docker swarm, where environment variables are not secure and docker secrets should be used.

Installation

npm install --save  unify-config

Usage

Motivation

When developing a server application in node it is good practice to use environment variables for configurations, especially for secrets. With docker-compose and docker swarm however, whilst environment variables can be used, they are not secure, and docker secrets are a better solution. (Despite not being obvious from the docker documentations, secrets work with docker-compose as well as docker swarm.)

Docker secrets are made available as files mounted at /run/secrets, whereas environment variable are found at process.env. If you use both a local environment with environment variables, and a docker environment with secrets in your development process, your code needs to handle two possible sources of config.

Typical use

const UnifySecrets = require('unify-secrets')

const c = new UnifySecrets()
c.addList(['API_TOKEN', 'DATABASE_URL'])

const connection = connectToDatabase(c.DATABASE_URL).

API

Kind: global class

new UnifySecrets()

Support setting application config values from either environment values or docker secrets

Provides a unified mechanism to load configurations whether running as:

  • directly on local machine with environment variables
  • under docker-compose using docker secrets
  • under docker swarm using docker secrets

unifySecrets.config

Get full config object

Kind: instance property of UnifySecrets
Read only: true

unifySecrets.addEnv(name) ⇒ string

Try to add a config value from an environment variable

Kind: instance method of UnifySecrets
Returns: string - - found config value

Param Type
name string

unifySecrets.addSecret(name) ⇒ string

Try to add a config value from a docker secret

Kind: instance method of UnifySecrets
Returns: string - - found config value

Param Type
name string

unifySecrets.add(name) ⇒ string

Try to add config value from either environment variable or docker secret

If both sources exist, the docker secret will be used.

Kind: instance method of UnifySecrets
Returns: string - - found config value

Param Type
name string

unifySecrets.addList(names) ⇒ Array.<string>

Try to add all config value in a list

Kind: instance method of UnifySecrets
Returns: Array.<string> - - list of found values (or null for those not found)

Param Type
names Array.<string>

unifySecrets.addAllSecrets() ⇒ Array.<string>

Add all docker secrets

Kind: instance method of UnifySecrets
Returns: Array.<string> - - list of found secrets

About

Manage configuration variable obtains from environment or docker secrets

Resources

License

Stars

Watchers

Forks

Packages

No packages published