Skip to content

faradayio/vault-env-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

210e119 · Jan 23, 2025

History

28 Commits
Jan 23, 2025
Aug 23, 2020
Oct 14, 2020
Aug 23, 2020
Aug 23, 2020
Aug 23, 2020
Aug 23, 2020
Aug 23, 2020
Oct 14, 2020
Mar 8, 2016
Aug 23, 2020
Aug 23, 2020
Mar 9, 2016
Aug 23, 2020
Aug 23, 2020
Jan 23, 2025
Jan 23, 2025
Aug 23, 2020
Oct 14, 2020
Aug 23, 2020
Aug 23, 2020

Repository files navigation

vault-env-js

Put your vault secrets in your process.env

vault-env demo

Install the package

npm install --save vault-env

Write a Secretfile in your app directory

DATABASE_URL secrets/databases/main:url

Require vault-env and the environment variables are loaded

require("vault-env");

console.log(process.env.DATABASE_URL);
// => 'postgres://...'

Provide your app with VAULT_ADDR and VAULT_TOKEN environment variables when you run it.

VAULT_ADDR=https://localhost:8200 VAULT_TOKEN=12345 node ./app.js

Require vault-env/rotate and vault-env will request new leases before your secrets expire, keeping your environment variables up to date forever.

require("vault-env/rotate");

// check the database url
console.log(process.env.DATABASE_URL);
// => 'postgres://username:password@host/db'

// check again in six weeks
setTimeout(function () {
  console.log(process.env.DATABASE_URL);
  // => 'postgres://user:newpassword@host/db'
}, 1000 * 60 * 60 * 24 * 7 * 6);

Watch for secret changes

var vaultEnv = require("vault-env/rotate");

vaultEnv.on("DATABASE_URL", function (newDB, oldDB) {
  console.log("DATABASE_URL has changed to " + newDB + " from " + oldDB);
});

Require vault-env/local and vault-env will not set your environment your variables will only be exported by the module as regular variables

var secret = require("vault-env/local");

console.log(secret.DATABASE_URL);
// => 'postgres://...'