chef-metal 0.12.1 → 0.13
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 +5 -0
- data/README.md +25 -6
- data/lib/chef/provider/machine.rb +3 -0
- data/lib/chef/provider/machine_batch.rb +2 -0
- data/lib/chef_metal/convergence_strategy/install_msi.rb +1 -1
- data/lib/chef_metal/convergence_strategy/install_sh.rb +3 -1
- data/lib/chef_metal/recipe_dsl.rb +2 -2
- data/lib/chef_metal/transport/winrm.rb +25 -1
- data/lib/chef_metal/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f7a30676d9791f178e7448693969b295a85d5f4
|
4
|
+
data.tar.gz: cac264ccd9b787d7ff1a799f3b0994973eb06a1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31858346827c13c25a8fb8a5a6e222a424db9c610a86e643971e5a4620fb9b863eb8418c3235830d0d519870e07a519359e548a6e94099c6cc17b50251cd2255
|
7
|
+
data.tar.gz: fec942a369b4d2e82a33090bcf47caa51cda90346c9f867ac00d5633d95f9c633e98a786ddb997d43466623ca184342845e1e1ad7756d1f3444b49ef713f6c31
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
[](https://waffle.io/opscode/chef-metal)
|
1
2
|
Chef Metal
|
2
3
|
==========
|
3
4
|
|
@@ -12,6 +13,13 @@ Date | Blog
|
|
12
13
|
3/4/2014 | [Chef Metal 0.2: Overview](http://www.getchef.com/blog/2014/03/04/chef-metal-0-2-release/) - this is a pretty good overview (though dated).
|
13
14
|
12/20/2013 | [Chef Metal Alpha](http://www.getchef.com/blog/2013/12/20/chef-metal-alpha/)
|
14
15
|
|
16
|
+
Documentation
|
17
|
+
-------------
|
18
|
+
* [Configuration](https://github.com/opscode/chef-metal/blob/master/docs/configuration.md#configuring-and-using-metal-drivers)
|
19
|
+
* [Writing Drivers](https://github.com/opscode/chef-metal/blob/master/docs/building_drivers.md#writing-drivers)
|
20
|
+
* [Embedding](https://github.com/opscode/chef-metal/blob/master/docs/embedding.md)
|
21
|
+
* [Providers](https://github.com/opscode/chef-metal/blob/master/docs/providers)
|
22
|
+
|
15
23
|
Try It Out
|
16
24
|
----------
|
17
25
|
|
@@ -217,17 +225,28 @@ with_chef_server "https://chef-server.example.org",
|
|
217
225
|
:signing_key_filename => Chef::Config[:client_key]
|
218
226
|
```
|
219
227
|
|
228
|
+
**Note for Hosted/Enterprise Chef Servers**
|
229
|
+
|
230
|
+
Currently, you will need to add the 'clients' group to the 'admin' group in order for machine provisioning to work:
|
231
|
+
|
232
|
+
```
|
233
|
+
knife edit /groups/admin.json -e <editor>
|
234
|
+
```
|
235
|
+
Then add:
|
236
|
+
```
|
237
|
+
"groups": [
|
238
|
+
"clients"
|
239
|
+
]
|
240
|
+
```
|
241
|
+
|
242
|
+
This can also be done through the Chef Server web UI (Administration tab > Groups > select admins Group > Add 'clients'
|
243
|
+
|
244
|
+
|
220
245
|
Kitchen
|
221
246
|
-------
|
222
247
|
|
223
248
|
Chef Metal also works with Test Kitchen, allowing you to test entire clusters, not just machines! The repository for the kitchen-metal gem is https://github.com/doubt72/kitchen-metal.
|
224
249
|
|
225
|
-
Documentation
|
226
|
-
-------------
|
227
|
-
* [Configuration](https://github.com/opscode/chef-metal/blob/master/docs/configuration.md#configuring-and-using-metal-drivers)
|
228
|
-
* [Writing Drivers](https://github.com/opscode/chef-metal/blob/master/docs/building_drivers.md#writing-drivers)
|
229
|
-
* [Embedding](https://github.com/opscode/chef-metal/blob/master/docs/embedding.md)
|
230
|
-
|
231
250
|
Bugs and The Plan
|
232
251
|
-----------------
|
233
252
|
|
@@ -20,6 +20,9 @@ class Chef::Provider::Machine < Chef::Provider::LWRPBase
|
|
20
20
|
if current_driver && current_driver.driver_url != new_driver.driver_url
|
21
21
|
raise "Cannot move '#{machine_spec.name}' from #{current_driver.driver_url} to #{new_driver.driver_url}: machine moving is not supported. Destroy and recreate."
|
22
22
|
end
|
23
|
+
if !new_driver
|
24
|
+
raise "Driver not specified for machine #{machine_spec.name}"
|
25
|
+
end
|
23
26
|
new_driver.allocate_machine(action_handler, machine_spec, new_machine_options)
|
24
27
|
machine_spec.save(action_handler)
|
25
28
|
end
|
@@ -9,7 +9,7 @@ module ChefMetal
|
|
9
9
|
def initialize(convergence_options, config)
|
10
10
|
super
|
11
11
|
@install_msi_url = convergence_options[:install_msi_url] || 'http://www.opscode.com/chef/install.msi'
|
12
|
-
@install_msi_path = convergence_options[:install_msi_path] || "
|
12
|
+
@install_msi_path = convergence_options[:install_msi_path] || "$env:TEMP\\#{File.basename(@install_msi_url)}"
|
13
13
|
@chef_client_timeout = convergence_options.has_key?(:chef_client_timeout) ? convergence_options[:chef_client_timeout] : 120*60 # Default: 2 hours
|
14
14
|
end
|
15
15
|
|
@@ -14,11 +14,13 @@ module ChefMetal
|
|
14
14
|
super(convergence_options, config)
|
15
15
|
@install_sh_url = convergence_options[:install_sh_url] || 'http://www.opscode.com/chef/install.sh'
|
16
16
|
@install_sh_path = convergence_options[:install_sh_path] || '/tmp/chef-install.sh'
|
17
|
+
@bootstrap_env = convergence_options[:bootstrap_proxy] ? "http_proxy=#{convergence_options[:bootstrap_proxy]}" : ""
|
17
18
|
@chef_client_timeout = convergence_options.has_key?(:chef_client_timeout) ? convergence_options[:chef_client_timeout] : 120*60 # Default: 2 hours
|
18
19
|
end
|
19
20
|
|
20
21
|
attr_reader :install_sh_url
|
21
22
|
attr_reader :install_sh_path
|
23
|
+
attr_reader :bootstrap_env
|
22
24
|
|
23
25
|
def setup_convergence(action_handler, machine)
|
24
26
|
super
|
@@ -28,7 +30,7 @@ module ChefMetal
|
|
28
30
|
# TODO ssh verification of install.sh before running arbtrary code would be nice?
|
29
31
|
@@install_sh_cache[install_sh_url] ||= Net::HTTP.get(URI(install_sh_url))
|
30
32
|
machine.write_file(action_handler, install_sh_path, @@install_sh_cache[install_sh_url], :ensure_dir => true)
|
31
|
-
machine.execute(action_handler, "bash #{install_sh_path}")
|
33
|
+
machine.execute(action_handler, "bash -c '#{bootstrap_env} bash #{install_sh_path}'")
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
@@ -39,15 +39,15 @@ class Chef
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
@@next_machine_batch_index =
|
42
|
+
@@next_machine_batch_index = 0
|
43
43
|
|
44
44
|
def machine_batch_default_name
|
45
|
+
@@next_machine_batch_index += 1
|
45
46
|
if @@next_machine_batch_index > 1
|
46
47
|
"default#{@@next_machine_batch_index}"
|
47
48
|
else
|
48
49
|
"default"
|
49
50
|
end
|
50
|
-
@@next_machine_batch_index += 1
|
51
51
|
end
|
52
52
|
|
53
53
|
def machine_batch(name = nil, &block)
|
@@ -62,7 +62,30 @@ $file.Close
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def escape(string)
|
65
|
-
"
|
65
|
+
"\"#{string.gsub("\"", "`\"")}\""
|
66
|
+
end
|
67
|
+
|
68
|
+
def available?
|
69
|
+
# If you can't pwd within 10 seconds, you can't pwd
|
70
|
+
execute('pwd', :timeout => 10)
|
71
|
+
true
|
72
|
+
rescue Timeout::Error, Errno::EHOSTUNREACH, Errno::ETIMEDOUT, Errno::ECONNREFUSED, Errno::ECONNRESET, ::WinRM::WinRMHTTPTransportError, ::WinRM::WinRMWebServiceError, ::WinRM::WinRMWSManFault
|
73
|
+
Chef::Log.debug("unavailable: network connection failed or broke: #{$!.inspect}")
|
74
|
+
disconnect
|
75
|
+
false
|
76
|
+
rescue ::WinRM::WinRMAuthorizationError
|
77
|
+
Chef::Log.debug("unavailable: winrm authentication error: #{$!.inspect} ")
|
78
|
+
disconnect
|
79
|
+
false
|
80
|
+
end
|
81
|
+
|
82
|
+
def make_url_available_to_remote(local_url)
|
83
|
+
uri = URI(local_url)
|
84
|
+
host = Socket.getaddrinfo(uri.host, uri.scheme, nil, :STREAM)[0][3]
|
85
|
+
if host == '127.0.0.1' || host == '::1'
|
86
|
+
raise 'Unable to converge locally via winrm. Local converge is currently only supported with SSH. You may only converge with winrm against a chef-server.'
|
87
|
+
end
|
88
|
+
local_url
|
66
89
|
end
|
67
90
|
|
68
91
|
protected
|
@@ -94,6 +117,7 @@ $file.Close
|
|
94
117
|
attr_reader :exitstatus
|
95
118
|
attr_reader :command
|
96
119
|
attr_reader :options
|
120
|
+
attr_reader :config
|
97
121
|
|
98
122
|
def error!
|
99
123
|
if exitstatus != 0
|
data/lib/chef_metal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-metal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.13'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Keiser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.5'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: winrm
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.1.3
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.1.3
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rspec
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|