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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45c85e3cf6ae846fbd88d455f89e284236418142
4
- data.tar.gz: 81ba520a29ad5603e516d15ecb03b01a7ce9dfde
3
+ metadata.gz: 54f1cd1107252c458c1f395266b2e8169833bed0
4
+ data.tar.gz: e398d18df0034a6a0b7ef3fa2a00ea8447ad9d26
5
5
  SHA512:
6
- metadata.gz: c50c96da01630f6644b3eb72b77cb7759813080d3a0343acb90d7e5853c7ce3ee5e8d511f821a9b98c7362def7a96f55bf2b8b746095778cd019a3738c3dc1a5
7
- data.tar.gz: 3699b7f995814832859acde1c77cdcab97865f444f57a458e525c1dd32f42413128125c3592400b922fb179315ba88fa6dd0ace82d73dea3955592d8370f43a2
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
- begin
25
- secret = @vault.logical.read(key)
26
- Hiera.debug("[hiera-vault] Read secret: #{key}")
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
- rescue Vault::HTTPConnectionError
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
- return nil if secret.nil?
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
- # Turn secret's hash keys into strings
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
- return nil unless answer.kind_of? Hash
41
- return answer
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.3
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-09 00:00:00.000000000 Z
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