class StackMaster::ParameterResolvers::Secret
Constants
- SecretNotFound
Public Class Methods
new(config, stack_definition)
click to toggle source
# File lib/stack_master/parameter_resolvers/secret.rb, line 14 def initialize(config, stack_definition) @config = config @stack_definition = stack_definition end
Public Instance Methods
resolve(value)
click to toggle source
# File lib/stack_master/parameter_resolvers/secret.rb, line 19 def resolve(value) secret_key = value raise ArgumentError, "No secret_file defined for stack definition #{@stack_definition.stack_name} in #{@stack_definition.region}" unless !@stack_definition.secret_file.nil? raise ArgumentError, "Could not find secret file at #{secret_file_path}" unless File.exist?(secret_file_path) secrets_hash.fetch(secret_key) do raise SecretNotFound, "Unable to find key #{secret_key} in file #{secret_file_path}" end end
Private Instance Methods
decrypt_with_dotgpg()
click to toggle source
# File lib/stack_master/parameter_resolvers/secret.rb, line 34 def decrypt_with_dotgpg Dotgpg.interactive = true dir = Dotgpg::Dir.closest(secret_file_path) stream = StringIO.new dir.decrypt(secret_path_relative_to_base, stream) stream.string end
secret_file_path()
click to toggle source
# File lib/stack_master/parameter_resolvers/secret.rb, line 46 def secret_file_path @secret_file_path ||= File.join(@config.base_dir, secret_path_relative_to_base) end
secret_path_relative_to_base()
click to toggle source
# File lib/stack_master/parameter_resolvers/secret.rb, line 42 def secret_path_relative_to_base @secret_path_relative_to_base ||= File.join('secrets', @stack_definition.secret_file) end
secrets_hash()
click to toggle source
# File lib/stack_master/parameter_resolvers/secret.rb, line 30 def secrets_hash @secrets_hash ||= YAML.load(decrypt_with_dotgpg) end