ssm_env 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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