ssm_env 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a11f9965fb726f83a85d662d6f1649a4ff2a3106
4
- data.tar.gz: 86ac0e1d169704ed95aba6f29ab966cc56e2cc0e
3
+ metadata.gz: 722b88fda08dd276c2b04912c9cbb6745c2ad794
4
+ data.tar.gz: 2c6eea21e3078e47b50f45428c572ea8a5e64bd9
5
5
  SHA512:
6
- metadata.gz: ed3922984296110875313c5c97a7221c052327cb2c9194ee18ebd69e3cf7ff217d96d5dfd54dba0c09659c746ff3bb1d7d31d871a37fcc6710853a7a64791020
7
- data.tar.gz: 81294fdce45b857095b0485412153eda80bc4f424e15cc8a8611f63efdd85427bdd4220d858c1f1f4eb0672717d444ea1b311c11a2465015b025ed8a396b832e
6
+ metadata.gz: d7d7a02ba78cc75fbf97d5e6bb92a2acf378cbcf5b58e5c1879d3c2a8a0143c2ad98e97892fe4dfb9e6b13e4603d8c1b63feaee333956473faede59ecf16b2f7
7
+ data.tar.gz: 39bfc027c65272914a6532a204f70f66748354de021356aff9c9044c1684d2340c251b8759f6eb3bd066697b5ec3b89dfc7c458bd0756dd1833d520c2964eabf
data/README.md CHANGED
@@ -22,7 +22,7 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- ####Use this from the command line like
25
+ #### Use this from the command line like
26
26
 
27
27
  **Output Values**
28
28
  ```
@@ -36,7 +36,7 @@ ssm_env sync -i "[BRANCH_KEY, VACUUM_RATE]"
36
36
  ssm_env sync -i ssm_param_names.yml
37
37
  ```
38
38
 
39
- ####Use this in ruby like
39
+ #### Use this in ruby like
40
40
  ```
41
41
  ssm_env = SsmEnv.new.run(params_list: [BRANCH_KEY, VACUUM_LIMIT])
42
42
  # Update the environment
@@ -53,5 +53,5 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
53
53
 
54
54
  ## Contributing
55
55
 
56
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/ssm_env.
56
+ Bug reports and pull requests are welcome on GitHub at https://github.com/Everlance/ssm_env.
57
57
 
data/bin/ssm_env CHANGED
@@ -5,20 +5,20 @@ require 'thor'
5
5
  require 'yaml'
6
6
 
7
7
  class SsmEnvCmd < Thor
8
- include SsmEnv
9
8
  desc 'show', 'show one or more variables'
10
9
  method_option :input, aliases: '-i', required: true, banner: 'a string or filepath containing a list of params to pull from ssm'
11
10
  def show
12
11
  fetch_params_list
13
- self.fetch(params_list: @params_list)
12
+ SsmEnv.fetch(params_list: @params_list)
14
13
  end
15
14
 
16
15
  desc 'sync', 'store the environment in this process'
17
16
  method_option :input, aliases: '-i', required: true, banner: 'a string or filepath containing a list of params to pull from ssm'
18
17
  def sync
19
18
  fetch_params_list
20
- self.fetch(params_list: @params_list)
21
- self.ssm_params.each do |name, attributes|
19
+ params = SsmEnv.fetch(params_list: @params_list)
20
+ SsmEnv.to_env(ssm_params: params)
21
+ params.each do |name, attributes|
22
22
  system({name => attributes[:value]})
23
23
  end
24
24
  end
data/lib/ssm_env.rb CHANGED
@@ -5,38 +5,27 @@ require "ssm_env/fetcher"
5
5
  require "ssm_env/client"
6
6
 
7
7
  module SsmEnv
8
- include Fetcher
9
- attr_reader :configured, :config
10
- alias_method :configured?, :configured
11
-
12
- # Configure the client using parameters or using a block provided
13
- def configure(region: 'us-east-1', access_key_id: nil, secret_access_key: nil)
14
- @config ||= OpenStruct.new(
15
- region: (region || ENV['AWS_REGION']),
16
- access_key_id: (access_key_id || ENV['AWS_ACCESS_KEY_ID']),
17
- secret_access_key: (secret_access_key || ENV['AWS_SECRET_ACCESS_KEY']),
18
- params_list: [] )
19
-
20
- yield(@config) if block_given?
21
- @configured = true
8
+ def self.fetch(params_list: )
9
+ @fetcher ||= SsmEnv::Fetcher.new(client: SsmEnv.client)
10
+ @ssm_params = @fetcher.fetch(params: params_list)
22
11
  end
23
-
24
- def run(params_list:nil)
25
- configure unless self.configured?
26
- @client = Client.get_client(region: @config.region,
27
- access_key_id: @config.access_key_id,
28
- secret_access_key: @config.secret_access_key)
29
- self.fetch(client: @client, params_list: (params_list || config.params_list))
30
-
12
+ def self.to_env(ssm_params: )
13
+ ssm_params.each { |name, attribs| ENV[name.to_s] = attribs[:value] }
31
14
  end
32
-
33
- def to_env
34
- self.ssm_params.each { |name, attribs| ENV[name.to_s] = attribs[:value] }
35
- end
36
-
37
- def to_file(path: '/etc/profile.d/ssm')
15
+ def self.to_file(ssm_params: ,path: '/etc/profile.d/ssm')
38
16
  File.open(path, 'w') do |f|
39
- self.ssm_parms.each { |name, attribs| f << "#{name}=#{attribs[:value]}\n"}
17
+ ssm_params.each { |name, attribs| f << "#{name}=#{attribs[:value]}\n"}
40
18
  end
41
19
  end
20
+ def self.client
21
+ @client = Client.get_client(region: SsmEnv.config.region,
22
+ access_key_id: SsmEnv.config.access_key_id,
23
+ secret_access_key: SsmEnv.config.secret_access_key)
24
+ end
25
+ def self.config
26
+ @config ||= OpenStruct.new(
27
+ region: ENV['AWS_REGION'],
28
+ access_key_id: ENV['AWS_ACCESS_KEY_ID'],
29
+ secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'])
30
+ end
42
31
  end
@@ -1,19 +1,19 @@
1
1
  require 'aws-sdk'
2
2
 
3
- module Fetcher
3
+ module SsmEnv
4
+ class Fetcher
5
+ attr_accessor :ssm_params
6
+ attr_reader :client
4
7
 
5
- def self.included(base)
6
- base.send :attr_accessor, :ssm_params
7
- base.send :include, InstanceMethods
8
- end
8
+ def initialize(client: )
9
+ @client = client
10
+ end
11
+
12
+ def fetch(params: )
13
+ batch_size, self.ssm_params = 10, {}
9
14
 
10
- module InstanceMethods
11
- def fetch(client:, params_list:)
12
- raise ArgumentError.new("Client is incompatable type #{client.class}") unless client.is_a?(Aws::SSM::Client)
13
- batch_size = 10
14
- self.ssm_params ||= {}
15
- params_list.each_slice(batch_size) do |params_slice|
16
- response = client.get_parameters(names: params_slice, with_decryption: true)
15
+ params.each_slice(batch_size) do |params_slice|
16
+ response = self.client.get_parameters(names: params_slice, with_decryption: true)
17
17
  # Transforms to { :name => { value: value, type: type } }
18
18
  response_params = Hash[response.parameters.map { |item| [item.name.to_sym, {value: item.value, type: item.type}] }]
19
19
  response_params.each do |name, attributes|
@@ -22,6 +22,7 @@ module Fetcher
22
22
  self.ssm_params[name][:type] = attributes[:type]
23
23
  end
24
24
  end
25
+ self.ssm_params
25
26
  end
26
27
  end
27
28
  end
@@ -1,3 +1,3 @@
1
1
  module SsmEnv
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ssm_env
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Lane