hako-parameterstore 0.1.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 +7 -0
- data/.gitignore +9 -0
- data/.rubocop.yml +17 -0
- data/.rubocop_todo.yml +11 -0
- data/Gemfile +4 -0
- data/README.md +48 -0
- data/Rakefile +6 -0
- data/hako-parameterstore.gemspec +27 -0
- data/lib/hako/env_providers/parameterstore.rb +68 -0
- data/wercker.yml +17 -0
- metadata +164 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 96c5be96a7c4adec90dcd224550d0fe3d73768e7
|
|
4
|
+
data.tar.gz: cb7dfedf9dae1b5dd2be419f3764596924a7d111
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 0a82fba2a6460de396e8b5447694dfb7a5208600650d58ba1b99a9aa588c9faff58ba103c687226935de7a6a882e5463afed6c73d71e850246ac031244d43872
|
|
7
|
+
data.tar.gz: 3886899ec756b4a8803b426a59ae2594a72e4f443a24c2737c8aa6f3cb7d9961a4e129025017842e786c2dfebf7857660109eac62213737f7dd81edcc9534e64
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
|
2
|
+
|
|
3
|
+
Style/GuardClause:
|
|
4
|
+
Enabled: false
|
|
5
|
+
|
|
6
|
+
Style/HashSyntax:
|
|
7
|
+
Exclude:
|
|
8
|
+
- 'Rakefile'
|
|
9
|
+
|
|
10
|
+
Style/IfUnlessModifier:
|
|
11
|
+
Enabled: false
|
|
12
|
+
|
|
13
|
+
Style/SignalException:
|
|
14
|
+
Enabled: false
|
|
15
|
+
|
|
16
|
+
Style/TrailingCommaInLiteral:
|
|
17
|
+
Enabled: false
|
data/.rubocop_todo.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Hako::EnvProviders::Parameterstore
|
|
2
|
+
Provide variables from [AWS Parameter Store](http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) to [hako](https://github.com/eagletmt/hako)
|
|
3
|
+
|
|
4
|
+
[](https://coveralls.io/github/moaikids/hako-parameterstore)
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
Add this line to your application's Gemfile:
|
|
9
|
+
|
|
10
|
+
```ruby
|
|
11
|
+
gem 'hako-parameterstore'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
And then execute:
|
|
15
|
+
|
|
16
|
+
$ bundle
|
|
17
|
+
|
|
18
|
+
Or install it yourself as:
|
|
19
|
+
|
|
20
|
+
$ gem install hako-parameterstore
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
1. Put encrypted value using AWS ParameterStore
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
$ aws ssm put-parameter --name encrypted.some_password --value veryverysecret --type SecureString
|
|
28
|
+
$ aws ssm get-parameter --name encrypted.some_password --with-decryption
|
|
29
|
+
veryverysecret
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
2. Setting hako and run it
|
|
33
|
+
```
|
|
34
|
+
env:
|
|
35
|
+
$providers:
|
|
36
|
+
- type: parameterstore
|
|
37
|
+
SOME_PASSWORD: ‘#{encrypted.some_password}'
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
3. A value is set for the ECS environment variable
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Environment Variables
|
|
44
|
+
Key Value
|
|
45
|
+
SOME_PASSWORD veryverysecret
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |spec|
|
|
5
|
+
spec.name = 'hako-parameterstore'
|
|
6
|
+
spec.version = '0.1.0'
|
|
7
|
+
spec.authors = ['moaikids']
|
|
8
|
+
spec.email = ['moaikids@gmail.com']
|
|
9
|
+
|
|
10
|
+
spec.summary = 'Provide variables from ParameterStore to hako'
|
|
11
|
+
spec.description = 'Provide variables from ParameterStore to hako'
|
|
12
|
+
spec.homepage = 'https://github.com/moaikids/hako-parameterstore'
|
|
13
|
+
|
|
14
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
15
|
+
spec.bindir = 'exe'
|
|
16
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
17
|
+
spec.require_paths = ['lib']
|
|
18
|
+
|
|
19
|
+
spec.add_dependency 'hako', '>= 0.2.0'
|
|
20
|
+
spec.add_dependency 'aws-sdk-ssm', '>= 1.5.0'
|
|
21
|
+
spec.add_development_dependency 'bundler'
|
|
22
|
+
spec.add_development_dependency 'rake'
|
|
23
|
+
spec.add_development_dependency 'rubocop'
|
|
24
|
+
spec.add_development_dependency 'rspec'
|
|
25
|
+
spec.add_development_dependency 'coveralls'
|
|
26
|
+
spec.add_development_dependency 'simplecov'
|
|
27
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'hako/env_provider'
|
|
4
|
+
require 'aws-sdk-ssm'
|
|
5
|
+
|
|
6
|
+
module Hako
|
|
7
|
+
module EnvProviders
|
|
8
|
+
class Parameterstore < EnvProvider
|
|
9
|
+
# @param [Pathname] _root_path
|
|
10
|
+
# @param [Hash<String, Object>] options
|
|
11
|
+
def initialize(_root_path, options)
|
|
12
|
+
@client = options['client'] || Aws::SSM::Client.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @param [Array<String>] variables
|
|
16
|
+
# @return [Hash<String, String>]
|
|
17
|
+
def ask(variables)
|
|
18
|
+
env = {}
|
|
19
|
+
variables.each do |key|
|
|
20
|
+
val = get_value_from_parameterstore(key)
|
|
21
|
+
if val
|
|
22
|
+
env[key] = val
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
env
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @return [Boolean]
|
|
29
|
+
def can_ask_keys?
|
|
30
|
+
true
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# @param [Array<String>] variables
|
|
34
|
+
# @return [Array<String>]
|
|
35
|
+
def ask_keys(variables)
|
|
36
|
+
keys = []
|
|
37
|
+
read_parameters_from_parameterstore.each do |parameter, _|
|
|
38
|
+
if variables.include?(parameter.name)
|
|
39
|
+
keys << parameter.name
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
keys
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
# @return [Hash<String, Integer>]
|
|
48
|
+
def read_parameters_from_parameterstore
|
|
49
|
+
resp = @client.describe_parameters({})
|
|
50
|
+
resp.parameters
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# @param [String] key
|
|
54
|
+
# @return [String]
|
|
55
|
+
def get_value_from_parameterstore(key)
|
|
56
|
+
val = nil
|
|
57
|
+
begin
|
|
58
|
+
resp = @client.get_parameter({name: key , with_decryption: true})
|
|
59
|
+
if resp.parameter
|
|
60
|
+
val = resp.parameter.value
|
|
61
|
+
end
|
|
62
|
+
rescure
|
|
63
|
+
end
|
|
64
|
+
val
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
data/wercker.yml
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
box: ruby
|
|
2
|
+
build:
|
|
3
|
+
steps:
|
|
4
|
+
- bundle-install
|
|
5
|
+
- script:
|
|
6
|
+
name: Send coverage to coveralls
|
|
7
|
+
code: |
|
|
8
|
+
echo service_name: wercker > .coveralls.yml
|
|
9
|
+
echo repo_token: $COVERALLS_TOKEN >> .coveralls.yml
|
|
10
|
+
export COVERALLS_SERVICE_NAME=wercker
|
|
11
|
+
export COVERALLS_REPO_TOKEN=$COVERALLS_TOKEN
|
|
12
|
+
export COVERALLS_GIT_COMMIT=$WERCKER_GIT_COMMIT
|
|
13
|
+
export COVERALLS_SERVICE_JOB_ID=$WERCKER_BUILD_ID
|
|
14
|
+
export COVERALLS_GIT_BRANCH=$WERCKER_GIT_BRANCH
|
|
15
|
+
- script:
|
|
16
|
+
name: rspec
|
|
17
|
+
code: bundle exec rspec
|
metadata
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: hako-parameterstore
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- moaikids
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-12-06 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: hako
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 0.2.0
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 0.2.0
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: aws-sdk-ssm
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 1.5.0
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 1.5.0
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: bundler
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
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'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubocop
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rspec
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: coveralls
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: simplecov
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
description: Provide variables from ParameterStore to hako
|
|
126
|
+
email:
|
|
127
|
+
- moaikids@gmail.com
|
|
128
|
+
executables: []
|
|
129
|
+
extensions: []
|
|
130
|
+
extra_rdoc_files: []
|
|
131
|
+
files:
|
|
132
|
+
- ".gitignore"
|
|
133
|
+
- ".rubocop.yml"
|
|
134
|
+
- ".rubocop_todo.yml"
|
|
135
|
+
- Gemfile
|
|
136
|
+
- README.md
|
|
137
|
+
- Rakefile
|
|
138
|
+
- hako-parameterstore.gemspec
|
|
139
|
+
- lib/hako/env_providers/parameterstore.rb
|
|
140
|
+
- wercker.yml
|
|
141
|
+
homepage: https://github.com/moaikids/hako-parameterstore
|
|
142
|
+
licenses: []
|
|
143
|
+
metadata: {}
|
|
144
|
+
post_install_message:
|
|
145
|
+
rdoc_options: []
|
|
146
|
+
require_paths:
|
|
147
|
+
- lib
|
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
|
+
requirements:
|
|
155
|
+
- - ">="
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
157
|
+
version: '0'
|
|
158
|
+
requirements: []
|
|
159
|
+
rubyforge_project:
|
|
160
|
+
rubygems_version: 2.6.12
|
|
161
|
+
signing_key:
|
|
162
|
+
specification_version: 4
|
|
163
|
+
summary: Provide variables from ParameterStore to hako
|
|
164
|
+
test_files: []
|