hiera-vault 0.0.3 → 0.0.4
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/lib/hiera/backend/vault_backend.rb +30 -13
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54f1cd1107252c458c1f395266b2e8169833bed0
|
4
|
+
data.tar.gz: e398d18df0034a6a0b7ef3fa2a00ea8447ad9d26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 610bbf21ed98fcb445ea40e3f0d7d4ab9e7aa25329f9e27ec2a9d34912bd734e540d942110f6d603710dd99c6647da2571df95f166df046eaac59dbd9e80896d
|
7
|
+
data.tar.gz: 43ebd78c114126bde4b6ae47c60d7a1ded9ebfeb413bae3558f451cbde923fd9e3b1d84336ec9c8b884997c7f84903dc844601e7a0567cd6beda61af85da4f20
|
@@ -8,6 +8,9 @@ class Hiera
|
|
8
8
|
require 'vault'
|
9
9
|
|
10
10
|
@config = Config[:vault]
|
11
|
+
@config[:mounts] ||= {}
|
12
|
+
@config[:mounts][:generic] ||= ['secret']
|
13
|
+
|
11
14
|
begin
|
12
15
|
@vault = Vault::Client.new(address: @config[:addr], token: @config[:token])
|
13
16
|
fail if @vault.sys.seal_status.sealed?
|
@@ -21,25 +24,39 @@ class Hiera
|
|
21
24
|
def lookup(key, scope, order_override, resolution_type)
|
22
25
|
return nil if @vault.nil?
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
Hiera.debug("[hiera-vault] Looking up #{key} in vault backend")
|
28
|
+
|
29
|
+
answer = nil
|
30
|
+
|
31
|
+
# Only generic mounts supported so far
|
32
|
+
@config[:mounts][:generic].each do |mount|
|
33
|
+
path = Backend.parse_string(mount, scope, { 'key' => key })
|
34
|
+
answer = lookup_generic("#{path}/#{key}", scope)
|
27
35
|
|
28
|
-
|
29
|
-
Hiera.warn("[hiera-vault] Could not connect to read secret: #{key}")
|
30
|
-
rescue Vault::HTTPError => e
|
31
|
-
Hiera.warn("[hiera-vault] Could not read secret #{key}: #{e.errors.join("\n").rstrip}")
|
36
|
+
break if answer.kind_of? Hash
|
32
37
|
end
|
33
38
|
|
34
|
-
|
39
|
+
answer
|
40
|
+
end
|
41
|
+
|
42
|
+
def lookup_generic(key, scope)
|
43
|
+
begin
|
44
|
+
secret = @vault.logical.read(key)
|
45
|
+
rescue Vault::HTTPConnectionError
|
46
|
+
Hiera.debug("[hiera-vault] Could not connect to read secret: #{key}")
|
47
|
+
rescue Vault::HTTPError => e
|
48
|
+
Hiera.warn("[hiera-vault] Could not read secret #{key}: #{e.errors.join("\n").rstrip}")
|
49
|
+
end
|
35
50
|
|
36
|
-
|
37
|
-
data = secret.data.inject({}) { |h, (k, v)| h[k.to_s] = v; h }
|
38
|
-
answer = Backend.parse_answer(data, scope)
|
51
|
+
return nil if secret.nil?
|
39
52
|
|
40
|
-
|
41
|
-
|
53
|
+
Hiera.debug("[hiera-vault] Read secret: #{key}")
|
54
|
+
# Turn secret's hash keys into strings
|
55
|
+
data = secret.data.inject({}) { |h, (k, v)| h[k.to_s] = v; h }
|
56
|
+
|
57
|
+
return Backend.parse_answer(data, scope)
|
42
58
|
end
|
59
|
+
|
43
60
|
end
|
44
61
|
end
|
45
62
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiera-vault
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Sokolowski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: json
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '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'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: vault
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|