chef-provisioning 2.0.0 → 2.0.1
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 +4 -4
- data/CHANGELOG.md +899 -885
- data/Gemfile +17 -17
- data/LICENSE +201 -201
- data/README.md +312 -312
- data/Rakefile +55 -55
- data/chef-provisioning.gemspec +38 -38
- data/lib/chef/provider/load_balancer.rb +75 -75
- data/lib/chef/provider/machine.rb +219 -219
- data/lib/chef/provider/machine_batch.rb +224 -224
- data/lib/chef/provider/machine_execute.rb +36 -35
- data/lib/chef/provider/machine_file.rb +55 -55
- data/lib/chef/provider/machine_image.rb +105 -105
- data/lib/chef/provisioning.rb +110 -110
- data/lib/chef/provisioning/action_handler.rb +68 -68
- data/lib/chef/provisioning/add_prefix_action_handler.rb +35 -35
- data/lib/chef/provisioning/chef_managed_entry_store.rb +128 -128
- data/lib/chef/provisioning/chef_provider_action_handler.rb +74 -74
- data/lib/chef/provisioning/chef_run_data.rb +132 -132
- data/lib/chef/provisioning/convergence_strategy.rb +28 -28
- data/lib/chef/provisioning/convergence_strategy/ignore_convergence_failure.rb +54 -54
- data/lib/chef/provisioning/convergence_strategy/install_cached.rb +188 -188
- data/lib/chef/provisioning/convergence_strategy/install_msi.rb +71 -71
- data/lib/chef/provisioning/convergence_strategy/install_sh.rb +71 -71
- data/lib/chef/provisioning/convergence_strategy/no_converge.rb +35 -35
- data/lib/chef/provisioning/convergence_strategy/precreate_chef_objects.rb +255 -255
- data/lib/chef/provisioning/driver.rb +323 -323
- data/lib/chef/provisioning/load_balancer_spec.rb +14 -14
- data/lib/chef/provisioning/machine.rb +112 -112
- data/lib/chef/provisioning/machine/basic_machine.rb +84 -84
- data/lib/chef/provisioning/machine/unix_machine.rb +288 -288
- data/lib/chef/provisioning/machine/windows_machine.rb +108 -108
- data/lib/chef/provisioning/machine_image_spec.rb +34 -34
- data/lib/chef/provisioning/machine_spec.rb +58 -58
- data/lib/chef/provisioning/managed_entry.rb +121 -121
- data/lib/chef/provisioning/managed_entry_store.rb +136 -136
- data/lib/chef/provisioning/recipe_dsl.rb +99 -99
- data/lib/chef/provisioning/rspec.rb +27 -27
- data/lib/chef/provisioning/transport.rb +100 -100
- data/lib/chef/provisioning/transport/ssh.rb +403 -403
- data/lib/chef/provisioning/transport/winrm.rb +144 -156
- data/lib/chef/provisioning/version.rb +5 -5
- data/lib/chef/resource/chef_data_bag_resource.rb +146 -146
- data/lib/chef/resource/load_balancer.rb +57 -57
- data/lib/chef/resource/machine.rb +128 -128
- data/lib/chef/resource/machine_batch.rb +78 -78
- data/lib/chef/resource/machine_execute.rb +30 -29
- data/lib/chef/resource/machine_file.rb +34 -34
- data/lib/chef/resource/machine_image.rb +35 -35
- data/lib/chef_metal.rb +1 -1
- data/spec/chef/provisioning/convergence_strategy/ignore_convergence_failure_spec.rb +86 -86
- data/spec/spec_helper.rb +27 -27
- metadata +5 -5
@@ -1,136 +1,136 @@
|
|
1
|
-
require 'chef/provisioning/load_balancer_spec'
|
2
|
-
require 'chef/provisioning/machine_spec'
|
3
|
-
require 'chef/provisioning/machine_image_spec'
|
4
|
-
require 'chef/provisioning/managed_entry'
|
5
|
-
|
6
|
-
class Chef
|
7
|
-
module Provisioning
|
8
|
-
class ManagedEntryStore
|
9
|
-
def initialize(chef_run_data)
|
10
|
-
@chef_run_data = chef_run_data
|
11
|
-
end
|
12
|
-
|
13
|
-
#
|
14
|
-
# Get the given data
|
15
|
-
#
|
16
|
-
# @param resource_type [Symbol] The type of thing to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
17
|
-
# @param name [String] The unique identifier of the thing to retrieve
|
18
|
-
#
|
19
|
-
# @return [Hash,Array] The data. Will be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
|
20
|
-
#
|
21
|
-
def get_data(resource_type, name)
|
22
|
-
raise NotImplementedError, :get_data
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# Save the given data
|
27
|
-
#
|
28
|
-
# @param resource_type [Symbol] The type of thing to save (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet ...)
|
29
|
-
# @param name [String] The unique identifier of the thing to save
|
30
|
-
# @param data [Hash,Array] The data to save. Must be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
|
31
|
-
#
|
32
|
-
def save_data(resource_type, name, data, action_handler)
|
33
|
-
raise NotImplementedError, :save_data
|
34
|
-
end
|
35
|
-
|
36
|
-
#
|
37
|
-
# Delete the given data
|
38
|
-
#
|
39
|
-
# @param resource_type [Symbol] The type of thing to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
40
|
-
# @param name [String] The unique identifier of the thing to delete
|
41
|
-
#
|
42
|
-
# @return [Boolean] Whether anything was deleted or not.
|
43
|
-
#
|
44
|
-
def delete_data(resource_type, name, action_handler)
|
45
|
-
raise NotImplementedError, :delete_data
|
46
|
-
end
|
47
|
-
|
48
|
-
#
|
49
|
-
# Get a globally unique identifier for this resource.
|
50
|
-
#
|
51
|
-
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
52
|
-
# @param name [String] The unique identifier of the spec to retrieve
|
53
|
-
#
|
54
|
-
# @return [String] The identifier.
|
55
|
-
#
|
56
|
-
# @example ChefManagedEntry does this:
|
57
|
-
# chef_managed_entry_store.identifier(:machine, 'mario') # => https://my.chef.server/organizations/org/nodes/mario
|
58
|
-
#
|
59
|
-
def identifier(resource_type, name)
|
60
|
-
raise NotImplementedError, :identifier
|
61
|
-
end
|
62
|
-
|
63
|
-
#
|
64
|
-
# Get a spec.
|
65
|
-
#
|
66
|
-
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
67
|
-
# @param name [String] The unique identifier of the spec to retrieve
|
68
|
-
#
|
69
|
-
# @return [ManagedEntry] The entry, or `nil` if the data does not exist.
|
70
|
-
#
|
71
|
-
def get(resource_type, name)
|
72
|
-
data = get_data(resource_type, name)
|
73
|
-
if data
|
74
|
-
new_entry(resource_type, name, data)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
#
|
79
|
-
# Get a spec, or create a new one, depending on whether an entry exists.
|
80
|
-
#
|
81
|
-
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
82
|
-
# @param name [String] The unique identifier of the spec to retrieve
|
83
|
-
#
|
84
|
-
# @return [ManagedEntry] The entry.
|
85
|
-
#
|
86
|
-
def get_or_new(resource_type, name)
|
87
|
-
data = get_data(resource_type, name)
|
88
|
-
new_entry(resource_type, name, data)
|
89
|
-
end
|
90
|
-
|
91
|
-
#
|
92
|
-
# Get a spec, erroring out if the data does not exist.
|
93
|
-
#
|
94
|
-
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
95
|
-
# @param name [String] The unique identifier of the spec to retrieve
|
96
|
-
#
|
97
|
-
# @return [ManagedEntry] The entry.
|
98
|
-
#
|
99
|
-
def get!(resource_type, name)
|
100
|
-
result = get(resource_type, name)
|
101
|
-
if !result
|
102
|
-
raise "#{identifier(resource_type, name)} not found!"
|
103
|
-
end
|
104
|
-
result
|
105
|
-
end
|
106
|
-
|
107
|
-
#
|
108
|
-
# Delete the given spec.
|
109
|
-
#
|
110
|
-
# @param resource_type [Symbol] The type of spec to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
111
|
-
# @param name [String] The unique identifier of the spec to delete
|
112
|
-
#
|
113
|
-
# @return [Boolean] Whether anything was deleted or not.
|
114
|
-
#
|
115
|
-
def delete(resource_type, name, action_handler)
|
116
|
-
delete_data(resource_type, name, action_handler)
|
117
|
-
end
|
118
|
-
|
119
|
-
#
|
120
|
-
# Create a new managed entry of the given type.
|
121
|
-
#
|
122
|
-
def new_entry(resource_type, name, data=nil)
|
123
|
-
case resource_type
|
124
|
-
when :machine
|
125
|
-
MachineSpec.new(self, resource_type, name, data)
|
126
|
-
when :machine_image
|
127
|
-
MachineImageSpec.new(self, resource_type, name, data)
|
128
|
-
when :load_balancer
|
129
|
-
LoadBalancerSpec.new(self, resource_type, name, data)
|
130
|
-
else
|
131
|
-
ManagedEntry.new(self, resource_type, name, data)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
1
|
+
require 'chef/provisioning/load_balancer_spec'
|
2
|
+
require 'chef/provisioning/machine_spec'
|
3
|
+
require 'chef/provisioning/machine_image_spec'
|
4
|
+
require 'chef/provisioning/managed_entry'
|
5
|
+
|
6
|
+
class Chef
|
7
|
+
module Provisioning
|
8
|
+
class ManagedEntryStore
|
9
|
+
def initialize(chef_run_data)
|
10
|
+
@chef_run_data = chef_run_data
|
11
|
+
end
|
12
|
+
|
13
|
+
#
|
14
|
+
# Get the given data
|
15
|
+
#
|
16
|
+
# @param resource_type [Symbol] The type of thing to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
17
|
+
# @param name [String] The unique identifier of the thing to retrieve
|
18
|
+
#
|
19
|
+
# @return [Hash,Array] The data. Will be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
|
20
|
+
#
|
21
|
+
def get_data(resource_type, name)
|
22
|
+
raise NotImplementedError, :get_data
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Save the given data
|
27
|
+
#
|
28
|
+
# @param resource_type [Symbol] The type of thing to save (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet ...)
|
29
|
+
# @param name [String] The unique identifier of the thing to save
|
30
|
+
# @param data [Hash,Array] The data to save. Must be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
|
31
|
+
#
|
32
|
+
def save_data(resource_type, name, data, action_handler)
|
33
|
+
raise NotImplementedError, :save_data
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Delete the given data
|
38
|
+
#
|
39
|
+
# @param resource_type [Symbol] The type of thing to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
40
|
+
# @param name [String] The unique identifier of the thing to delete
|
41
|
+
#
|
42
|
+
# @return [Boolean] Whether anything was deleted or not.
|
43
|
+
#
|
44
|
+
def delete_data(resource_type, name, action_handler)
|
45
|
+
raise NotImplementedError, :delete_data
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
# Get a globally unique identifier for this resource.
|
50
|
+
#
|
51
|
+
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
52
|
+
# @param name [String] The unique identifier of the spec to retrieve
|
53
|
+
#
|
54
|
+
# @return [String] The identifier.
|
55
|
+
#
|
56
|
+
# @example ChefManagedEntry does this:
|
57
|
+
# chef_managed_entry_store.identifier(:machine, 'mario') # => https://my.chef.server/organizations/org/nodes/mario
|
58
|
+
#
|
59
|
+
def identifier(resource_type, name)
|
60
|
+
raise NotImplementedError, :identifier
|
61
|
+
end
|
62
|
+
|
63
|
+
#
|
64
|
+
# Get a spec.
|
65
|
+
#
|
66
|
+
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
67
|
+
# @param name [String] The unique identifier of the spec to retrieve
|
68
|
+
#
|
69
|
+
# @return [ManagedEntry] The entry, or `nil` if the data does not exist.
|
70
|
+
#
|
71
|
+
def get(resource_type, name)
|
72
|
+
data = get_data(resource_type, name)
|
73
|
+
if data
|
74
|
+
new_entry(resource_type, name, data)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
#
|
79
|
+
# Get a spec, or create a new one, depending on whether an entry exists.
|
80
|
+
#
|
81
|
+
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
82
|
+
# @param name [String] The unique identifier of the spec to retrieve
|
83
|
+
#
|
84
|
+
# @return [ManagedEntry] The entry.
|
85
|
+
#
|
86
|
+
def get_or_new(resource_type, name)
|
87
|
+
data = get_data(resource_type, name)
|
88
|
+
new_entry(resource_type, name, data)
|
89
|
+
end
|
90
|
+
|
91
|
+
#
|
92
|
+
# Get a spec, erroring out if the data does not exist.
|
93
|
+
#
|
94
|
+
# @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
95
|
+
# @param name [String] The unique identifier of the spec to retrieve
|
96
|
+
#
|
97
|
+
# @return [ManagedEntry] The entry.
|
98
|
+
#
|
99
|
+
def get!(resource_type, name)
|
100
|
+
result = get(resource_type, name)
|
101
|
+
if !result
|
102
|
+
raise "#{identifier(resource_type, name)} not found!"
|
103
|
+
end
|
104
|
+
result
|
105
|
+
end
|
106
|
+
|
107
|
+
#
|
108
|
+
# Delete the given spec.
|
109
|
+
#
|
110
|
+
# @param resource_type [Symbol] The type of spec to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
|
111
|
+
# @param name [String] The unique identifier of the spec to delete
|
112
|
+
#
|
113
|
+
# @return [Boolean] Whether anything was deleted or not.
|
114
|
+
#
|
115
|
+
def delete(resource_type, name, action_handler)
|
116
|
+
delete_data(resource_type, name, action_handler)
|
117
|
+
end
|
118
|
+
|
119
|
+
#
|
120
|
+
# Create a new managed entry of the given type.
|
121
|
+
#
|
122
|
+
def new_entry(resource_type, name, data=nil)
|
123
|
+
case resource_type
|
124
|
+
when :machine
|
125
|
+
MachineSpec.new(self, resource_type, name, data)
|
126
|
+
when :machine_image
|
127
|
+
MachineImageSpec.new(self, resource_type, name, data)
|
128
|
+
when :load_balancer
|
129
|
+
LoadBalancerSpec.new(self, resource_type, name, data)
|
130
|
+
else
|
131
|
+
ManagedEntry.new(self, resource_type, name, data)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
@@ -1,99 +1,99 @@
|
|
1
|
-
require 'chef/provisioning/chef_run_data'
|
2
|
-
require 'chef/resource_collection'
|
3
|
-
require 'chef/resource/chef_data_bag_resource'
|
4
|
-
|
5
|
-
require 'chef/resource/machine'
|
6
|
-
require 'chef/provider/machine'
|
7
|
-
require 'chef/resource/machine_batch'
|
8
|
-
require 'chef/provider/machine_batch'
|
9
|
-
require 'chef/resource/machine_file'
|
10
|
-
require 'chef/provider/machine_file'
|
11
|
-
require 'chef/resource/machine_execute'
|
12
|
-
require 'chef/provider/machine_execute'
|
13
|
-
require 'chef/resource/machine_image'
|
14
|
-
require 'chef/provider/machine_image'
|
15
|
-
require 'chef/resource/load_balancer'
|
16
|
-
require 'chef/provider/load_balancer'
|
17
|
-
|
18
|
-
class Chef
|
19
|
-
module DSL
|
20
|
-
module Recipe
|
21
|
-
|
22
|
-
def with_driver(driver, options = nil, &block)
|
23
|
-
run_context.chef_provisioning.with_driver(driver, options, &block)
|
24
|
-
end
|
25
|
-
|
26
|
-
def with_machine_options(machine_options, &block)
|
27
|
-
run_context.chef_provisioning.with_machine_options(machine_options, &block)
|
28
|
-
end
|
29
|
-
|
30
|
-
def current_machine_options
|
31
|
-
run_context.chef_provisioning.current_machine_options
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_machine_options(options, &block)
|
35
|
-
run_context.chef_provisioning.add_machine_options(options, &block)
|
36
|
-
end
|
37
|
-
|
38
|
-
def with_image_options(image_options, &block)
|
39
|
-
run_context.chef_provisioning.with_image_options(image_options, &block)
|
40
|
-
end
|
41
|
-
|
42
|
-
def current_image_options
|
43
|
-
run_context.chef_provisioning.current_image_options
|
44
|
-
end
|
45
|
-
|
46
|
-
NOT_PASSED = Object.new
|
47
|
-
|
48
|
-
@@next_machine_batch_index = 0
|
49
|
-
|
50
|
-
def machine_batch_default_name
|
51
|
-
@@next_machine_batch_index += 1
|
52
|
-
if @@next_machine_batch_index > 1
|
53
|
-
"default#{@@next_machine_batch_index}"
|
54
|
-
else
|
55
|
-
"default"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def machine_batch(name = nil, &block)
|
60
|
-
name ||= machine_batch_default_name
|
61
|
-
recipe = self
|
62
|
-
declare_resource(:machine_batch, name, caller[0]) do
|
63
|
-
from_recipe recipe
|
64
|
-
instance_eval(&block)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
class Config
|
72
|
-
default(:driver) { ENV['CHEF_DRIVER'] }
|
73
|
-
# config_context :drivers do
|
74
|
-
# # each key is a driver_url, and each value can have driver, driver_options and machine_options
|
75
|
-
# config_strict_mode false
|
76
|
-
# end
|
77
|
-
# config_context :driver_options do
|
78
|
-
# # open ended for whatever the driver wants
|
79
|
-
# config_strict_mode false
|
80
|
-
# end
|
81
|
-
# config_context :machine_options do
|
82
|
-
# # open ended for whatever the driver wants
|
83
|
-
# config_strict_mode false
|
84
|
-
# end
|
85
|
-
end
|
86
|
-
|
87
|
-
class RunContext
|
88
|
-
def chef_provisioning
|
89
|
-
node.run_state[:chef_provisioning] ||= Chef::Provisioning::ChefRunData.new(config)
|
90
|
-
end
|
91
|
-
alias :chef_metal :chef_provisioning
|
92
|
-
end
|
93
|
-
|
94
|
-
class ResourceCollection
|
95
|
-
def previous_index
|
96
|
-
@insert_after_idx ? @insert_after_idx : @resources.length - 1
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
1
|
+
require 'chef/provisioning/chef_run_data'
|
2
|
+
require 'chef/resource_collection'
|
3
|
+
require 'chef/resource/chef_data_bag_resource'
|
4
|
+
|
5
|
+
require 'chef/resource/machine'
|
6
|
+
require 'chef/provider/machine'
|
7
|
+
require 'chef/resource/machine_batch'
|
8
|
+
require 'chef/provider/machine_batch'
|
9
|
+
require 'chef/resource/machine_file'
|
10
|
+
require 'chef/provider/machine_file'
|
11
|
+
require 'chef/resource/machine_execute'
|
12
|
+
require 'chef/provider/machine_execute'
|
13
|
+
require 'chef/resource/machine_image'
|
14
|
+
require 'chef/provider/machine_image'
|
15
|
+
require 'chef/resource/load_balancer'
|
16
|
+
require 'chef/provider/load_balancer'
|
17
|
+
|
18
|
+
class Chef
|
19
|
+
module DSL
|
20
|
+
module Recipe
|
21
|
+
|
22
|
+
def with_driver(driver, options = nil, &block)
|
23
|
+
run_context.chef_provisioning.with_driver(driver, options, &block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def with_machine_options(machine_options, &block)
|
27
|
+
run_context.chef_provisioning.with_machine_options(machine_options, &block)
|
28
|
+
end
|
29
|
+
|
30
|
+
def current_machine_options
|
31
|
+
run_context.chef_provisioning.current_machine_options
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_machine_options(options, &block)
|
35
|
+
run_context.chef_provisioning.add_machine_options(options, &block)
|
36
|
+
end
|
37
|
+
|
38
|
+
def with_image_options(image_options, &block)
|
39
|
+
run_context.chef_provisioning.with_image_options(image_options, &block)
|
40
|
+
end
|
41
|
+
|
42
|
+
def current_image_options
|
43
|
+
run_context.chef_provisioning.current_image_options
|
44
|
+
end
|
45
|
+
|
46
|
+
NOT_PASSED = Object.new
|
47
|
+
|
48
|
+
@@next_machine_batch_index = 0
|
49
|
+
|
50
|
+
def machine_batch_default_name
|
51
|
+
@@next_machine_batch_index += 1
|
52
|
+
if @@next_machine_batch_index > 1
|
53
|
+
"default#{@@next_machine_batch_index}"
|
54
|
+
else
|
55
|
+
"default"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def machine_batch(name = nil, &block)
|
60
|
+
name ||= machine_batch_default_name
|
61
|
+
recipe = self
|
62
|
+
declare_resource(:machine_batch, name, caller[0]) do
|
63
|
+
from_recipe recipe
|
64
|
+
instance_eval(&block)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class Config
|
72
|
+
default(:driver) { ENV['CHEF_DRIVER'] }
|
73
|
+
# config_context :drivers do
|
74
|
+
# # each key is a driver_url, and each value can have driver, driver_options and machine_options
|
75
|
+
# config_strict_mode false
|
76
|
+
# end
|
77
|
+
# config_context :driver_options do
|
78
|
+
# # open ended for whatever the driver wants
|
79
|
+
# config_strict_mode false
|
80
|
+
# end
|
81
|
+
# config_context :machine_options do
|
82
|
+
# # open ended for whatever the driver wants
|
83
|
+
# config_strict_mode false
|
84
|
+
# end
|
85
|
+
end
|
86
|
+
|
87
|
+
class RunContext
|
88
|
+
def chef_provisioning
|
89
|
+
node.run_state[:chef_provisioning] ||= Chef::Provisioning::ChefRunData.new(config)
|
90
|
+
end
|
91
|
+
alias :chef_metal :chef_provisioning
|
92
|
+
end
|
93
|
+
|
94
|
+
class ResourceCollection
|
95
|
+
def previous_index
|
96
|
+
@insert_after_idx ? @insert_after_idx : @resources.length - 1
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|