Class: Hiera::Backend::Secrets_manager_backend

Inherits:
Object
  • Object
show all
Defined in:
lib/hiera/backend/secrets_manager_backend.rb

Instance Method Summary collapse

Constructor Details

#initializeSecrets_manager_backend

Returns a new instance of Secrets_manager_backend.



4
5
6
7
8
9
# File 'lib/hiera/backend/secrets_manager_backend.rb', line 4

def initialize
  require 'json'
  require 'aws-sdk-secretsmanager'
  @config = Config
  @client = create_client
end

Instance Method Details

#lookup(key, scope, order_override, resolution_type) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/hiera/backend/secrets_manager_backend.rb', line 11

def lookup(key, scope, order_override, resolution_type)
  answer = nil

  if @client.nil?
    Hiera.debug('Key lookup failed. AWS Secrets Manager backend is in a bad state.')
    return answer
  end

  if contains_illegal_characters?(key)
    Hiera.debug("#{key} contains illegal characters. Skipping lookup.")
    return answer
  end

  key_to_query = format_key(key, scope, Config[:secrets_manager])

  begin
    case resolution_type
    when :array
      Hiera.warn("Hiera Secrets Manager backend does not support arrays.")
    when :hash
      answer = JSON.parse(retrieve_secret(key_to_query))
    else
      answer = retrieve_secret(key_to_query)
    end
  rescue Aws::SecretsManager::Errors::ResourceNotFoundException => error
    Hiera.debug("#{key_to_query} not found: #{error.message}")
  rescue StandardError => error
    Hiera.debug("Secrets Manager Backend Error:")
    Hiera.debug(error)
  end

  answer
end