hiera-vault 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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