Class: Opsicle::Config
- Inherits:
-
Object
- Object
- Opsicle::Config
- Defined in:
- lib/opsicle/config.rb
Constant Summary collapse
- FOG_CONFIG_PATH =
'~/.fog'
- OPSICLE_CONFIG_PATH =
'./.opsicle'
- SESSION_DURATION =
3600
- MissingConfig =
Class.new(StandardError)
- MissingEnvironment =
Class.new(StandardError)
Instance Attribute Summary collapse
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
Instance Method Summary collapse
- #aws_config ⇒ Object
- #configure_aws! ⇒ Object
- #fog_config ⇒ Object
- #get_mfa_token ⇒ Object
- #get_session ⇒ Object
-
#initialize(environment) ⇒ Config
constructor
A new instance of Config.
- #load_config(file) ⇒ Object
- #opsworks_config ⇒ Object
- #session_duration ⇒ Object
-
#symbolize_keys(hash) ⇒ Object
We want all ouf our YAML loaded keys to be symbols taken from devblog.avdi.org/2009/07/14/recursively-symbolize-keys/.
Constructor Details
#initialize(environment) ⇒ Config
Returns a new instance of Config.
12 13 14 |
# File 'lib/opsicle/config.rb', line 12 def initialize(environment) @environment = environment.to_sym end |
Instance Attribute Details
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
10 11 12 |
# File 'lib/opsicle/config.rb', line 10 def environment @environment end |
Instance Method Details
#aws_config ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/opsicle/config.rb', line 16 def aws_config return @aws_config if @aws_config if fog_config[:mfa_serial_number] @aws_config = get_session.credentials else @aws_config = { access_key_id: fog_config[:aws_access_key_id], secret_access_key: fog_config[:aws_secret_access_key] } end end |
#configure_aws! ⇒ Object
34 35 36 |
# File 'lib/opsicle/config.rb', line 34 def configure_aws! AWS.config(aws_config) end |
#fog_config ⇒ Object
25 26 27 28 |
# File 'lib/opsicle/config.rb', line 25 def fog_config return @fog_config if @fog_config @fog_config = load_config(File.(FOG_CONFIG_PATH)) end |
#get_mfa_token ⇒ Object
46 47 48 |
# File 'lib/opsicle/config.rb', line 46 def get_mfa_token Output.ask("Enter MFA token: "){ |q| q.validate = /^\d{6}$/ } end |
#get_session ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/opsicle/config.rb', line 50 def get_session return @session if @session sts = AWS::STS.new(access_key_id: fog_config[:aws_access_key_id], secret_access_key: fog_config[:aws_secret_access_key]) @session = sts.new_session(duration: session_duration, serial_number: fog_config[:mfa_serial_number], token_code: get_mfa_token) end |
#load_config(file) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/opsicle/config.rb', line 38 def load_config(file) raise MissingConfig, "Missing configuration file: #{file} Run 'opsicle help'" unless File.exist?(file) env_config = symbolize_keys(YAML.load_file(file))[environment] rescue {} raise MissingEnvironment, "Configuration for the \'#{environment}\' environment could not be found in #{file}" unless env_config != nil env_config end |
#opsworks_config ⇒ Object
30 31 32 |
# File 'lib/opsicle/config.rb', line 30 def opsworks_config @opsworks_config ||= load_config(OPSICLE_CONFIG_PATH) end |
#session_duration ⇒ Object
58 59 60 61 |
# File 'lib/opsicle/config.rb', line 58 def session_duration fog_config = load_config(File.(FOG_CONFIG_PATH)) fog_config[:session_duration] || SESSION_DURATION end |
#symbolize_keys(hash) ⇒ Object
We want all ouf our YAML loaded keys to be symbols taken from devblog.avdi.org/2009/07/14/recursively-symbolize-keys/
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/opsicle/config.rb', line 65 def symbolize_keys(hash) hash.inject({}){|result, (key, value)| new_key = case key when String then key.to_sym else key end new_value = case value when Hash then symbolize_keys(value) else value end result[new_key] = new_value result } end |