module VaultConsul

Constants

ENV_LIST
VERSION

Public Class Methods

parse(path) click to toggle source
# File lib/vault-consul.rb, line 9
def parse(path)
  unless ['local', 'test'].include?(ENV['ENV'])
    ENV_LIST.each do |env|
      raise ConfigError, "Missing ENV variable: #{env}" if ENV[env].nil? || ENV[env] == ''
    end
  end

  yaml = File.read(path)
  handler = VaultConsul::ConfigHandler.new
  parser = Psych::Parser.new(handler)
  parser.parse(yaml)
  handler.root.to_ruby.first
end
read_consul(consul_key) click to toggle source
# File lib/vault-consul.rb, line 32
def read_consul(consul_key)
  Diplomat.configure do |config|
    config.url = ENV['CONSUL_HTTP_ADDR']
    config.acl_token = ENV['CONSUL_HTTP_TOKEN']
  end
  key = "#{ENV['TEAM']}/#{ENV['ENV']}/#{ENV['SERVICE']}/#{consul_key}"
  val = Diplomat::Kv.get(key)
  raise "ConsulError: No value was stored for #{key}" if val.nil? || val == ''
  val
end
read_vault(vault_key, json_key) click to toggle source
# File lib/vault-consul.rb, line 23
def read_vault(vault_key, json_key)
  Vault.with_retries(Vault::HTTPConnectionError) do
    key = "secret/data/#{ENV['TEAM']}/#{ENV['ENV']}/#{ENV['SERVICE']}/#{vault_key}"
    val = Vault.logical.read(key)
    raise "VaultError: No secret was stored for #{key}" if val.nil? || val.data.nil? || val.data[:data].nil?
    val.data[:data][json_key.to_sym]
  end
end