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 +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