chef-vault 2.2.4 → 2.3.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 +7 -0
- data/.travis.yml +5 -1
- data/Changelog.md +5 -0
- data/KNIFE_EXAMPLES.md +5 -0
- data/README.md +11 -2
- data/Rakefile +5 -1
- data/chef-vault.gemspec +4 -3
- data/features/clean.feature +24 -0
- data/features/step_definitions/chef-repo.rb +26 -0
- data/features/step_definitions/chef-vault.rb +25 -0
- data/features/support/env.rb +10 -0
- data/lib/chef-vault/version.rb +1 -1
- data/lib/chef/knife/vault_download.rb +45 -0
- data/lib/chef/knife/vault_update.rb +12 -0
- data/spec/chef-vault/certificate_spec.rb +40 -0
- data/spec/{item_keys_spec.rb → chef-vault/item_keys_spec.rb} +0 -0
- data/spec/{item_spec.rb → chef-vault/item_spec.rb} +0 -0
- data/spec/chef-vault/user_spec.rb +40 -0
- data/spec/spec_helper.rb +2 -0
- metadata +58 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4351149f0cc1799f646d5770543d739833e780ce
|
4
|
+
data.tar.gz: eb943ba515a6cd941ce240c8568f75a806f23d14
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a566185392ade755d34d44810c64ebab7d8e47db20b2081282004fc3495426d140e72026bd27111e1b0df72ae81b4c984e4e06fa19104ade67ed909fa5951136
|
7
|
+
data.tar.gz: aedb76eb1d0447f4fbc0ce5ba88230d19c9e4f47a7d55015acd1681c1e5f230411472d457d5828a75ca6e7cc91c367448384f0d96bdeed913b1d9133bb8b0d11
|
data/.travis.yml
CHANGED
data/Changelog.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
## Planned (Unreleased)
|
2
2
|
|
3
3
|
## Released
|
4
|
+
## v2.3.0 / 2014-10-22
|
5
|
+
* add --clean switch to knife update (thanks to Matt Brimstone)
|
6
|
+
* added aruba CLI testing framework (just for --clean option for now)
|
7
|
+
* add Ruby 2.0.x and 2.1.x to Travis platforms
|
8
|
+
|
4
9
|
## v2.2.2 / 2014-06-03
|
5
10
|
* Add knife vault refresh command
|
6
11
|
* Use node_name as a default admin
|
data/KNIFE_EXAMPLES.md
CHANGED
@@ -132,6 +132,11 @@ Decrypt the entire root item in the passwords vault and open it in json format i
|
|
132
132
|
|
133
133
|
knife vault edit passwords root
|
134
134
|
|
135
|
+
### download
|
136
|
+
Decrypt and download an encrypted file to the specified path.
|
137
|
+
|
138
|
+
knife vault download certs user_pem ~/downloaded_user_pem
|
139
|
+
|
135
140
|
### rotate keys
|
136
141
|
Rotate the shared key for the vault passwords and item root. The shared key is that which is used for the chef encrypted data bag item.
|
137
142
|
|
data/README.md
CHANGED
@@ -40,12 +40,13 @@ NOTE: chef-vault 1.0 knife commands are not supported! Please use chef-vault 2.
|
|
40
40
|
knife vault create VAULT ITEM VALUES
|
41
41
|
knife vault edit VAULT ITEM
|
42
42
|
knife vault refresh VAULT ITEM
|
43
|
-
knife vault update VAULT ITEM VALUES
|
43
|
+
knife vault update VAULT ITEM VALUES [--clean]
|
44
44
|
knife vault remove VAULT ITEM VALUES
|
45
45
|
knife vault delete VAULT ITEM
|
46
46
|
knife vault rotate keys VAULT ITEM
|
47
47
|
knife vault rotate all keys
|
48
48
|
knife vault show VAULT ITEM [VALUES]
|
49
|
+
knife vault download VAULT ITEM PATH
|
49
50
|
|
50
51
|
<i>Global Options:</i>
|
51
52
|
<table>
|
@@ -113,6 +114,14 @@ NOTE: chef-vault 1.0 knife commands are not supported! Please use chef-vault 2.
|
|
113
114
|
<td>"summary", "json", "yaml", "pp"</td>
|
114
115
|
<td>show</td>
|
115
116
|
</tr>
|
117
|
+
<tr>
|
118
|
+
<td>nil</td>
|
119
|
+
<td>--clean</td>
|
120
|
+
<td>Remove all client keys before re-encrypting with saved or specified search</td>
|
121
|
+
<td>nil</td>
|
122
|
+
<td>nil</td>
|
123
|
+
<td>update</td>
|
124
|
+
</tr>
|
116
125
|
</table>
|
117
126
|
|
118
127
|
## USAGE IN RECIPES
|
@@ -150,7 +159,7 @@ Author:: Kevin Moser - @moserke<br>
|
|
150
159
|
Author:: Eli Klein - @eliklein<br>
|
151
160
|
Author:: Joey Geiger - @jgeiger<br>
|
152
161
|
Author:: Joshua Timberman - @jtimberman<br>
|
153
|
-
Copyright:: Copyright (c) 2013 Nordstrom, Inc.<br>
|
162
|
+
Copyright:: Copyright (c) 2013-14 Nordstrom, Inc.<br>
|
154
163
|
License:: Apache License, Version 2.0
|
155
164
|
|
156
165
|
Licensed under the Apache License, Version 2.0 (the "License");
|
data/Rakefile
CHANGED
data/chef-vault.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.email = ['kevin.moser@nordstrom.com']
|
26
26
|
s.summary = 'Data encryption support for Chef using data bags'
|
27
27
|
s.description = s.summary
|
28
|
-
s.homepage
|
28
|
+
s.homepage = 'https://github.com/Nordstrom/chef-vault'
|
29
29
|
|
30
30
|
s.license = 'Apache License, v2.0'
|
31
31
|
|
@@ -37,6 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
s.add_development_dependency 'bundler', '~> 1.3'
|
38
38
|
s.add_development_dependency 'rake'
|
39
39
|
s.add_development_dependency 'rspec', '~> 2.14'
|
40
|
-
|
41
|
-
s.add_development_dependency '
|
40
|
+
s.add_development_dependency 'rspec-its', '~> 1.0'
|
41
|
+
s.add_development_dependency 'aruba', '~> 0.6'
|
42
|
+
s.add_development_dependency 'chef', '>= 0.10.10'
|
42
43
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Feature: clean client keys
|
2
|
+
|
3
|
+
When updating a vault item, chef-vault normally performs the
|
4
|
+
saved or specified query and encrypts the item for all nodes
|
5
|
+
returned. It does not remove old client keys from the vault
|
6
|
+
item keys data bag, which will grow over time. Using the
|
7
|
+
--clean switch will cause all client keys to be removed from
|
8
|
+
the data bag before encrypting the item for all clients
|
9
|
+
returned by the query
|
10
|
+
|
11
|
+
Scenario: Do not clean client keys on update
|
12
|
+
Given a local mode chef repo with nodes 'one,two,three'
|
13
|
+
And I create a vault item 'test/item' containing the JSON '{"foo": "bar"}' encrypted for 'one,two'
|
14
|
+
Then the vault item 'test/item' should be encrypted for 'one,two'
|
15
|
+
And I update the vault item 'test/item' to be encrypted for 'two,three'
|
16
|
+
Then the vault item 'test/item' should be encrypted for 'one,two,three'
|
17
|
+
|
18
|
+
Scenario: Clean client keys on update
|
19
|
+
Given a local mode chef repo with nodes 'one,two,three'
|
20
|
+
And I create a vault item 'test/item' containing the JSON '{"foo": "bar"}' encrypted for 'one,two'
|
21
|
+
Then the vault item 'test/item' should be encrypted for 'one,two'
|
22
|
+
And I update the vault item 'test/item' to be encrypted for 'two,three' with the clean option
|
23
|
+
Then the vault item 'test/item' should be encrypted for 'two,three'
|
24
|
+
And the vault item 'test/item' should not be encrypted for 'one'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Given /^a local mode chef repo with nodes '(.+)'$/ do |nodelist|
|
2
|
+
# create the repo directory hierarchy
|
3
|
+
%w(cookbooks clients nodes data_bags).each do |dir|
|
4
|
+
create_dir dir
|
5
|
+
end
|
6
|
+
# create a basic knife.rb
|
7
|
+
write_file 'knife.rb', <<EOF
|
8
|
+
local_mode true
|
9
|
+
chef_repo_path '.'
|
10
|
+
chef_zero.enabled true
|
11
|
+
EOF
|
12
|
+
# create the admin user and capture its private key
|
13
|
+
in_current_dir do
|
14
|
+
system 'knife client create admin -z -d -a -c knife.rb > admin.pem'
|
15
|
+
end
|
16
|
+
# add the admin key to the knife configuration
|
17
|
+
append_to_file 'knife.rb', <<EOF
|
18
|
+
node_name 'admin'
|
19
|
+
client_key 'admin.pem'
|
20
|
+
EOF
|
21
|
+
# create the requested nodes
|
22
|
+
nodelist.split(/,/).each do |node|
|
23
|
+
run_simple "knife client create #{node} -z -d -c knife.rb"
|
24
|
+
run_simple "knife node create #{node} -z -d -c knife.rb"
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
When /^I create a vault item '(.+)\/(.+)' containing the JSON '(.+)' encrypted for '(.+)'$/ do |vault, item, json, nodelist|
|
4
|
+
write_file 'item.json', json
|
5
|
+
query = nodelist.split(/,/).map{|e| "name:#{e}"}.join(' OR ')
|
6
|
+
run_simple "knife vault create #{vault} #{item} -z -c knife.rb -A admin -S '#{query}' -J item.json"
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I update the vault item '(.+)\/(.+)' to be encrypted for '(.+)'( with the clean option)?$/ do |vault, item, nodelist, cleanopt|
|
10
|
+
query = nodelist.split(/,/).map{|e| "name:#{e}"}.join(' OR ')
|
11
|
+
run_simple "knife vault update #{vault} #{item} -S '#{query}' #{cleanopt ? '--clean' : ''}"
|
12
|
+
end
|
13
|
+
|
14
|
+
Then /^the vault item '(.+)\/(.+)' should( not)? be encrypted for '(.+)'$/ do |vault, item, neg, nodelist|
|
15
|
+
nodes = nodelist.split(/,/)
|
16
|
+
run_simple("knife vault show #{vault} #{item} -z -c knife.rb -p clients -F json")
|
17
|
+
output = output_from("knife vault show #{vault} #{item} -z -c knife.rb -p clients -F json")
|
18
|
+
nodes.each do |node|
|
19
|
+
if neg
|
20
|
+
assert_no_partial_output(node, output)
|
21
|
+
else
|
22
|
+
assert_partial_output(node, output)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'aruba/cucumber'
|
2
|
+
|
3
|
+
# Travis runs tests in a limited environment which takes a long time to invoke
|
4
|
+
# the knife command. Up the timeout when we're in a travis build based on the
|
5
|
+
# environment variable set in .travis.yml
|
6
|
+
if ENV['TRAVIS_BUILD']
|
7
|
+
Before do
|
8
|
+
@aruba_timeout_seconds = 15
|
9
|
+
end
|
10
|
+
end
|
data/lib/chef-vault/version.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
# Description: Chef-Vault VaultDownload class
|
2
|
+
# Copyright 2014, Nordstrom, Inc.
|
3
|
+
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
require 'chef/knife/vault_base'
|
17
|
+
|
18
|
+
class Chef
|
19
|
+
class Knife
|
20
|
+
class VaultDownload < Knife
|
21
|
+
|
22
|
+
include Chef::Knife::VaultBase
|
23
|
+
|
24
|
+
banner "knife vault download VAULT ITEM PATH (options)"
|
25
|
+
|
26
|
+
def run
|
27
|
+
vault = @name_args[0]
|
28
|
+
item = @name_args[1]
|
29
|
+
path = @name_args[2]
|
30
|
+
|
31
|
+
set_mode(config[:vault_mode])
|
32
|
+
|
33
|
+
if vault && item && path
|
34
|
+
vault_item = ChefVault::Item.load(vault, item)
|
35
|
+
File.open(path, "w") do |file|
|
36
|
+
file.write(vault_item['file-content'])
|
37
|
+
end
|
38
|
+
ui.info("Saved #{vault_item['file-name']} as #{path}")
|
39
|
+
else
|
40
|
+
show_usage
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -44,6 +44,10 @@ class Chef
|
|
44
44
|
:long => '--file FILE',
|
45
45
|
:description => 'File to be added to vault item as file-content'
|
46
46
|
|
47
|
+
option :clean,
|
48
|
+
:long => '--clean',
|
49
|
+
:description => 'Clean clients before performing search'
|
50
|
+
|
47
51
|
def run
|
48
52
|
vault = @name_args[0]
|
49
53
|
item = @name_args[1]
|
@@ -51,6 +55,7 @@ class Chef
|
|
51
55
|
search = config[:search]
|
52
56
|
json_file = config[:json]
|
53
57
|
file = config[:file]
|
58
|
+
clean = config[:clean]
|
54
59
|
|
55
60
|
set_mode(config[:vault_mode])
|
56
61
|
|
@@ -67,6 +72,13 @@ class Chef
|
|
67
72
|
vault_item["file-content"] = File.open(file) { |f| f.read() }
|
68
73
|
end
|
69
74
|
|
75
|
+
if clean
|
76
|
+
clients = vault_item.clients().clone().sort()
|
77
|
+
clients.each do |client|
|
78
|
+
print "Deleting #{client}\n"
|
79
|
+
vault_item.keys.delete(client, "clients")
|
80
|
+
end
|
81
|
+
end
|
70
82
|
vault_item.search(search) if search
|
71
83
|
vault_item.clients(search) if search
|
72
84
|
vault_item.admins(admins) if admins
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ChefVault::Certificate do
|
4
|
+
let(:item) { double(ChefVault::Item) }
|
5
|
+
let(:cert) { ChefVault::Certificate.new("foo", "bar") }
|
6
|
+
|
7
|
+
before do
|
8
|
+
allow(ChefVault::Item).to receive(:load).with("foo", "bar"){ item }
|
9
|
+
allow(item).to receive(:[]).with("id"){ "bar" }
|
10
|
+
allow(item).to receive(:[]).with("contents"){ "baz" }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#new' do
|
14
|
+
it 'loads item' do
|
15
|
+
expect(ChefVault::Item).to receive(:load).with("foo", "bar")
|
16
|
+
|
17
|
+
ChefVault::Certificate.new("foo", "bar")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#[]' do
|
22
|
+
specify { cert["id"].should eq "bar" }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'decrypt_contents' do
|
26
|
+
|
27
|
+
it 'echoes warning' do
|
28
|
+
STDOUT.should_receive(:puts).with("WARNING: This method is deprecated, please switch to item['value'] calls")
|
29
|
+
|
30
|
+
cert.decrypt_contents
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'returns items contents' do
|
34
|
+
expect(item).to receive(:[]).with("contents")
|
35
|
+
|
36
|
+
cert.decrypt_contents.should eq "baz"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ChefVault::User do
|
4
|
+
let(:item) { double(ChefVault::Item) }
|
5
|
+
let(:user) { ChefVault::User.new("foo", "bar") }
|
6
|
+
|
7
|
+
before do
|
8
|
+
allow(ChefVault::Item).to receive(:load).with("foo", "bar"){ item }
|
9
|
+
allow(item).to receive(:[]).with("id"){ "bar" }
|
10
|
+
allow(item).to receive(:[]).with("password"){ "baz" }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#new' do
|
14
|
+
it 'loads item' do
|
15
|
+
expect(ChefVault::Item).to receive(:load).with("foo", "bar")
|
16
|
+
|
17
|
+
ChefVault::User.new("foo", "bar")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#[]' do
|
22
|
+
specify { user["id"].should eq "bar" }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'decrypt_password' do
|
26
|
+
|
27
|
+
it 'echoes warning' do
|
28
|
+
STDOUT.should_receive(:puts).with("WARNING: This method is deprecated, please switch to item['value'] calls")
|
29
|
+
|
30
|
+
user.decrypt_password
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'returns items password' do
|
34
|
+
expect(item).to receive(:[]).with("password")
|
35
|
+
|
36
|
+
user.decrypt_password.should eq "baz"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require_relative '../lib/chef-vault'
|
2
2
|
|
3
|
+
require 'rspec/its'
|
4
|
+
|
3
5
|
# This file was generated by the `rspec --init` command. Conventionally, all
|
4
6
|
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
5
7
|
# Require this file using `require "spec_helper"` to ensure that it is only
|
metadata
CHANGED
@@ -1,80 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-vault
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kevin Moser
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.3'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.3'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '2.14'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '2.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-its
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: aruba
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.6'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.6'
|
62
83
|
- !ruby/object:Gem::Dependency
|
63
84
|
name: chef
|
64
85
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
86
|
requirements:
|
67
|
-
- -
|
87
|
+
- - ">="
|
68
88
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
89
|
+
version: 0.10.10
|
70
90
|
type: :development
|
71
91
|
prerelease: false
|
72
92
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
93
|
requirements:
|
75
|
-
- -
|
94
|
+
- - ">="
|
76
95
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
96
|
+
version: 0.10.10
|
78
97
|
description: Data encryption support for Chef using data bags
|
79
98
|
email:
|
80
99
|
- kevin.moser@nordstrom.com
|
@@ -83,9 +102,9 @@ executables:
|
|
83
102
|
extensions: []
|
84
103
|
extra_rdoc_files: []
|
85
104
|
files:
|
86
|
-
- .gitignore
|
87
|
-
- .rspec
|
88
|
-
- .travis.yml
|
105
|
+
- ".gitignore"
|
106
|
+
- ".rspec"
|
107
|
+
- ".travis.yml"
|
89
108
|
- CONTRIBUTING.md
|
90
109
|
- Changelog.md
|
91
110
|
- DEMO.md
|
@@ -96,6 +115,10 @@ files:
|
|
96
115
|
- Rakefile
|
97
116
|
- bin/chef-vault
|
98
117
|
- chef-vault.gemspec
|
118
|
+
- features/clean.feature
|
119
|
+
- features/step_definitions/chef-repo.rb
|
120
|
+
- features/step_definitions/chef-vault.rb
|
121
|
+
- features/support/env.rb
|
99
122
|
- lib/chef-vault.rb
|
100
123
|
- lib/chef-vault/certificate.rb
|
101
124
|
- lib/chef-vault/chef_patch/api_client.rb
|
@@ -118,6 +141,7 @@ files:
|
|
118
141
|
- lib/chef/knife/vault_create.rb
|
119
142
|
- lib/chef/knife/vault_decrypt.rb
|
120
143
|
- lib/chef/knife/vault_delete.rb
|
144
|
+
- lib/chef/knife/vault_download.rb
|
121
145
|
- lib/chef/knife/vault_edit.rb
|
122
146
|
- lib/chef/knife/vault_refresh.rb
|
123
147
|
- lib/chef/knife/vault_remove.rb
|
@@ -125,33 +149,35 @@ files:
|
|
125
149
|
- lib/chef/knife/vault_rotate_keys.rb
|
126
150
|
- lib/chef/knife/vault_show.rb
|
127
151
|
- lib/chef/knife/vault_update.rb
|
152
|
+
- spec/chef-vault/certificate_spec.rb
|
153
|
+
- spec/chef-vault/item_keys_spec.rb
|
154
|
+
- spec/chef-vault/item_spec.rb
|
155
|
+
- spec/chef-vault/user_spec.rb
|
128
156
|
- spec/chef-vault_spec.rb
|
129
|
-
- spec/item_keys_spec.rb
|
130
|
-
- spec/item_spec.rb
|
131
157
|
- spec/spec_helper.rb
|
132
158
|
homepage: https://github.com/Nordstrom/chef-vault
|
133
159
|
licenses:
|
134
160
|
- Apache License, v2.0
|
161
|
+
metadata: {}
|
135
162
|
post_install_message:
|
136
163
|
rdoc_options: []
|
137
164
|
require_paths:
|
138
165
|
- lib
|
139
166
|
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
-
none: false
|
141
167
|
requirements:
|
142
|
-
- -
|
168
|
+
- - ">="
|
143
169
|
- !ruby/object:Gem::Version
|
144
170
|
version: '0'
|
145
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
172
|
requirements:
|
148
|
-
- -
|
173
|
+
- - ">="
|
149
174
|
- !ruby/object:Gem::Version
|
150
175
|
version: '0'
|
151
176
|
requirements: []
|
152
177
|
rubyforge_project:
|
153
|
-
rubygems_version:
|
178
|
+
rubygems_version: 2.4.1
|
154
179
|
signing_key:
|
155
|
-
specification_version:
|
180
|
+
specification_version: 4
|
156
181
|
summary: Data encryption support for Chef using data bags
|
157
182
|
test_files: []
|
183
|
+
has_rdoc: true
|