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 +4 -4
- data/README.md +3 -3
- data/bin/ssm_env +4 -4
- data/lib/ssm_env.rb +18 -29
- data/lib/ssm_env/fetcher.rb +13 -12
- data/lib/ssm_env/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 722b88fda08dd276c2b04912c9cbb6745c2ad794
|
4
|
+
data.tar.gz: 2c6eea21e3078e47b50f45428c572ea8a5e64bd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/
|
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
|
-
|
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
|
-
|
21
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/ssm_env/fetcher.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
require 'aws-sdk'
|
2
2
|
|
3
|
-
module
|
3
|
+
module SsmEnv
|
4
|
+
class Fetcher
|
5
|
+
attr_accessor :ssm_params
|
6
|
+
attr_reader :client
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
def initialize(client: )
|
9
|
+
@client = client
|
10
|
+
end
|
11
|
+
|
12
|
+
def fetch(params: )
|
13
|
+
batch_size, self.ssm_params = 10, {}
|
9
14
|
|
10
|
-
|
11
|
-
|
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
|
data/lib/ssm_env/version.rb
CHANGED