chef-vault-retry 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ff30d34bbf8026116369661dfe0339c53bfb2b51
4
+ data.tar.gz: a527512f4de92b17142e06c7993beaa670ff4289
5
+ SHA512:
6
+ metadata.gz: 41b84e9897fe479a20032128b488955a32cae01f308715c8135b1c201bb03cb9b1d4feaf2c11f6dff4fde35fa8e0cccd5e66abeefaa7245d9a7224b6c61df285
7
+ data.tar.gz: f1c0f2d2ae341a2e17f902cbd30ae09b76991be40f485a33e95041e7607ec55b37ce23453a087a3ac64a09d8868737c96c7fedcb39d3b1c2192c2e51e0b50cb9
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ chef-vault-retry-*.*.*.gem
2
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org/'
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ ## Overview
2
+
3
+ Wraps `ChefVault::Item.load` with a new method `ChefVaultRetry::Item.load` that will periodically retry to decrypt the secret if an exception is raised. This is primarily intended to ease the bootstrapping of new systems by keeping chef-client runs from failing.
4
+
5
+ ## Use
6
+
7
+ Replace the following code in your recipes:
8
+
9
+ ```
10
+ chef_gem 'chef-vault' do
11
+ compile_time true if respond_to?(:compile_time)
12
+ end
13
+
14
+ require 'chef-vault'
15
+
16
+ item = ChefVault::Item.load('passwords', 'root')
17
+ item['password']
18
+ ```
19
+
20
+ with this instead:
21
+
22
+ ```
23
+ chef_gem 'chef-vault-retry' do
24
+ compile_time true if respond_to?(:compile_time)
25
+ end
26
+
27
+ require 'chef-vault-retry'
28
+
29
+ item = ChefVaultRetry::Item.load('passwords', 'root')
30
+ item['password']
31
+ ```
32
+
33
+ The same ChefVault::Item.load method will be called, but if a secret decryption exception is raised:
34
+
35
+ 1. A message will output about the failure
36
+ * e.g. `SecretDecryption exception raised; please refresh vault item (passwords/root)`
37
+ 2. Recipe execution will pause for 30 seconds
38
+ 3. The process will repeat
39
+ * It will repeat this 40 times by default (~20 minutes). The number of retries can be customized by passing a Fixnum as the `retries` argument of `ChefVaultRetry::Item.load`
@@ -0,0 +1,19 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+ require 'chef-vault-retry/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'chef-vault-retry'
6
+ s.version = ChefVaultRetry::VERSION
7
+ s.authors = ['Biola University']
8
+ s.email = ['sysadmins@biola.edu']
9
+ s.summary = 'Retry support for chef-vault'
10
+ s.description = s.summary
11
+ s.homepage = 'https://github.com/biola/chef-vault-retry'
12
+
13
+ s.license = 'Apache License, v2.0'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.require_paths = ['lib']
17
+
18
+ s.add_runtime_dependency 'chef-vault', '~> 2.6'
19
+ end
@@ -0,0 +1,39 @@
1
+ #
2
+ # Author:: Troy Ready (<troy.ready@biola.edu>)
3
+ #
4
+ # Copyright:: 2015, Biola University
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef-vault'
20
+
21
+ class ChefVaultRetry
22
+ class Item
23
+
24
+ def self.load(v, i, retries=40)
25
+ retries.times do
26
+ begin
27
+ return ChefVault::Item.load(v, i)
28
+ rescue ChefVault::Exceptions::SecretDecryption
29
+ puts "SecretDecryption exception raised; "\
30
+ "please refresh vault item (#{v}/#{i})"
31
+ sleep 30
32
+ next
33
+ end
34
+ end
35
+ fail "Failed after #{retries} attempts to decrypt #{v}/#{i}"
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,20 @@
1
+ # Description: chef-vault-retry VERSION file
2
+ # Copyright 2015, Biola University
3
+ # Copyright 2013-15, Nordstrom, Inc.
4
+
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ class ChefVaultRetry
18
+ VERSION = '0.1.0'
19
+ MAJOR, MINOR, TINY = VERSION.split('.')
20
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chef-vault-retry
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Biola University
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: chef-vault
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.6'
27
+ description: Retry support for chef-vault
28
+ email:
29
+ - sysadmins@biola.edu
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitignore"
35
+ - Gemfile
36
+ - README.md
37
+ - chef-vault-retry.gemspec
38
+ - lib/chef-vault-retry.rb
39
+ - lib/chef-vault-retry/version.rb
40
+ homepage: https://github.com/biola/chef-vault-retry
41
+ licenses:
42
+ - Apache License, v2.0
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 2.4.5
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: Retry support for chef-vault
64
+ test_files: []
65
+ has_rdoc: