Module: Vault

Defined in:
lib/vault-ruby-wrapper.rb

Constant Summary collapse

VALID_NAME =
/^[\.\-[:alnum:]_]+$/

Class Method Summary collapse

Class Method Details

.data_bag(secret) ⇒ Object



21
22
23
24
# File 'lib/vault-ruby-wrapper.rb', line 21

def self.data_bag(secret)
  validate_name!(secret)
  return secret_data(secret).keys.collect{|k| k.to_s}
end

.data_bag_item(secret, item) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/vault-ruby-wrapper.rb', line 26

def self.data_bag_item(secret, item)
  validate_name!(secret)
  validate_name!(item)

  data = secret_data(secret)[item.to_sym]
  unless data.to_s.strip.empty?
    return JSON.parse(data)
  end
  raise 'item does not exist'
end

.secret_data(secret) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/vault-ruby-wrapper.rb', line 12

def self.secret_data(secret)
  mysecret = nil
  Vault.with_retries(Vault::HTTPConnectionError, attempts: 5) do
      mysecret = Vault.logical.read("secret/#{secret}") # rubocop:disable Lint/AssignmentInCondition
  end
  return mysecret.data if mysecret
  raise "Secret '#{secret}' returned an empty value"
end

.validate_name!(name) ⇒ Object



6
7
8
9
10
# File 'lib/vault-ruby-wrapper.rb', line 6

def self.validate_name!(name)
  unless name =~ VALID_NAME
    raise "DataBags must have a name matching #{VALID_NAME.inspect}, you gave #{name.inspect}"
  end
end