vault_config 0.0.1 → 0.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vault_config.rb +49 -4
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94cee626131c002d05356bb6d78df44482b208f7357bd3fad72cea302e8372e9
4
- data.tar.gz: ab2928e4f527018c10d21b54decb4e46c13ef79a57c0b098cc71548a29ec1e15
3
+ metadata.gz: 34c2b9b4363eb262639ab2c4e8a2b2015d563b752ea5fbf7ea98df467519dfac
4
+ data.tar.gz: 355b5ded01bb65959a852448169c17e35dcfff59be49f2c23357ff28e5610cd3
5
5
  SHA512:
6
- metadata.gz: 11b59fd36fcd4560ac3253e317e61f2b3e41beae7cb84a828d6bd893ab96dea0f1e45fdb8572b61a90ade9f3cd69a552dff697c4942239aaddc4f7bb3c6afc4c
7
- data.tar.gz: e0868461013a3c48d83c52cc0574e8b6abcd2defbb1ff61e1cd2b1c4fab1473d108b6030696b4e452b5ed5d16fb33a0fd430634d283f22bd38ef1b273b40077f
6
+ metadata.gz: b0fb4f51e8b5c8f54519843d941a85c01b7f4fdfd29b8700387d1e49575347bd71a18f3bd8f8db8a9505fab1ee5615c46393904fbf169a5e148e5d076734d41e
7
+ data.tar.gz: 6438334f04add8afe4280341316ca82131dcba2807ca32eb13fbafbd8dbf6a628ef0ff821b3856eb3d78581bd4e1949e5c5157618b0153f0990bc0fecac16ec7
data/lib/vault_config.rb CHANGED
@@ -12,12 +12,57 @@ class VaultConfig
12
12
  client.load!
13
13
  end
14
14
 
15
+ def self.load_with_warning(app)
16
+ begin
17
+ client = self.new(app)
18
+ client.load!
19
+ rescue => exception
20
+ puts "Warning: VaultConfig.load error --- ignore \n #{exception.message}"
21
+ end
22
+ end
23
+
24
+ # https://learn.hashicorp.com/tutorials/vault/tokens
25
+ def self.renew(token = nil, increment = '12h')
26
+ uri = URI(File.join(ENV['VAULT_ADDR'], '/v1/auth/token/renew'))
27
+ header = {
28
+ 'X-Vault-Token': ENV['VAULT_TOKEN'],
29
+ 'content-type':'application/json'
30
+ }
31
+ response = Net::HTTP.post(uri, {
32
+ token: token || ENV['VAULT_TOKEN'],
33
+ increment: increment,
34
+ }.to_json, header)
35
+ JSON.parse(response.body)
36
+ end
37
+
15
38
  def load!
16
- uri = URI(File.join(ENV['VAULT_ADDR'], 'v1/secret/data', @app))
17
- header = {'X-Vault-Token': ENV['VAULT_TOKEN']}
18
- response = Net::HTTP.get_response(uri, header)
19
- JSON.parse(response.body)['data']['data'].each do |k, v|
39
+ ret = get client_uri, headers
40
+ ret['data']['data'].each do |k, v|
20
41
  ENV[k] = v
21
42
  end
22
43
  end
44
+
45
+ private def get(uri, headers = {})
46
+ Net::HTTP.start(uri.host, uri.port) do |http|
47
+ request = Net::HTTP::Get.new uri, headers
48
+ response = http.request request
49
+ return JSON.parse(response.body)
50
+ end
51
+ end
52
+
53
+ private def headers
54
+ @headers ||= {}
55
+ @headers['X-Vault-Token'] = ENV['VAULT_TOKEN']
56
+ @headers
57
+ end
58
+
59
+ private def client_uri
60
+ @client_uri ||= if @app.start_with?('/')
61
+ arr = @app.split('/')
62
+ arr[1] = "#{arr[1]}/data"
63
+ URI(File.join(ENV['VAULT_ADDR'], 'v1/', arr.join('/')))
64
+ else
65
+ URI(File.join(ENV['VAULT_ADDR'], 'v1/secret/data', @app))
66
+ end
67
+ end
23
68
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vault_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - azhao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-30 00:00:00.000000000 Z
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: default safe in a easy way by using HashiCorp Vault
14
14
  email: azhao.1981@gmail.com