chef-provisioning 0.17 → 0.18
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 +12 -4
- data/README.md +27 -24
- data/lib/chef/provider/machine_image.rb +8 -0
- data/lib/chef/provisioning/action_handler.rb +1 -1
- data/lib/chef/provisioning/chef_image_spec.rb +5 -5
- data/lib/chef/provisioning/chef_provider_action_handler.rb +1 -1
- data/lib/chef/provisioning/convergence_strategy/install_cached.rb +1 -1
- data/lib/chef/provisioning/convergence_strategy/install_msi.rb +4 -3
- data/lib/chef/provisioning/convergence_strategy/install_sh.rb +1 -1
- data/lib/chef/provisioning/convergence_strategy/precreate_chef_objects.rb +16 -8
- data/lib/chef/provisioning/machine.rb +1 -1
- data/lib/chef/provisioning/transport/ssh.rb +25 -9
- data/lib/chef/provisioning/version.rb +1 -1
- metadata +22 -25
- data/lib/.DS_Store +0 -0
- data/lib/chef/.DS_Store +0 -0
- data/lib/chef/provisioning/.DS_Store +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c4cefaa41a622f8b28242c0d77384e123f88562
|
4
|
+
data.tar.gz: 354056ddabbf9c6010af17895a069c4ece6240f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c447345478be4935d4e55de75f197bb4f182d1cb153ddf6142eee50679bd99922438a63789c5c6cefe46261a7e6bda8d2929e9dc3d2bbec413d72b7b1532e81f
|
7
|
+
data.tar.gz: c2ebf41170f13d2d8537327393410b2f91756955c3d4b3c2bc59d1ab0a86e82cdf55694a0b2fa3bfa7025ced2bbf7be2df5832992c254d5dde8464a99537e6c0
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,16 @@
|
|
1
1
|
# Chef Provisioning Changelog
|
2
2
|
|
3
|
+
## 0.18 (1/27/2015)
|
4
|
+
|
5
|
+
- Allow `ssl_verify_mode` to be overridden (@mivok)
|
6
|
+
- Support `machine_options[:convergence_options][:bootstrap_proxy]` (@mivok)
|
7
|
+
- Allow `machine_options[:ssh_gateway]` without username (no @) (@mivok)
|
8
|
+
- Fix issue with net-ssh 2.9.2
|
9
|
+
- Add `action :destroy` to `machine_image` (@miguelcnf)
|
10
|
+
|
3
11
|
## 0.17 (12/17/2014)
|
4
12
|
|
5
|
-
- Make machine batch convergent
|
13
|
+
- Make machine batch convergent
|
6
14
|
- Consolidate load balancer create and update
|
7
15
|
- Update some URLs
|
8
16
|
- SSL verification fix
|
@@ -194,7 +202,7 @@
|
|
194
202
|
|
195
203
|
## 0.8 (4/8/2014)
|
196
204
|
|
197
|
-
- New machine_execute resource! (irving@
|
205
|
+
- New machine_execute resource! (irving@chef.io)
|
198
206
|
- Experimental "metal" command line: metal execute NODENAME COMMAND ARGS
|
199
207
|
- Transport: Add ability to stream execute() for better nested chef-client debugging
|
200
208
|
|
@@ -209,14 +217,14 @@
|
|
209
217
|
|
210
218
|
## 0.5 (4/3/2014)
|
211
219
|
|
212
|
-
* Provisioner interface changes designed to allow provisioners to be used outside of Chef (doubt@
|
220
|
+
* Provisioner interface changes designed to allow provisioners to be used outside of Chef (doubt@chef.io)
|
213
221
|
* All Provisioner and Machine methods now take "action_handler" instead of "driver." It uses the ActionHandler interface described in action_handler.rb. In short:
|
214
222
|
- driver.run_context -> action_handler.recipe_context
|
215
223
|
- driver.updated_by_last_action(true) -> action_handler.updated!
|
216
224
|
- driver.converge_by -> action_handler.perform_action
|
217
225
|
- driver.cookbook_name -> driver.debug_name
|
218
226
|
* Convergence strategy: delete_chef_objects() -> cleanup_convergence()
|
219
|
-
* Ability to get back to a machine from a node (another Provisioner interface change) (doubt@
|
227
|
+
* Ability to get back to a machine from a node (another Provisioner interface change) (doubt@chef.io):
|
220
228
|
* Provisioners must create a file named `chef_provisioning/provisioner_init/<scheme>_init.rb`. It will be required when a node is encountered with that scheme. It should call Chef::Provisioning.add_registered_provisioner_class(<scheme>, <provisioner class name>). For the provisioner_url `fog:AWS:21348723432`, the scheme is "fog" and the file is `chef_provisioningprovisioner_init/fog_init.rb`. It should call `Chef::Provisioning.add_registered_provisioner_class('fog', Chef::Provisioning::Provisioner::FogProvisioner)`.
|
221
229
|
* Provisioner classes must implement the class method `inflate(node)`, which should create a Provisioner instance appropriate to the given `node` (generally by looking at `node['normal']['provisioner_output']`)
|
222
230
|
* New `NoConverge` convergence strategy that creates a node but does not install Chef or converge.
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
[](https://waffle.io/chef/chef-provisioning)
|
2
2
|
Chef Provisioning
|
3
3
|
==========
|
4
|
-
[](https://gitter.im/
|
4
|
+
[](https://gitter.im/chef/chef-provisioning?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
5
5
|
|
6
6
|
This library solves the problem of repeatably creating machines and infrastructures in Chef. It has a plugin model that lets you write bootstrappers for your favorite infrastructures, including VirtualBox, EC2, LXC, bare metal, and many more!
|
7
7
|
|
@@ -9,19 +9,22 @@ This library solves the problem of repeatably creating machines and infrastructu
|
|
9
9
|
|
10
10
|
Date | Blog
|
11
11
|
-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
2014-12-15 | [Using Chef Provisioning to Build Chef Server](https://www.chef.io/blog/2014/12/15/sysadvent-day-14-using-chef-provisioning-to-build-chef-server/)
|
13
|
+
2014-11-12 | [Chef Launches Policy-Based Provisioning](https://www.chef.io/blog/2014/11/12/chef-launches-policy-based-provisioning/)
|
14
|
+
2014-11-12 | [Chef Provisioning: Infrastructure As Code](https://www.chef.io/blog/2014/11/12/chef-provisioning-infrastructure-as-code/)
|
15
|
+
2014-06-03 | [machine_batch and parallelization](https://github.com/chef/chef-provisioning/blob/master/docs/blogs/2012-05-28-machine_batch.html.markdown#chef-provisioning-parallelization)
|
16
|
+
2014-06-03 | [Chef Provisioning, Configuration and Drivers](https://github.com/chef/chef-provisioning/blob/master/docs/blogs/2012-05-22-new-driver-interface.html.markdown#chef-provisioning-configuration-and-drivers)
|
17
|
+
2014-03-04 | [Chef Metal 0.2: Overview](http://www.chef.io/blog/2014/03/04/chef-metal-0-2-release/) - this is a pretty good overview (though dated).
|
18
|
+
2013-12-20 | [Chef Metal Alpha](http://www.chef.io/blog/2013/12/20/chef-metal-alpha/)
|
16
19
|
|
17
20
|
Documentation
|
18
21
|
-------------
|
19
|
-
* [Chef Docs](https://docs.
|
20
|
-
* [Frequently Asked Questions](https://github.com/
|
21
|
-
* [Configuration](https://github.com/
|
22
|
-
* [Writing Drivers](https://github.com/
|
23
|
-
* [Embedding](https://github.com/
|
24
|
-
* [Providers](https://github.com/
|
22
|
+
* [Chef Docs](https://docs.chef.io/provisioning.html)
|
23
|
+
* [Frequently Asked Questions](https://github.com/chef/chef-provisioning/blob/master/docs/faq.md)
|
24
|
+
* [Configuration](https://github.com/chef/chef-provisioning/blob/master/docs/configuration.md#configuring-and-using-provisioning-drivers)
|
25
|
+
* [Writing Drivers](https://github.com/chef/chef-provisioning/blob/master/docs/building_drivers.md#writing-drivers)
|
26
|
+
* [Embedding](https://github.com/chef/chef-provisioning/blob/master/docs/embedding.md)
|
27
|
+
* [Providers](https://github.com/chef/chef-provisioning/blob/master/docs/providers)
|
25
28
|
|
26
29
|
Try It Out
|
27
30
|
----------
|
@@ -46,7 +49,7 @@ If you have an AWS account, you can spin up a machine there like this:
|
|
46
49
|
|
47
50
|
```
|
48
51
|
gem install chef-provisioning chef-provisioning-fog
|
49
|
-
export CHEF_DRIVER=
|
52
|
+
export CHEF_DRIVER=aws
|
50
53
|
chef-client -z simple.rb
|
51
54
|
```
|
52
55
|
|
@@ -83,7 +86,7 @@ Chef Provisioning has two major abstractions: the machine resource, and drivers.
|
|
83
86
|
|
84
87
|
You declare what your machines do (recipes, tags, etc.) with the `machine` resource, the fundamental unit of Chef Provisioning. You will typically declare `machine` resources in a separate, OS/provisioning-independent file that declares the *topology* of your app--your machines and the recipes that will run on them.
|
85
88
|
|
86
|
-
The machine resources from the example [myapp::small](https://github.com/
|
89
|
+
The machine resources from the example [myapp::small](https://github.com/chef/chef-provisioning/blob/master/cookbooks/myapp/recipes/small.rb) are pretty straightforward. Here's a copy/paste:
|
87
90
|
|
88
91
|
```ruby
|
89
92
|
machine 'mario' do
|
@@ -119,20 +122,20 @@ Drivers save their data in the Chef node itself, so that they will be accessible
|
|
119
122
|
Drivers each have their own repository. Current drivers:
|
120
123
|
|
121
124
|
**Cloud:**
|
122
|
-
- [AWS](https://github.com/
|
123
|
-
- [Azure](https://github.com/
|
124
|
-
- [FOG: EC2, DigitalOcean, OpenStack, etc.](https://github.com/
|
125
|
+
- [AWS](https://github.com/chef/chef-provisioning-aws)
|
126
|
+
- [Azure](https://github.com/chef/chef-provisioning-azure)
|
127
|
+
- [FOG: EC2, DigitalOcean, OpenStack, etc.](https://github.com/chef/chef-provisioning-fog)
|
125
128
|
|
126
129
|
**Virtualization:**
|
127
|
-
- [Vagrant: VirtualBox, VMWare Fusion, etc.](https://github.com/
|
130
|
+
- [Vagrant: VirtualBox, VMWare Fusion, etc.](https://github.com/chef/chef-provisioning-vagrant)
|
128
131
|
- [VSphere](https://github.com/RallySoftware-cookbooks/chef-metal-vsphere) (not yet up to date with 0.11)
|
129
132
|
|
130
133
|
**Containers:**
|
131
|
-
- [Docker](https://github.com/
|
132
|
-
- [LXC](https://github.com/
|
134
|
+
- [Docker](https://github.com/chef/chef-provisioning-docker)
|
135
|
+
- [LXC](https://github.com/chef/chef-provisioning-lxc)
|
133
136
|
|
134
137
|
**Bare Metal:**
|
135
|
-
- [Hanlon](https://github.com/
|
138
|
+
- [Hanlon](https://github.com/chef/chef-provisioning-hanlon)
|
136
139
|
- [OpenCrowbar](https://github.com/newgoliath/chef-provisioning-crowbar) OpenCrowbar controls your real metal. It discovers, inventories, configs RAID & BIOS and networks, and installs your OS. [OpenCrowbar website](http://www.opencrowbar.org) [OpenCrowbar github](https://github.com/opencrowbar/core)
|
137
140
|
- [SSH (no PXE)](https://github.com/double-z/chef-metal-ssh) (not yet up to date with 0.11)
|
138
141
|
|
@@ -147,7 +150,7 @@ chef-client -z vagrant_linux.rb simple.rb
|
|
147
150
|
|
148
151
|
This is a chef-client run, which runs multiple **recipes.** Chef Provisioning is nothing but resources you put in recipes.
|
149
152
|
|
150
|
-
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/
|
153
|
+
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)
|
151
154
|
|
152
155
|
The `vagrant_linux.rb` recipe handles the physical specification of the machines and Vagrant box:
|
153
156
|
|
@@ -260,6 +263,6 @@ Chef Provisioning also works with Test Kitchen, allowing you to test entire clus
|
|
260
263
|
Bugs and The Plan
|
261
264
|
-----------------
|
262
265
|
|
263
|
-
Please submit bugs, gripes and feature requests at [https://github.com/
|
266
|
+
Please submit bugs, gripes and feature requests at [https://github.com/chef/chef-provisioning/issues](https://github.com/chef/chef-provisioning/issues), contact John Keiser on Twitter at [@jkeiser2](https://twitter.com/jkeiser2), email at [jkeiser@chef.io](mailto:jkeiser@chef.io)
|
264
267
|
|
265
|
-
To contribute, just make a PR in the appropriate repo--also, make sure you've [signed the Chef Contributor License Agreement](https://
|
268
|
+
To contribute, just make a PR in the appropriate repo--also, make sure you've [signed the Chef Contributor License Agreement](https://supermarket.chef.io) (through your Chef Supermarket profile), since this is going into core Chef eventually. If you already signed this for a Chef contribution, you don't need to do so again--if you're not sure, you can check for your name [here](https://supermarket.chef.io/contributors) or if you signed up long ago check the [old list](https://github.com/chef/chef/blob/master/CLA_ARCHIVE.md)!
|
@@ -36,6 +36,14 @@ class MachineImage < Chef::Provider::LWRPBase
|
|
36
36
|
end
|
37
37
|
|
38
38
|
action :destroy do
|
39
|
+
# Get the image mapping on the server (from name to image-id)
|
40
|
+
image_spec = Chef::Provisioning::ChefImageSpec.get(new_resource.name, new_resource.chef_server) ||
|
41
|
+
Chef::Provisioning::ChefImageSpec.empty(new_resource.name, new_resource.chef_server)
|
42
|
+
|
43
|
+
if image_spec.location
|
44
|
+
new_driver.destroy_image(action_handler, image_spec, new_resource.image_options)
|
45
|
+
image_spec.delete(action_handler)
|
46
|
+
end
|
39
47
|
end
|
40
48
|
|
41
49
|
def create_image(image_spec)
|
@@ -15,7 +15,7 @@ module Provisioning
|
|
15
15
|
end
|
16
16
|
|
17
17
|
#
|
18
|
-
# Get a ImageSpec from the chef server. If the
|
18
|
+
# Get a ImageSpec from the chef server. If the image does not exist on the
|
19
19
|
# server, it returns nil.
|
20
20
|
#
|
21
21
|
def self.get(name, chef_server = Cheffish.default_chef_server)
|
@@ -51,12 +51,12 @@ module Provisioning
|
|
51
51
|
end
|
52
52
|
|
53
53
|
#
|
54
|
-
# Save this
|
54
|
+
# Save this image to the server. If you have significant information that
|
55
55
|
# could be lost, you should do this as quickly as possible. Data will be
|
56
56
|
# saved automatically for you after allocate_image and ready_image.
|
57
57
|
#
|
58
58
|
def save(action_handler)
|
59
|
-
# Save the
|
59
|
+
# Save the image to the server.
|
60
60
|
_self = self
|
61
61
|
_chef_server = _self.chef_server
|
62
62
|
Chef::Provisioning.inline_resource(action_handler) do
|
@@ -72,14 +72,14 @@ module Provisioning
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def delete(action_handler)
|
75
|
-
#
|
75
|
+
# Delete the image from the server.
|
76
76
|
_self = self
|
77
77
|
_chef_server = _self.chef_server
|
78
78
|
Chef::Provisioning.inline_resource(action_handler) do
|
79
79
|
chef_data_bag_item _self.name do
|
80
80
|
data_bag 'images'
|
81
81
|
chef_server _chef_server
|
82
|
-
action :
|
82
|
+
action :delete
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
@@ -103,7 +103,7 @@ module Provisioning
|
|
103
103
|
#
|
104
104
|
# Figure out the URL to the metadata
|
105
105
|
#
|
106
|
-
metadata_url="https://www.
|
106
|
+
metadata_url="https://www.chef.io/chef/metadata"
|
107
107
|
metadata_url << "?v=#{@chef_version}"
|
108
108
|
metadata_url << "&prerelease=#{@prerelease ? 'true' : 'false'}"
|
109
109
|
metadata_url << "&p=#{platform.strip}"
|
@@ -9,7 +9,7 @@ module Provisioning
|
|
9
9
|
|
10
10
|
def initialize(convergence_options, config)
|
11
11
|
super
|
12
|
-
@install_msi_url = convergence_options[:install_msi_url] || 'http://www.
|
12
|
+
@install_msi_url = convergence_options[:install_msi_url] || 'http://www.chef.io/chef/install.msi'
|
13
13
|
@install_msi_path = convergence_options[:install_msi_path] || "$env:TEMP\\#{File.basename(@install_msi_url)}"
|
14
14
|
@chef_client_timeout = convergence_options.has_key?(:chef_client_timeout) ? convergence_options[:chef_client_timeout] : 120*60 # Default: 2 hours
|
15
15
|
end
|
@@ -42,10 +42,11 @@ module Provisioning
|
|
42
42
|
def converge(action_handler, machine)
|
43
43
|
super
|
44
44
|
|
45
|
-
# TODO For some reason I get a 500 back if I don't do -l debug
|
46
45
|
action_handler.open_stream(machine.node['name']) do |stdout|
|
47
46
|
action_handler.open_stream(machine.node['name']) do |stderr|
|
48
|
-
|
47
|
+
command_line = "chef-client"
|
48
|
+
command_line << " -l #{config[:log_level].to_s}" if config[:log_level]
|
49
|
+
machine.execute(action_handler, command_line,
|
49
50
|
:stream_stdout => stdout,
|
50
51
|
:stream_stderr => stderr,
|
51
52
|
:timeout => @chef_client_timeout)
|
@@ -13,7 +13,7 @@ module Provisioning
|
|
13
13
|
:client_pem_path => '/etc/chef/client.pem'
|
14
14
|
})
|
15
15
|
super(convergence_options, config)
|
16
|
-
@install_sh_url = convergence_options[:install_sh_url] || 'http://www.
|
16
|
+
@install_sh_url = convergence_options[:install_sh_url] || 'http://www.chef.io/chef/install.sh'
|
17
17
|
@install_sh_path = convergence_options[:install_sh_path] || '/tmp/chef-install.sh'
|
18
18
|
@bootstrap_env = convergence_options[:bootstrap_proxy] ? "http_proxy=#{convergence_options[:bootstrap_proxy]}" : ""
|
19
19
|
@chef_client_timeout = convergence_options.has_key?(:chef_client_timeout) ? convergence_options[:chef_client_timeout] : 120*60 # Default: 2 hours
|
@@ -170,18 +170,26 @@ module Provisioning
|
|
170
170
|
end
|
171
171
|
|
172
172
|
def client_rb_content(chef_server_url, node_name)
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
173
|
+
ssl_verify_mode = convergence_options[:ssl_verify_mode]
|
174
|
+
ssl_verify_mode ||= if chef_server_url.downcase.start_with?("https")
|
175
|
+
:verify_peer
|
176
|
+
else
|
177
|
+
:verify_none
|
178
|
+
end
|
179
|
+
|
180
|
+
content = <<EOM
|
180
181
|
chef_server_url #{chef_server_url.inspect}
|
181
182
|
node_name #{node_name.inspect}
|
182
183
|
client_key #{convergence_options[:client_pem_path].inspect}
|
183
|
-
ssl_verify_mode #{ssl_verify_mode}
|
184
|
+
ssl_verify_mode #{ssl_verify_mode.to_sym.inspect}
|
184
185
|
EOM
|
186
|
+
unless convergence_options[:bootstrap_proxy].nil?
|
187
|
+
content << <<EOM
|
188
|
+
http_proxy #{convergence_options[:bootstrap_proxy].inspect}
|
189
|
+
https_proxy #{convergence_options[:bootstrap_proxy].inspect}
|
190
|
+
EOM
|
191
|
+
end
|
192
|
+
content
|
185
193
|
end
|
186
194
|
end
|
187
195
|
end
|
@@ -103,7 +103,7 @@ module Provisioning
|
|
103
103
|
# Returns a triplet:
|
104
104
|
# platform, platform_version, machine_architecture = machine.detect_os(action_handler)
|
105
105
|
# This triplet is suitable for passing to the Chef metadata API:
|
106
|
-
# https://www.
|
106
|
+
# https://www.chef.io/chef/metadata?p=PLATFORM&pv=PLATFORM_VERSION&m=MACHINE_ARCHITECTURE
|
107
107
|
def detect_os(action_handler)
|
108
108
|
raise "detect_os not overridden on #{self.class}"
|
109
109
|
end
|
@@ -24,7 +24,9 @@ module Provisioning
|
|
24
24
|
# - :ssh_pty_enable: set to false to disable pty (some instances don't
|
25
25
|
# support this, most do)
|
26
26
|
# - :ssh_gateway: the gateway to use, e.g. "jkeiser@145.14.51.45:222".
|
27
|
-
# nil (the default) means no gateway.
|
27
|
+
# nil (the default) means no gateway. If the username is omitted,
|
28
|
+
# then the default username is used instead (i.e. the user running
|
29
|
+
# chef, or the username configured in .ssh/config).
|
28
30
|
# - global_config: an options hash that looks suspiciously similar to
|
29
31
|
# Chef::Config, containing at least the key :log_level.
|
30
32
|
#
|
@@ -280,8 +282,10 @@ module Provisioning
|
|
280
282
|
|
281
283
|
def gateway
|
282
284
|
gw_user, gw_host = options[:ssh_gateway].split('@')
|
285
|
+
# If we didn't have an '@' in the above, then the value is actually
|
286
|
+
# the hostname, not the username.
|
287
|
+
gw_host, gw_user = gw_user, gw_host if gw_host.nil?
|
283
288
|
gw_host, gw_port = gw_host.split(':')
|
284
|
-
gw_user = ssh_options[:ssh_username] unless gw_user
|
285
289
|
|
286
290
|
ssh_start_opts = { timeout:10 }.merge(ssh_options)
|
287
291
|
ssh_start_opts[:port] = gw_port || 22
|
@@ -310,22 +314,34 @@ module Provisioning
|
|
310
314
|
def forward_port(local_port, local_host, remote_port, remote_host)
|
311
315
|
# This bit is from the documentation.
|
312
316
|
if session.forward.respond_to?(:active_remote_destinations)
|
313
|
-
|
314
|
-
|
317
|
+
# active_remote_destinations tells us exactly what remotes the current
|
318
|
+
# ssh session is *actually* tracking. If multiple people share this
|
319
|
+
# session and set up their own remotes, this will prevent us from
|
320
|
+
# overwriting them.
|
321
|
+
|
322
|
+
actual_remote_port, actual_remote_host = session.forward.active_remote_destinations[[local_port, local_host]]
|
323
|
+
if !actual_remote_port
|
315
324
|
Chef::Log.debug("Forwarding local server #{local_host}:#{local_port} to #{username}@#{self.host}")
|
316
325
|
|
317
|
-
session.forward.remote(local_port, local_host, remote_port, remote_host) do |
|
318
|
-
|
326
|
+
session.forward.remote(local_port, local_host, remote_port, remote_host) do |new_remote_port, new_remote_host|
|
327
|
+
actual_remote_host = new_remote_host
|
328
|
+
actual_remote_port = new_remote_port || :error
|
319
329
|
:no_exception # I'll take care of it myself, thanks
|
320
330
|
end
|
321
331
|
# Kick SSH until we get a response
|
322
|
-
session.loop { !
|
323
|
-
if
|
332
|
+
session.loop { !actual_remote_port }
|
333
|
+
if actual_remote_port == :error
|
324
334
|
return nil
|
325
335
|
end
|
326
336
|
end
|
327
|
-
[
|
337
|
+
[ actual_remote_port, actual_remote_host ]
|
328
338
|
else
|
339
|
+
# If active_remote_destinations isn't on net-ssh, we stash our own list
|
340
|
+
# of ports *we* have forwarded on the connection, and hope that we are
|
341
|
+
# right.
|
342
|
+
# TODO let's remove this when net-ssh 2.9.2 is old enough, and
|
343
|
+
# bump the required net-ssh version.
|
344
|
+
|
329
345
|
@forwarded_ports ||= {}
|
330
346
|
remote_port, remote_host = @forwarded_ports[[local_port, local_host]]
|
331
347
|
if !remote_port
|
metadata
CHANGED
@@ -1,129 +1,129 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-provisioning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.18'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Keiser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: net-ssh
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: net-scp
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: net-ssh-gateway
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.2.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.2.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: inifile
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '2.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '2.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: cheffish
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0.8'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.8'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: winrm
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 1.2.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.2.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
description: A library for creating machines and infrastructures idempotently in Chef.
|
126
|
-
email: jkeiser@
|
126
|
+
email: jkeiser@chef.io
|
127
127
|
executables: []
|
128
128
|
extensions: []
|
129
129
|
extra_rdoc_files:
|
@@ -135,8 +135,6 @@ files:
|
|
135
135
|
- LICENSE
|
136
136
|
- README.md
|
137
137
|
- Rakefile
|
138
|
-
- lib/.DS_Store
|
139
|
-
- lib/chef/.DS_Store
|
140
138
|
- lib/chef/provider/load_balancer.rb
|
141
139
|
- lib/chef/provider/machine.rb
|
142
140
|
- lib/chef/provider/machine_batch.rb
|
@@ -144,7 +142,6 @@ files:
|
|
144
142
|
- lib/chef/provider/machine_file.rb
|
145
143
|
- lib/chef/provider/machine_image.rb
|
146
144
|
- lib/chef/provisioning.rb
|
147
|
-
- lib/chef/provisioning/.DS_Store
|
148
145
|
- lib/chef/provisioning/action_handler.rb
|
149
146
|
- lib/chef/provisioning/add_prefix_action_handler.rb
|
150
147
|
- lib/chef/provisioning/chef_image_spec.rb
|
@@ -179,7 +176,7 @@ files:
|
|
179
176
|
- lib/chef/resource/machine_file.rb
|
180
177
|
- lib/chef/resource/machine_image.rb
|
181
178
|
- lib/chef_metal.rb
|
182
|
-
homepage: http://
|
179
|
+
homepage: http://github.com/chef/chef-provisioning/README.md
|
183
180
|
licenses: []
|
184
181
|
metadata: {}
|
185
182
|
post_install_message:
|
@@ -188,12 +185,12 @@ require_paths:
|
|
188
185
|
- lib
|
189
186
|
required_ruby_version: !ruby/object:Gem::Requirement
|
190
187
|
requirements:
|
191
|
-
- -
|
188
|
+
- - ">="
|
192
189
|
- !ruby/object:Gem::Version
|
193
190
|
version: '0'
|
194
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
192
|
requirements:
|
196
|
-
- -
|
193
|
+
- - ">="
|
197
194
|
- !ruby/object:Gem::Version
|
198
195
|
version: '0'
|
199
196
|
requirements: []
|
data/lib/.DS_Store
DELETED
Binary file
|
data/lib/chef/.DS_Store
DELETED
Binary file
|
Binary file
|