chef-provisioning 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -1
- data/README.md +8 -4
- data/lib/chef/provisioning/driver.rb +1 -1
- data/lib/chef/provisioning/transport/ssh.rb +28 -17
- data/lib/chef/provisioning/version.rb +1 -1
- data/lib/chef/resource/machine.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdf81e38047405e6ffb044e3112628cd6cce7732
|
4
|
+
data.tar.gz: 18351e619438b43f8e2ef7f6622de7a416a4ba84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 846ed8458a5d37d3befd1cc983b81ec7efd26a7d4b5ad10bd43f0485b7c78d8f499ea7f89bea6964bee7735e97b41640dcde5312834d6b59a47013efdeecf014
|
7
|
+
data.tar.gz: 800540b188262a24c73cce456a5116aed4d707863025cba6dfbdc9c00af9b6c2bb33cee04f2e3a8bd3d2da5be4b3b2d36847c28a670ad45dfa30a384d0eb8653
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Chef Provisioning Changelog
|
2
2
|
|
3
|
+
## 1.2.1 (7/17/2015)
|
4
|
+
|
5
|
+
- Added support for `options[:scp_temp_dir]` to permit specifying a directory other than `/tmp` to copy files to via SCP. ([#339][])
|
6
|
+
- Removing acceptance tests because they are super stale. ([#363][])
|
7
|
+
- Fix arrity mismatch on `Driver#destroy_image` method. ([#364][])
|
8
|
+
- Doc updates ([#344][], [#346][], [#352][], [#369][])
|
9
|
+
|
3
10
|
## 1.2.0 (5/27/2015)
|
4
11
|
|
5
12
|
- Updating for newly introduced Socketless mode. If the local chef-zero url is `chefzero://...` then we replace it with `http://...` on the target VM ([#337][])
|
@@ -301,6 +308,13 @@
|
|
301
308
|
[#321]: https://github.com/chef/chef-provisioning/issues/321
|
302
309
|
[#332]: https://github.com/chef/chef-provisioning/issues/332
|
303
310
|
[#337]: https://github.com/chef/chef-provisioning/issues/337
|
311
|
+
[#339]: https://github.com/chef/chef-provisioning/issues/339
|
312
|
+
[#344]: https://github.com/chef/chef-provisioning/issues/344
|
313
|
+
[#346]: https://github.com/chef/chef-provisioning/issues/346
|
314
|
+
[#352]: https://github.com/chef/chef-provisioning/issues/352
|
315
|
+
[#363]: https://github.com/chef/chef-provisioning/issues/363
|
316
|
+
[#364]: https://github.com/chef/chef-provisioning/issues/364
|
317
|
+
[#369]: https://github.com/chef/chef-provisioning/issues/369
|
304
318
|
[@MrMMorris]: https://github.com/MrMMorris
|
305
319
|
[@causton1]: https://github.com/causton1
|
306
320
|
[@chef]: https://github.com/chef
|
@@ -318,4 +332,4 @@
|
|
318
332
|
[@segv]: https://github.com/segv
|
319
333
|
[@tyler-ball]: https://github.com/tyler-ball
|
320
334
|
[@xeon22]: https://github.com/xeon22
|
321
|
-
[@xorl]: https://github.com/xorl
|
335
|
+
[@xorl]: https://github.com/xorl
|
data/README.md
CHANGED
@@ -38,6 +38,7 @@ To give it a spin, install Vagrant and VirtualBox and try this from the `chef-pr
|
|
38
38
|
```
|
39
39
|
gem install chef-provisioning chef-provisioning-vagrant
|
40
40
|
export CHEF_DRIVER=vagrant
|
41
|
+
export VAGRANT_DEFAULT_PROVIDER=virtualbox
|
41
42
|
chef-client -z vagrant_linux.rb simple.rb
|
42
43
|
```
|
43
44
|
|
@@ -48,7 +49,7 @@ This will create two vagrant precise64 linux boxes, "mario" and "luigi1", in `~/
|
|
48
49
|
If you have an AWS account, you can spin up a machine there like this:
|
49
50
|
|
50
51
|
```
|
51
|
-
gem install chef-provisioning chef-provisioning-
|
52
|
+
gem install chef-provisioning chef-provisioning-aws
|
52
53
|
export CHEF_DRIVER=aws
|
53
54
|
chef-client -z simple.rb
|
54
55
|
```
|
@@ -130,7 +131,7 @@ Drivers each have their own repository. Current drivers:
|
|
130
131
|
|
131
132
|
**Virtualization:**
|
132
133
|
- [Vagrant: VirtualBox, VMWare Fusion, etc.](https://github.com/chef/chef-provisioning-vagrant)
|
133
|
-
- [VSphere](https://github.com/
|
134
|
+
- [VSphere](https://github.com/CenturyLinkCloud/chef-provisioning-vsphere)
|
134
135
|
|
135
136
|
**Containers:**
|
136
137
|
- [Docker](https://github.com/chef/chef-provisioning-docker)
|
@@ -147,9 +148,12 @@ chef-zero comes with a provisioner for Vagrant, an abstraction that covers Virtu
|
|
147
148
|
|
148
149
|
```ruby
|
149
150
|
export CHEF_DRIVER=vagrant
|
151
|
+
export VAGRANT_DEFAULT_PROVIDER=virtualbox
|
150
152
|
chef-client -z vagrant_linux.rb simple.rb
|
151
153
|
```
|
152
154
|
|
155
|
+
To use with VMWare, simply update the prior example to read ```export VAGRANT_DEFAULT_PROVIDER=vmware_fusion```
|
156
|
+
|
153
157
|
This is a chef-client run, which runs multiple **recipes.** Chef Provisioning is nothing but resources you put in recipes.
|
154
158
|
|
155
159
|
The driver is specified on the command line. Drivers are URLs. You could use `vagrant:~/vms` or `fog:AWS:default:us-east-1' as driver URLs. More information [here.](https://github.com/chef/chef-provisioning/blob/master/docs/configuration.md#setting-the-driver-with-a-driver-url)
|
@@ -263,10 +267,10 @@ Kitchen
|
|
263
267
|
Chef Provisioning 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.
|
264
268
|
|
265
269
|
|
266
|
-
Fixing conflict with chef-zero 3.2.1 and ~> 4.0
|
270
|
+
Fixing conflict with chef-zero 3.2.1 and ~> 4.0
|
267
271
|
-----------------------------------------------
|
268
272
|
|
269
|
-
If you run into the error `Unable to activate cheffish-1.0.0, because chef-zero-3.2.1 conflicts with chef-zero (~> 4.0)` you'll need to update the version of the chef gem included in the ChefDK. Follow the instructions @ [https://github.com/fnichol/chefdk-update-app](https://github.com/fnichol/chefdk-update-app) and update chef to ~>12.2.1
|
273
|
+
If you run into the error `Unable to activate cheffish-1.0.0, because chef-zero-3.2.1 conflicts with chef-zero (~> 4.0)` you'll need to update the version of the chef gem included in the ChefDK. Follow the instructions @ [https://github.com/fnichol/chefdk-update-app](https://github.com/fnichol/chefdk-update-app) and update chef to ~>12.2.1
|
270
274
|
|
271
275
|
Bugs and The Plan
|
272
276
|
-----------------
|
@@ -189,7 +189,7 @@ module Provisioning
|
|
189
189
|
# @param [Chef::Provisioning::ManagedEntry] image_spec An image specification representing this image.
|
190
190
|
# @param [Hash] image_options A set of options representing the desired state of the image
|
191
191
|
# @param [Hash] machine_options A set of options representing the desired state of the machine used to create the image
|
192
|
-
def destroy_image(action_handler, image_spec, image_options, machine_options)
|
192
|
+
def destroy_image(action_handler, image_spec, image_options, machine_options={})
|
193
193
|
raise "#{self.class} does not implement destroy_image"
|
194
194
|
end
|
195
195
|
|
@@ -27,6 +27,9 @@ module Provisioning
|
|
27
27
|
# nil (the default) means no gateway. If the username is omitted,
|
28
28
|
# then the default username is used instead (i.e. the user running
|
29
29
|
# chef, or the username configured in .ssh/config).
|
30
|
+
# - :scp_temp_dir: a directory to use as the temporary location for
|
31
|
+
# files that are copied to the host via SCP.
|
32
|
+
# Only used if :prefix is set. Default is '/tmp' if unspecified.
|
30
33
|
# - global_config: an options hash that looks suspiciously similar to
|
31
34
|
# Chef::Config, containing at least the key :log_level.
|
32
35
|
#
|
@@ -103,14 +106,18 @@ module Provisioning
|
|
103
106
|
download(path, local_path)
|
104
107
|
end
|
105
108
|
|
109
|
+
def remote_tempfile(path)
|
110
|
+
File.join(scp_temp_dir, "#{File.basename(path)}.#{Random.rand(2**32)}")
|
111
|
+
end
|
112
|
+
|
106
113
|
def write_file(path, content)
|
107
114
|
execute("mkdir -p #{File.dirname(path)}").error!
|
108
115
|
if options[:prefix]
|
109
116
|
# Make a tempfile on the other side, upload to that, and sudo mv / chown / etc.
|
110
|
-
|
111
|
-
Chef::Log.debug("Writing #{content.length} bytes to #{
|
112
|
-
Net::SCP.new(session).upload!(StringIO.new(content),
|
113
|
-
execute("mv #{
|
117
|
+
tempfile = remote_tempfile(path)
|
118
|
+
Chef::Log.debug("Writing #{content.length} bytes to #{tempfile} on #{username}@#{host}")
|
119
|
+
Net::SCP.new(session).upload!(StringIO.new(content), tempfile)
|
120
|
+
execute("mv #{tempfile} #{path}").error!
|
114
121
|
else
|
115
122
|
Chef::Log.debug("Writing #{content.length} bytes to #{path} on #{username}@#{host}")
|
116
123
|
Net::SCP.new(session).upload!(StringIO.new(content), path)
|
@@ -121,14 +128,14 @@ module Provisioning
|
|
121
128
|
execute("mkdir -p #{File.dirname(path)}").error!
|
122
129
|
if options[:prefix]
|
123
130
|
# Make a tempfile on the other side, upload to that, and sudo mv / chown / etc.
|
124
|
-
|
125
|
-
Chef::Log.debug("Uploading #{local_path} to #{
|
126
|
-
Net::SCP.new(session).upload!(local_path,
|
131
|
+
tempfile = remote_tempfile(path)
|
132
|
+
Chef::Log.debug("Uploading #{local_path} to #{tempfile} on #{username}@#{host}")
|
133
|
+
Net::SCP.new(session).upload!(local_path, tempfile)
|
127
134
|
begin
|
128
|
-
execute("mv #{
|
135
|
+
execute("mv #{tempfile} #{path}").error!
|
129
136
|
rescue
|
130
137
|
# Clean up if we were unable to move
|
131
|
-
execute("rm #{
|
138
|
+
execute("rm #{tempfile}").error!
|
132
139
|
end
|
133
140
|
else
|
134
141
|
Chef::Log.debug("Uploading #{local_path} to #{path} on #{username}@#{host}")
|
@@ -202,21 +209,21 @@ module Provisioning
|
|
202
209
|
def download(path, local_path)
|
203
210
|
if options[:prefix]
|
204
211
|
# Make a tempfile on the other side, upload to that, and sudo mv / chown / etc.
|
205
|
-
|
206
|
-
Chef::Log.debug("Downloading #{path} from #{
|
212
|
+
tempfile = remote_tempfile(path)
|
213
|
+
Chef::Log.debug("Downloading #{path} from #{tempfile} to #{local_path} on #{username}@#{host}")
|
207
214
|
begin
|
208
|
-
execute("cp #{path} #{
|
209
|
-
execute("chown #{username} #{
|
210
|
-
do_download
|
215
|
+
execute("cp #{path} #{tempfile}").error!
|
216
|
+
execute("chown #{username} #{tempfile}").error!
|
217
|
+
do_download tempfile, local_path
|
211
218
|
rescue => e
|
212
|
-
Chef::Log.error "Unable to download #{path} to #{
|
219
|
+
Chef::Log.error "Unable to download #{path} to #{tempfile} on #{username}@#{host} -- #{e}"
|
213
220
|
nil
|
214
221
|
ensure
|
215
222
|
# Clean up afterwards
|
216
223
|
begin
|
217
|
-
execute("rm #{
|
224
|
+
execute("rm #{tempfile}").error!
|
218
225
|
rescue => e
|
219
|
-
Chef::Log.warn "Unable to clean up #{
|
226
|
+
Chef::Log.warn "Unable to clean up #{tempfile} on #{username}@#{host} -- #{e}"
|
220
227
|
end
|
221
228
|
end
|
222
229
|
else
|
@@ -277,6 +284,10 @@ module Provisioning
|
|
277
284
|
|
278
285
|
private
|
279
286
|
|
287
|
+
def scp_temp_dir
|
288
|
+
@scp_temp_dir ||= options.fetch(:scp_temp_dir, '/tmp')
|
289
|
+
end
|
290
|
+
|
280
291
|
def gateway?
|
281
292
|
options.key?(:ssh_gateway) and ! options[:ssh_gateway].nil?
|
282
293
|
end
|
@@ -26,7 +26,8 @@ class Machine < Chef::Resource::LWRPBase
|
|
26
26
|
# Machine options
|
27
27
|
attribute :machine_options
|
28
28
|
|
29
|
-
# Node
|
29
|
+
# This includes attributes from the Cheffish::Node resources - allows us
|
30
|
+
# to specify things like `run_list`, `chef_server`, etc.
|
30
31
|
Cheffish.node_attributes(self)
|
31
32
|
|
32
33
|
# Client keys
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-provisioning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Keiser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef
|