dockable 0.1.0 → 0.3.0
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/Gemfile.lock +32 -20
- data/README.md +8 -0
- data/bin/console +4 -4
- data/dockable.gemspec +2 -0
- data/exe/dockable +3 -2
- data/lib/dockable.rb +31 -11
- data/lib/dockable/version.rb +3 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9ab6bf84a924a8f5d7eba45555a481800db93549db54134a78dab089e156e11
|
4
|
+
data.tar.gz: 14478faa4b0eecabd75716dd7331c50b28d789e0a0bf200a8a1a6b555b07b813
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86718d909b9858001a5a58770818bae40650c6ca0d8e3d67edfa348dff565dc0d0b92c2ecc19ade7d46bc9305cffe982a26d6c92321b9c86db462a85ddc2c17c
|
7
|
+
data.tar.gz: d88277b0a0933e793759d7fcce3014796694963a3084a4439f79fdf67398430fc642f73ba33d5a24902023f2a281779545dd60a92c7e498304085c0a97864185
|
data/Gemfile.lock
CHANGED
@@ -1,41 +1,52 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dockable (0.
|
4
|
+
dockable (0.3.0)
|
5
5
|
aws-sdk-s3
|
6
|
+
aws-sdk-ssm
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
9
10
|
specs:
|
10
|
-
aws-
|
11
|
-
aws-
|
11
|
+
aws-eventstream (1.0.1)
|
12
|
+
aws-partitions (1.97.0)
|
13
|
+
aws-sdk-core (3.24.0)
|
14
|
+
aws-eventstream (~> 1.0)
|
12
15
|
aws-partitions (~> 1.0)
|
13
16
|
aws-sigv4 (~> 1.0)
|
14
17
|
jmespath (~> 1.0)
|
15
|
-
aws-sdk-kms (1.
|
18
|
+
aws-sdk-kms (1.7.0)
|
16
19
|
aws-sdk-core (~> 3)
|
17
20
|
aws-sigv4 (~> 1.0)
|
18
|
-
aws-sdk-s3 (1.
|
19
|
-
aws-sdk-core (~> 3)
|
21
|
+
aws-sdk-s3 (1.17.0)
|
22
|
+
aws-sdk-core (~> 3, >= 3.21.2)
|
20
23
|
aws-sdk-kms (~> 1)
|
21
24
|
aws-sigv4 (~> 1.0)
|
22
|
-
aws-
|
25
|
+
aws-sdk-ssm (1.20.0)
|
26
|
+
aws-sdk-core (~> 3)
|
27
|
+
aws-sigv4 (~> 1.0)
|
28
|
+
aws-sigv4 (1.0.3)
|
29
|
+
coderay (1.1.2)
|
23
30
|
diff-lcs (1.3)
|
24
|
-
jmespath (1.
|
31
|
+
jmespath (1.4.0)
|
32
|
+
method_source (0.9.0)
|
33
|
+
pry (0.11.3)
|
34
|
+
coderay (~> 1.1.0)
|
35
|
+
method_source (~> 0.9.0)
|
25
36
|
rake (10.5.0)
|
26
|
-
rspec (3.
|
27
|
-
rspec-core (~> 3.
|
28
|
-
rspec-expectations (~> 3.
|
29
|
-
rspec-mocks (~> 3.
|
30
|
-
rspec-core (3.
|
31
|
-
rspec-support (~> 3.
|
32
|
-
rspec-expectations (3.
|
37
|
+
rspec (3.8.0)
|
38
|
+
rspec-core (~> 3.8.0)
|
39
|
+
rspec-expectations (~> 3.8.0)
|
40
|
+
rspec-mocks (~> 3.8.0)
|
41
|
+
rspec-core (3.8.0)
|
42
|
+
rspec-support (~> 3.8.0)
|
43
|
+
rspec-expectations (3.8.0)
|
33
44
|
diff-lcs (>= 1.2.0, < 2.0)
|
34
|
-
rspec-support (~> 3.
|
35
|
-
rspec-mocks (3.
|
45
|
+
rspec-support (~> 3.8.0)
|
46
|
+
rspec-mocks (3.8.0)
|
36
47
|
diff-lcs (>= 1.2.0, < 2.0)
|
37
|
-
rspec-support (~> 3.
|
38
|
-
rspec-support (3.
|
48
|
+
rspec-support (~> 3.8.0)
|
49
|
+
rspec-support (3.8.0)
|
39
50
|
|
40
51
|
PLATFORMS
|
41
52
|
ruby
|
@@ -43,8 +54,9 @@ PLATFORMS
|
|
43
54
|
DEPENDENCIES
|
44
55
|
bundler (~> 1.16)
|
45
56
|
dockable!
|
57
|
+
pry
|
46
58
|
rake (~> 10.0)
|
47
59
|
rspec (~> 3.0)
|
48
60
|
|
49
61
|
BUNDLED WITH
|
50
|
-
1.16.
|
62
|
+
1.16.2
|
data/README.md
CHANGED
@@ -28,6 +28,14 @@ You can run puma like this:
|
|
28
28
|
$ dockable web
|
29
29
|
```
|
30
30
|
|
31
|
+
### Loading environment variables from Systems Manager Parameter Store
|
32
|
+
|
33
|
+
If you've added `DOCKABLE_ENV_SSM_PREFIX` as an environment variable, dockable will look for all values in the AWS Parameter store that begin with that prefix and load them as environment variables.
|
34
|
+
|
35
|
+
For instance, if I had `/production/staff` set as my `DOCKABLE_ENV_SSM_Prefix` and had the parameter `/production/staff/follower_database_url` set with the value `postgres://funtime.com`, dockable will load that as `FOLLOWER_DATABASE_URL=postgres://funtime.com`
|
36
|
+
|
37
|
+
_Please Note: setting `DOCKABLE_ENV_SSM_PREFIX` will take precendence over loading environment variables from S3_
|
38
|
+
|
31
39
|
### Loading environment variables from S3
|
32
40
|
|
33
41
|
If you've specified the `DOCKABLE_ENV_BUCKET_NAME` and `DOCKABLE_ENV_KEY_NAME` variables, it will try to download an environment file from that location.
|
data/bin/console
CHANGED
@@ -7,8 +7,8 @@ require "dockable"
|
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
9
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
|
11
|
-
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
12
12
|
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
13
|
+
# require "irb"
|
14
|
+
# IRB.start(__FILE__)
|
data/dockable.gemspec
CHANGED
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.16"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
23
|
spec.add_development_dependency "rspec", "~> 3.0"
|
24
|
+
spec.add_development_dependency "pry"
|
24
25
|
|
25
26
|
spec.add_dependency "aws-sdk-s3"
|
27
|
+
spec.add_dependency "aws-sdk-ssm"
|
26
28
|
end
|
data/exe/dockable
CHANGED
@@ -3,8 +3,9 @@
|
|
3
3
|
require "dockable"
|
4
4
|
|
5
5
|
vars = Dockable.load_environment_variables(
|
6
|
-
bucket:
|
7
|
-
key:
|
6
|
+
bucket: ENV["DOCKABLE_ENV_BUCKET_NAME"],
|
7
|
+
key: ENV["DOCKABLE_ENV_KEY_NAME"],
|
8
|
+
ssm_prefix: ENV["DOCKABLE_ENV_SSM_PREFIX"],
|
8
9
|
)
|
9
10
|
|
10
11
|
Dir.chdir(ENV["DOCKABLE_ROOT_DIR"]) if ENV["DOCKABLE_ROOT_DIR"]
|
data/lib/dockable.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
|
-
require "dockable/version"
|
2
|
-
|
3
1
|
require "yaml"
|
4
2
|
|
3
|
+
require "aws-sdk-ssm"
|
4
|
+
require "aws-sdk-s3"
|
5
|
+
|
6
|
+
require "dockable/version"
|
7
|
+
|
5
8
|
module Dockable
|
6
9
|
|
7
|
-
def self.load_environment_variables(bucket:, key:)
|
8
|
-
if presence(
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
body = resp.body.read
|
13
|
-
YAML.load(body).map { |k, v| [ k.to_s, v.to_s ] }.to_h
|
10
|
+
def self.load_environment_variables(bucket:, key:, ssm_prefix:)
|
11
|
+
if presence(ssm_prefix)
|
12
|
+
load_from_ssm(ssm_prefix: ssm_prefix)
|
13
|
+
elsif presence(bucket) && presence(key)
|
14
|
+
load_from_s3(bucket: bucket, key: key)
|
14
15
|
else
|
15
|
-
STDERR.puts "Dockable warning: No bucket or
|
16
|
+
STDERR.puts "Dockable warning: No bucket/key or SSM Prefix found, no environment file loaded."
|
16
17
|
{}
|
17
18
|
end
|
18
19
|
end
|
@@ -26,7 +27,7 @@ module Dockable
|
|
26
27
|
else
|
27
28
|
argv
|
28
29
|
end
|
29
|
-
elsif argv.
|
30
|
+
elsif argv.empty?
|
30
31
|
fail ArgumentError, "No command specified"
|
31
32
|
else
|
32
33
|
argv
|
@@ -49,4 +50,23 @@ module Dockable
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
53
|
+
def self.load_from_ssm(ssm_prefix:)
|
54
|
+
client = Aws::SSM::Client.new
|
55
|
+
ssm_prefix = "/#{ssm_prefix}" if ssm_prefix[0] != "/" # get_parameters_by_path requires leading /
|
56
|
+
parameters = client.get_parameters_by_path(path: ssm_prefix, with_decryption: true).each.flat_map(&:parameters)
|
57
|
+
parameters.map { |param|
|
58
|
+
[
|
59
|
+
param.name.split("/").last.upcase.gsub(/\W/, "_"),
|
60
|
+
param.value.to_s
|
61
|
+
]
|
62
|
+
}.to_h
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.load_from_s3(bucket:, key:)
|
66
|
+
client = Aws::S3::Client.new
|
67
|
+
resp = client.get_object(bucket: bucket, key: key)
|
68
|
+
body = resp.body.read
|
69
|
+
YAML.safe_load(body).map { |k, v| [ k.to_s, v.to_s ] }.to_h
|
70
|
+
end
|
71
|
+
|
52
72
|
end
|
data/lib/dockable/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iain
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: aws-sdk-s3
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,20 @@ dependencies:
|
|
66
80
|
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: aws-sdk-ssm
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
69
97
|
description: Some helpers for launching Ruby apps inside Docker
|
70
98
|
email:
|
71
99
|
- iain@iain.nl
|