lib/awsborn/awsborn.rb in awsborn-0.2.1 vs lib/awsborn/awsborn.rb in awsborn-0.3.0
- old
+ new
@@ -1,20 +1,40 @@
module Awsborn
class SecurityError < StandardError ; end
class ServerError < StandardError ; end
class << self
- attr_writer :access_key_id, :secret_access_key, :logger
+ attr_writer :access_key_id, :secret_access_key, :logger, :remote_chef_path
attr_accessor :verbose
Awsborn.verbose = true
def access_key_id
@access_key_id ||= ENV['AMAZON_ACCESS_KEY_ID']
end
def secret_access_key
- @secret_access_key ||= ENV['AMAZON_SECRET_ACCESS_KEY']
+ unless @secret_access_key
+ @secret_access_key = ENV['AMAZON_SECRET_ACCESS_KEY']
+ if @secret_access_key.to_s == ''
+ @secret_access_key = secret_access_key_from_keychain(access_key_id)
+ end
+ end
+ @secret_access_key
+ end
+
+ def secret_access_key_from_keychain (key_id)
+ @credentials ||= {}
+ unless @credentials[key_id]
+ dump = `security -q find-generic-password -a "#{key_id}" -g 2>&1`
+ secret_key = dump[/password: "(.*)"/, 1]
+ @credentials[key_id] = secret_key
+ end
+ @credentials[key_id]
+ end
+
+ def remote_chef_path
+ @remote_chef_path ||= '/etc/chef'
end
def logger
unless defined? @logger
dir = [File.dirname(File.expand_path($0)), '/tmp'].find { |d| File.writable?(d) }