chef-sugar-ng 4.2.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.
- checksums.yaml +7 -0
- data/.github/lock.yml +3 -0
- data/.github/reaction.yml +1 -0
- data/.gitignore +26 -0
- data/.kitchen.yml +16 -0
- data/.travis.yml +17 -0
- data/CHANGELOG.md +261 -0
- data/CONTRIBUTING.md +20 -0
- data/Gemfile +2 -0
- data/LICENSE +201 -0
- data/README.md +540 -0
- data/Rakefile +11 -0
- data/chef-sugar-ng.gemspec +33 -0
- data/lib/chef/sugar.rb +51 -0
- data/lib/chef/sugar/architecture.rb +171 -0
- data/lib/chef/sugar/cloud.rb +192 -0
- data/lib/chef/sugar/constraints.rb +108 -0
- data/lib/chef/sugar/constraints_dsl.rb +83 -0
- data/lib/chef/sugar/core_extensions.rb +19 -0
- data/lib/chef/sugar/core_extensions/array.rb +34 -0
- data/lib/chef/sugar/core_extensions/object.rb +27 -0
- data/lib/chef/sugar/core_extensions/string.rb +66 -0
- data/lib/chef/sugar/data_bag.rb +146 -0
- data/lib/chef/sugar/docker.rb +40 -0
- data/lib/chef/sugar/filters.rb +227 -0
- data/lib/chef/sugar/init.rb +62 -0
- data/lib/chef/sugar/ip.rb +48 -0
- data/lib/chef/sugar/kernel.rb +49 -0
- data/lib/chef/sugar/kitchen.rb +40 -0
- data/lib/chef/sugar/node.rb +213 -0
- data/lib/chef/sugar/platform.rb +327 -0
- data/lib/chef/sugar/platform_family.rb +179 -0
- data/lib/chef/sugar/ruby.rb +51 -0
- data/lib/chef/sugar/run_context.rb +41 -0
- data/lib/chef/sugar/shell.rb +147 -0
- data/lib/chef/sugar/vagrant.rb +77 -0
- data/lib/chef/sugar/version.rb +21 -0
- data/lib/chef/sugar/virtualization.rb +151 -0
- data/libraries/chef-sugar.rb +1 -0
- data/metadata.rb +24 -0
- data/recipes/default.rb +20 -0
- data/spec/spec_helper.rb +25 -0
- data/spec/support/shared_examples.rb +20 -0
- data/spec/unit/chef/sugar/architecture_spec.rb +129 -0
- data/spec/unit/chef/sugar/cloud_spec.rb +149 -0
- data/spec/unit/chef/sugar/constraints_spec.rb +45 -0
- data/spec/unit/chef/sugar/core_extensions/array_spec.rb +10 -0
- data/spec/unit/chef/sugar/core_extensions/object_spec.rb +62 -0
- data/spec/unit/chef/sugar/core_extensions/string_spec.rb +48 -0
- data/spec/unit/chef/sugar/data_bag_spec.rb +118 -0
- data/spec/unit/chef/sugar/docker_spec.rb +39 -0
- data/spec/unit/chef/sugar/init_spec.rb +74 -0
- data/spec/unit/chef/sugar/ip_spec.rb +53 -0
- data/spec/unit/chef/sugar/kernel_spec.rb +16 -0
- data/spec/unit/chef/sugar/kitchen_spec.rb +18 -0
- data/spec/unit/chef/sugar/node_spec.rb +172 -0
- data/spec/unit/chef/sugar/platform_family_spec.rb +166 -0
- data/spec/unit/chef/sugar/platform_spec.rb +342 -0
- data/spec/unit/chef/sugar/ruby_spec.rb +39 -0
- data/spec/unit/chef/sugar/run_context_spec.rb +19 -0
- data/spec/unit/chef/sugar/shell_spec.rb +104 -0
- data/spec/unit/chef/sugar/vagrant_spec.rb +37 -0
- data/spec/unit/chef/sugar/virtualization_spec.rb +135 -0
- data/spec/unit/recipes/default_spec.rb +9 -0
- metadata +202 -0
@@ -0,0 +1,108 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
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
|
+
|
17
|
+
class Chef
|
18
|
+
module Sugar
|
19
|
+
module Constraints
|
20
|
+
#
|
21
|
+
# This class is a wrapper around a version requirement that adds a nice
|
22
|
+
# DSL for comparing constraints:
|
23
|
+
#
|
24
|
+
# @example Comparing a single constraint
|
25
|
+
# Constraint.new('~> 1.2.3').satisfied_by?('1.2.7')
|
26
|
+
#
|
27
|
+
# @example Comparing multiple constraints
|
28
|
+
# Constraint.new('> 1.2.3', '< 2.0.0').satisfied_by?('1.2.7')
|
29
|
+
#
|
30
|
+
class Constraint
|
31
|
+
#
|
32
|
+
# Create a new constraint object.
|
33
|
+
#
|
34
|
+
# @param [String, Array<String>] constraints
|
35
|
+
# the list of constraints
|
36
|
+
#
|
37
|
+
def initialize(*constraints)
|
38
|
+
@requirement = Gem::Requirement.new(*constraints)
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Determine if the given version string is satisfied by this constraint
|
43
|
+
# or group of constraints.
|
44
|
+
#
|
45
|
+
# @example Given a satisified constraint
|
46
|
+
# Constraint.new('~> 1.2.0').satisfied_by?('1.2.5') #=> true
|
47
|
+
#
|
48
|
+
# @example Given an unsatisfied constraint
|
49
|
+
# Constraint.new('~> 1.2.0').satisfied_by?('2.0.0') #=> false
|
50
|
+
#
|
51
|
+
#
|
52
|
+
# @param [String] version
|
53
|
+
# the version to compare
|
54
|
+
#
|
55
|
+
# @return [Boolean]
|
56
|
+
# true if the constraint is satisfied, false otherwise
|
57
|
+
#
|
58
|
+
def satisfied_by?(version)
|
59
|
+
@requirement.satisfied_by?(Gem::Version.new(version))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
#
|
64
|
+
# This class exposes a single version constraint object that wraps the
|
65
|
+
# string representation of a version string and proved helpful comparator
|
66
|
+
# methods.
|
67
|
+
#
|
68
|
+
# @example Create a new version
|
69
|
+
# Chef::Sugar::Version('1.2.3')
|
70
|
+
#
|
71
|
+
# @example Compare a version with constraints
|
72
|
+
# Chef::Sugar::Version('1.2.3').satisfies?('~> 1.3.4', '< 2.0.5')
|
73
|
+
#
|
74
|
+
class Version < String
|
75
|
+
#
|
76
|
+
# Create a new version object.
|
77
|
+
#
|
78
|
+
# @param [String] version
|
79
|
+
# the version to create
|
80
|
+
#
|
81
|
+
def initialize(version)
|
82
|
+
super
|
83
|
+
@version = Gem::Version.new(version)
|
84
|
+
end
|
85
|
+
|
86
|
+
#
|
87
|
+
# Determine if the given constraint is satisfied by this version.
|
88
|
+
#
|
89
|
+
# @example Given a satisified version
|
90
|
+
# Version.new('1.2.5').satisfies?('~> 1.2.0') #=> true
|
91
|
+
#
|
92
|
+
# @example Given an unsatisfied version
|
93
|
+
# Version.new('2.0.0').satisfies?('~> 1.2.0') #=> false
|
94
|
+
#
|
95
|
+
#
|
96
|
+
# @param [String, Array<String>] constraints
|
97
|
+
# the constraints to satisfy
|
98
|
+
#
|
99
|
+
# @return [Boolean]
|
100
|
+
# true if the version satisfies the constraints, false otherwise
|
101
|
+
#
|
102
|
+
def satisfies?(*constraints)
|
103
|
+
Gem::Requirement.new(*constraints).satisfied_by?(@version)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
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
|
+
|
17
|
+
require_relative 'constraints'
|
18
|
+
|
19
|
+
class Chef
|
20
|
+
module Sugar
|
21
|
+
#
|
22
|
+
# The Constraints DSL methods were broken out into this separate
|
23
|
+
# file to allow projects (such as Omnibus) to consume the
|
24
|
+
# Chef::Sugar::Constraints classes without the DSL methods
|
25
|
+
# stepping on existing methods of the same name.
|
26
|
+
#
|
27
|
+
module Constraints
|
28
|
+
extend self
|
29
|
+
|
30
|
+
#
|
31
|
+
# Shortcut method for creating a new {Version} object.
|
32
|
+
#
|
33
|
+
# @param [String] version
|
34
|
+
# the version (as a string) to create
|
35
|
+
#
|
36
|
+
# @return [Chef::Sugar::Constraints::Version]
|
37
|
+
# the new version object
|
38
|
+
#
|
39
|
+
def version(version)
|
40
|
+
Chef::Sugar::Constraints::Version.new(version)
|
41
|
+
end
|
42
|
+
|
43
|
+
#
|
44
|
+
# Shortcut method for creating a new {Constraint} object.
|
45
|
+
#
|
46
|
+
# @param [String, Array<String>] constraints
|
47
|
+
# the list of constraints to use
|
48
|
+
#
|
49
|
+
# @return [Chef::Sugar::Constraints::Constraint]
|
50
|
+
# the new constraint object
|
51
|
+
#
|
52
|
+
def constraint(*constraints)
|
53
|
+
Chef::Sugar::Constraints::Constraint.new(*constraints)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
module DSL
|
58
|
+
# @see Chef::Sugar::Constraints#version
|
59
|
+
def version(version)
|
60
|
+
Chef::Sugar::Constraints::Version.new(version)
|
61
|
+
end
|
62
|
+
|
63
|
+
# @see Chef::Sugar::Constraints#constraint
|
64
|
+
def constraint(*constraints)
|
65
|
+
Chef::Sugar::Constraints.constraint(*constraints)
|
66
|
+
end
|
67
|
+
|
68
|
+
#
|
69
|
+
# This wrapper/convenience method is only available in the recipe DSL. It
|
70
|
+
# creates a new version object from the {Chef::VERSION}.
|
71
|
+
#
|
72
|
+
# @example Check if Chef 11+
|
73
|
+
# chef_version.satisfies?('>= 11.0.0')
|
74
|
+
#
|
75
|
+
# @return [Chef::Sugar::Constraints::Version]
|
76
|
+
# a version object, wrapping the current {Chef::VERSION}
|
77
|
+
#
|
78
|
+
def chef_version
|
79
|
+
version(Chef::VERSION)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
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
|
+
|
17
|
+
require_relative 'core_extensions/array'
|
18
|
+
require_relative 'core_extensions/string'
|
19
|
+
require_relative 'core_extensions/object'
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
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
|
+
|
17
|
+
require_relative '../constraints'
|
18
|
+
|
19
|
+
class Array
|
20
|
+
#
|
21
|
+
# Treat an array of objects as version constraints.
|
22
|
+
#
|
23
|
+
# @see Chef::Sugar::Constraints::Constraint
|
24
|
+
#
|
25
|
+
# @example Using pure Array<String> objects like constraints
|
26
|
+
# ['> 2.0.0', '< 3.0.0'].satisfied_by?('2.1.0')
|
27
|
+
#
|
28
|
+
# @param [String] version
|
29
|
+
# the version to check if it is satisfied
|
30
|
+
#
|
31
|
+
def satisfied_by?(version)
|
32
|
+
Chef::Sugar::Constraints::Constraint.new(*dup).satisfied_by?(version)
|
33
|
+
end unless method_defined?(:satisfied_by?)
|
34
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
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
|
+
|
17
|
+
class Object
|
18
|
+
# An object is blank if it's false, empty, or a whitespace string.
|
19
|
+
# This is implemented in rails.
|
20
|
+
#
|
21
|
+
# @example foo.nil? || foo.empty? can be replaced by foo.blank?
|
22
|
+
#
|
23
|
+
# @return [true, false]
|
24
|
+
def blank?
|
25
|
+
respond_to?(:empty?) ? empty? : !self
|
26
|
+
end unless method_defined?(:blank?)
|
27
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
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
|
+
|
17
|
+
# require_relative '../constraints'
|
18
|
+
|
19
|
+
class String
|
20
|
+
#
|
21
|
+
# Treat strings as version objects.
|
22
|
+
#
|
23
|
+
# @see Chef::Sugar::Constraints::Version
|
24
|
+
#
|
25
|
+
# @example Using pure string objects like versions
|
26
|
+
# '1.2.3'.satisfies?('~> 1.2.0')
|
27
|
+
#
|
28
|
+
# @param [String, Array<String>] constraints
|
29
|
+
# the list of constraints to satisfy
|
30
|
+
#
|
31
|
+
def satisfies?(*constraints)
|
32
|
+
Chef::Sugar::Constraints::Version.new(dup).satisfies?(*constraints)
|
33
|
+
end unless method_defined?(:satisfies?)
|
34
|
+
|
35
|
+
#
|
36
|
+
# Treat strings as version constraints.
|
37
|
+
#
|
38
|
+
# @see Chef::Sugar::Constraints::Constraint
|
39
|
+
#
|
40
|
+
# @example Using pure string objects like constraints
|
41
|
+
# '~> 1.2.0'.satisfied_by?('1.2.3')
|
42
|
+
#
|
43
|
+
# @param [String] version
|
44
|
+
# the version to check if it is satisfied
|
45
|
+
#
|
46
|
+
def satisfied_by?(version)
|
47
|
+
Chef::Sugar::Constraints::Constraint.new(dup).satisfied_by?(version)
|
48
|
+
end unless method_defined?(:satisfied_by?)
|
49
|
+
|
50
|
+
#
|
51
|
+
# Left-flush a string based off of the number of whitespace characters on the
|
52
|
+
# first line. This is especially useful for heredocs when whitespace matters.
|
53
|
+
#
|
54
|
+
# @example Remove leading whitespace and flush
|
55
|
+
# <<-EOH.flush
|
56
|
+
# def method
|
57
|
+
# 'This is a string!'
|
58
|
+
# end
|
59
|
+
# EOH #=>"def method\n 'This is a string!'\nend"
|
60
|
+
#
|
61
|
+
# @return [String]
|
62
|
+
#
|
63
|
+
def flush
|
64
|
+
gsub(/^#{self[/\A\s*/]}/, '').chomp
|
65
|
+
end unless method_defined?(:flush)
|
66
|
+
end
|
@@ -0,0 +1,146 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
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
|
+
|
17
|
+
class Chef
|
18
|
+
module Sugar
|
19
|
+
module DataBag
|
20
|
+
class EncryptedDataBagSecretNotGiven < StandardError
|
21
|
+
def initialize
|
22
|
+
super <<-EOH
|
23
|
+
You did not set your `encrypted_data_bag_secret'! In order to use the
|
24
|
+
`encrypted_data_bag_item' helper, you must load your encrypted data bag secret
|
25
|
+
into the `Chef::Config'.
|
26
|
+
|
27
|
+
Alternatively, you can pass the secret key as the last parameter to the method
|
28
|
+
call. For more information, please see
|
29
|
+
http://docs.opscode.com/chef/essentials_data_bags.html#access-from-recipe.
|
30
|
+
EOH
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
extend self
|
35
|
+
|
36
|
+
#
|
37
|
+
# Helper method for loading an encrypted data bag item in a similar
|
38
|
+
# syntax/recipe DSL method.
|
39
|
+
#
|
40
|
+
# @param [String] bag
|
41
|
+
# the name of the encrypted data bag
|
42
|
+
# @param [String] id
|
43
|
+
# the id of the encrypted data bag
|
44
|
+
# @param [String] secret
|
45
|
+
# the encrypted data bag secret raw value
|
46
|
+
#
|
47
|
+
# @return [Hash]
|
48
|
+
#
|
49
|
+
def encrypted_data_bag_item(bag, id, secret = nil)
|
50
|
+
Chef::Log.debug "Loading encrypted data bag item #{bag}/#{id}"
|
51
|
+
|
52
|
+
if secret.nil? && Chef::Config[:encrypted_data_bag_secret].nil?
|
53
|
+
raise EncryptedDataBagSecretNotGiven.new
|
54
|
+
end
|
55
|
+
|
56
|
+
secret ||= File.read(Chef::Config[:encrypted_data_bag_secret]).strip
|
57
|
+
Chef::EncryptedDataBagItem.load(bag, id, secret)
|
58
|
+
end
|
59
|
+
|
60
|
+
#
|
61
|
+
# This algorithm attempts to find the data bag entry for the current
|
62
|
+
# node's Chef environment. If there are no environment-specific
|
63
|
+
# values, the "default" bucket is used. The data bag must follow the
|
64
|
+
# schema:
|
65
|
+
#
|
66
|
+
# {
|
67
|
+
# "default": {...},
|
68
|
+
# "environment_name": {...},
|
69
|
+
# "other_environment": {...},
|
70
|
+
# }
|
71
|
+
#
|
72
|
+
# @param [Node] node
|
73
|
+
# the current Chef node
|
74
|
+
# @param [String] bag
|
75
|
+
# the name of the encrypted data bag
|
76
|
+
# @param [String] id
|
77
|
+
# the id of the encrypted data bag
|
78
|
+
# @param [String] secret
|
79
|
+
# the encrypted data bag secret (default's to the +Chef::Config+ value)
|
80
|
+
#
|
81
|
+
# @return [Hash]
|
82
|
+
#
|
83
|
+
def encrypted_data_bag_item_for_environment(node, bag, id, secret = nil)
|
84
|
+
data = encrypted_data_bag_item(bag, id, secret)
|
85
|
+
|
86
|
+
if data[node.chef_environment]
|
87
|
+
Chef::Log.debug "Using #{node.chef_environment} as the key"
|
88
|
+
data[node.chef_environment]
|
89
|
+
else
|
90
|
+
Chef::Log.debug "#{node.chef_environment} key does not exist, using `default`"
|
91
|
+
data['default']
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# This algorithm attempts to find the data bag entry for the current
|
97
|
+
# node's Chef environment. If there are no environment-specific
|
98
|
+
# values, the "default" bucket is used. The data bag must follow the
|
99
|
+
# schema:
|
100
|
+
#
|
101
|
+
# {
|
102
|
+
# "default": {...},
|
103
|
+
# "environment_name": {...},
|
104
|
+
# "other_environment": {...},
|
105
|
+
# }
|
106
|
+
#
|
107
|
+
# @param [Node] node
|
108
|
+
# the current Chef node
|
109
|
+
# @param [String] bag
|
110
|
+
# the name of the data bag
|
111
|
+
# @param [String] id
|
112
|
+
# the id of the data bag
|
113
|
+
#
|
114
|
+
# @return [Hash]
|
115
|
+
#
|
116
|
+
def data_bag_item_for_environment(node, bag, id)
|
117
|
+
data = Chef::DataBagItem.load(bag, id)
|
118
|
+
|
119
|
+
if data[node.chef_environment]
|
120
|
+
Chef::Log.debug "Using #{node.chef_environment} as the key"
|
121
|
+
data[node.chef_environment]
|
122
|
+
else
|
123
|
+
Chef::Log.debug "#{node.chef_environment} key does not exist, using `default`"
|
124
|
+
data['default']
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
module DSL
|
130
|
+
# @see Chef::Sugar::DataBag#encrypted_data_bag_item
|
131
|
+
def encrypted_data_bag_item(bag, id, secret = nil)
|
132
|
+
Chef::Sugar::DataBag.encrypted_data_bag_item(bag, id, secret)
|
133
|
+
end
|
134
|
+
|
135
|
+
# @see Chef::Sugar::DataBag#encrypted_data_bag_item_for_environment
|
136
|
+
def encrypted_data_bag_item_for_environment(bag, id, secret = nil)
|
137
|
+
Chef::Sugar::DataBag.encrypted_data_bag_item_for_environment(node, bag, id, secret)
|
138
|
+
end
|
139
|
+
|
140
|
+
# @see Chef::Sugar::DataBag#data_bag_item_for_environment
|
141
|
+
def data_bag_item_for_environment(bag, id)
|
142
|
+
Chef::Sugar::DataBag.data_bag_item_for_environment(node, bag, id)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|