vagrant-managed-servers 0.6.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Berksfile +2 -2
- data/CHANGELOG.md +6 -0
- data/Gemfile +4 -3
- data/README.md +21 -16
- data/Rakefile +10 -7
- data/Vagrantfile +45 -14
- data/lib/vagrant-managed-servers/action/sync_folders.rb +0 -16
- data/lib/vagrant-managed-servers/action.rb +9 -16
- data/lib/vagrant-managed-servers/version.rb +1 -1
- data/vagrant-managed-servers.gemspec +1 -0
- 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: 7af13283657a3d769ae1cc914ce9fba26b821f9e
|
4
|
+
data.tar.gz: 2dd6a83ed804003cc01c3002414c6394a003c609
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a67a524ffd92a39588970e47945cc664045ee2368e5426b70e756297968dedf68b30ba6c904f03ed98e42d1c823dec1d5d2cb0431a52ced607079c4114d12dc1
|
7
|
+
data.tar.gz: 5fe6c439253f17e6451bd4b64601626323f941f2dbdb5e6a9c0cf00ee1125c4841f1a05d4dcf97610f9da0bc155f182a70e047d0fbf31d6f1162f58247295529
|
data/Berksfile
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
|
2
2
|
# Changelog
|
3
3
|
|
4
|
+
## 0.7.0 (released 2015-05-22)
|
5
|
+
|
6
|
+
* extract the WinRM synced folder mechanism into [a separate plugin](https://github.com/Cimpress-MCP/vagrant-winrm-syncedfolders) (see [#47](https://github.com/tknerr/vagrant-managed-servers/pull/47), thanks @chrisbaldauf!)
|
7
|
+
* use the `Vagrant::Action::Builtin::SyncedFolders` for provisioning windows guests. This will use (the much faster) SMB synced folders if possible (see [README](https://github.com/tknerr/vagrant-managed-servers#synced-folders-windows)), otherwise fall back to the WinRM implementation above (see [#46](https://github.com/tknerr/vagrant-managed-servers/issues/46), thanks @chrisbaldauf!)
|
8
|
+
* clean up the example Vagrantfile and add windows examples [#48](https://github.com/tknerr/vagrant-managed-servers/pull/48)
|
9
|
+
|
4
10
|
## 0.6.2 (released 2015-04-30)
|
5
11
|
|
6
12
|
* fix bug where WinRM file sync fails occasionally (retry 3 times) ([#43](https://github.com/tknerr/vagrant-managed-servers/issues/43), thanks @chrisbaldauf!)
|
data/Gemfile
CHANGED
@@ -6,11 +6,12 @@ group :development do
|
|
6
6
|
# We depend on Vagrant for development, but we don't add it as a
|
7
7
|
# gem dependency because we expect to be installed within the
|
8
8
|
# Vagrant environment itself using `vagrant plugin`.
|
9
|
-
gem "vagrant", git: "https://github.com/mitchellh/vagrant.git"
|
9
|
+
gem "vagrant", git: "https://github.com/mitchellh/vagrant.git", ref: "v1.7.2"
|
10
10
|
end
|
11
11
|
|
12
12
|
group :plugins do
|
13
13
|
gem "vagrant-managed-servers", path: "."
|
14
14
|
gem "vagrant-omnibus", "1.4.1"
|
15
|
-
gem "vagrant-berkshelf", "
|
16
|
-
|
15
|
+
gem "vagrant-berkshelf", "4.0.4"
|
16
|
+
gem "vagrant-winrm-syncedfolders"
|
17
|
+
end
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@ Credits: this provider was initially based on the [vagrant-aws](https://github.c
|
|
19
19
|
* SSH into managed servers.
|
20
20
|
* Provision managed servers with any built-in Vagrant provisioner.
|
21
21
|
* Reboot a managed server.
|
22
|
-
*
|
22
|
+
* Synced folder support.
|
23
23
|
|
24
24
|
## Usage
|
25
25
|
|
@@ -133,10 +133,9 @@ specified, Vagrant will emit a warning and just ignore it.
|
|
133
133
|
|
134
134
|
## Synced Folders
|
135
135
|
|
136
|
-
There is minimal support for
|
137
|
-
|
138
|
-
|
139
|
-
the remote machine over SSH.
|
136
|
+
There is minimal synced folders support for provisioning linux guests
|
137
|
+
via rsync, and for windows guests via either smb, winrm or rsync
|
138
|
+
([see below](https://github.com/tknerr/vagrant-managed-servers#synced-folders-windows)).
|
140
139
|
|
141
140
|
This is good enough for all built-in Vagrant provisioners (shell,
|
142
141
|
chef, and puppet) to work!
|
@@ -163,12 +162,18 @@ config.vm.define 'my-windows-server' do |windows|
|
|
163
162
|
end
|
164
163
|
end
|
165
164
|
```
|
166
|
-
|
167
|
-
|
168
|
-
|
165
|
+
|
166
|
+
### Synced Folders (Windows)
|
167
|
+
Vagrant Managed Servers will try several different mechanisms to sync folders for Windows guests. In order of priority:
|
168
|
+
|
169
|
+
1. [SMB](http://docs.vagrantup.com/v2/synced-folders/smb.html) - requires running from a Windows host, an Administrative console, and Powershell 3 or greater. Note that there is a known [bug](https://github.com/mitchellh/vagrant/issues/3139) which causes the Powershell version check to hang for Powershell 2
|
170
|
+
2. [WinRM](https://github.com/cimpress-mcp/vagrant-winrm-syncedfolders) - uses the WinRM communicator and is reliable, but can be slow for large numbers of files.
|
171
|
+
3. [RSync](http://docs.vagrantup.com/v2/synced-folders/rsync.html) - requires `rsync.exe` installed and on your path.
|
172
|
+
|
173
|
+
Vagrant will try to use the best folder synchronization mechanism given your host and guest capabilities, but you can force a different type of folder sync with the `type` parameter of the `synced_folder` property in your Vagrantfile.
|
169
174
|
|
170
175
|
```ruby
|
171
|
-
windows.vm.synced_folder '.', '/vagrant',
|
176
|
+
windows.vm.synced_folder '.', '/vagrant', type: "winrm"
|
172
177
|
```
|
173
178
|
|
174
179
|
## Development
|
@@ -190,20 +195,20 @@ If those pass, you're ready to start developing the plugin. You can test
|
|
190
195
|
the plugin without installing it into your Vagrant environment by using the
|
191
196
|
`Vagrantfile` in the top level of this directory and use bundler to execute Vagrant.
|
192
197
|
|
193
|
-
First,
|
198
|
+
First, let's pretend we have a managed server by bringing up the `local_linux` vagrant VM with the default virtualbox provider:
|
194
199
|
|
195
200
|
```
|
196
|
-
$ bundle exec vagrant up
|
201
|
+
$ bundle exec vagrant up local_linux
|
197
202
|
```
|
198
203
|
|
199
|
-
Now you can use the managed provider (defined in a separate VM named `
|
204
|
+
Now you can use the managed provider (defined in a separate VM named `managed_linux`) to ssh into or provision the actual managed server:
|
200
205
|
|
201
206
|
```
|
202
207
|
$ # link vagrant with the server
|
203
|
-
$ bundle exec vagrant up
|
208
|
+
$ bundle exec vagrant up managed_linux --provider=managed
|
204
209
|
$ # ssh / provision
|
205
|
-
$ bundle exec vagrant ssh
|
206
|
-
$ bundle exec vagrant provision
|
210
|
+
$ bundle exec vagrant ssh managed_linux
|
211
|
+
$ bundle exec vagrant provision managed_linux
|
207
212
|
$ # unlink
|
208
|
-
$ bundle exec vagrant destroy
|
213
|
+
$ bundle exec vagrant destroy managed_linux
|
209
214
|
```
|
data/Rakefile
CHANGED
@@ -13,12 +13,15 @@ task :default => "spec"
|
|
13
13
|
|
14
14
|
desc "runs the acceptance \"test\" as described in README"
|
15
15
|
task :acceptance do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
['linux', 'windows'].each do |os|
|
17
|
+
begin
|
18
|
+
sh "vagrant up local_#{os}"
|
19
|
+
sh "vagrant up managed_#{os} --provider=managed"
|
20
|
+
sh "vagrant provision managed_#{os}"
|
21
|
+
sh "vagrant reload managed_#{os}"
|
22
|
+
ensure
|
23
|
+
sh "vagrant destroy -f managed_#{os}"
|
24
|
+
sh "vagrant destroy -f local_#{os}"
|
25
|
+
end
|
23
26
|
end
|
24
27
|
end
|
data/Vagrantfile
CHANGED
@@ -4,35 +4,66 @@
|
|
4
4
|
Vagrant.configure("2") do |config|
|
5
5
|
|
6
6
|
#
|
7
|
-
# fake a managed server by bringing up a virtualbox vm
|
7
|
+
# fake a managed linux server by bringing up a virtualbox vm
|
8
8
|
#
|
9
|
-
config.vm.define :
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
config.vm.define :local_linux do |ll_config|
|
10
|
+
ll_config.vm.box = "chef/ubuntu-12.04-i386"
|
11
|
+
ll_config.vm.network :private_network, ip: "192.168.40.35"
|
12
|
+
ll_config.berkshelf.enabled = false
|
13
|
+
ll_config.vm.synced_folder ".", "/vagrant", disabled: true
|
13
14
|
end
|
14
15
|
|
15
16
|
#
|
16
|
-
# configure managed provider to connect to `
|
17
|
+
# configure managed provider to connect to `local_linux`
|
17
18
|
#
|
18
|
-
config.vm.define :
|
19
|
+
config.vm.define :managed_linux do |ml_config|
|
19
20
|
|
20
|
-
|
21
|
+
ml_config.vm.box = "tknerr/managed-server-dummy"
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
ml_config.omnibus.chef_version = "12.0.3"
|
24
|
+
ml_config.berkshelf.enabled = true
|
25
|
+
|
26
|
+
ml_config.vm.provider :managed do |managed_config, override|
|
26
27
|
managed_config.server = "192.168.40.35"
|
27
28
|
override.ssh.username = "vagrant"
|
28
|
-
override.ssh.private_key_path = ".vagrant/machines/
|
29
|
+
override.ssh.private_key_path = ".vagrant/machines/local_linux/virtualbox/private_key"
|
29
30
|
end
|
30
31
|
|
31
|
-
|
32
|
+
ml_config.vm.provision :chef_solo do |chef|
|
32
33
|
chef.cookbooks_path = [ './cookbooks' ]
|
33
34
|
chef.add_recipe "apt"
|
34
35
|
chef.add_recipe "apache2"
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
39
|
+
|
40
|
+
|
41
|
+
#
|
42
|
+
# fake a managed windows server by bringing up a virtualbox vm
|
43
|
+
#
|
44
|
+
config.vm.define :local_windows do |lw_config|
|
45
|
+
lw_config.vm.box = "boxcutter/eval-win7x86-enterprise"
|
46
|
+
lw_config.vm.network :private_network, ip: "192.168.40.36"
|
47
|
+
lw_config.berkshelf.enabled = false
|
48
|
+
lw_config.vm.synced_folder ".", "/vagrant", disabled: true
|
49
|
+
end
|
50
|
+
|
51
|
+
#
|
52
|
+
# configure managed provider to connect to `local_windows`
|
53
|
+
#
|
54
|
+
config.vm.define :managed_windows do |mw_config|
|
55
|
+
|
56
|
+
mw_config.vm.box = "tknerr/managed-server-dummy"
|
57
|
+
|
58
|
+
mw_config.berkshelf.enabled = false
|
59
|
+
|
60
|
+
mw_config.vm.communicator = :winrm
|
61
|
+
mw_config.winrm.username = 'vagrant'
|
62
|
+
mw_config.winrm.password = 'vagrant'
|
63
|
+
|
64
|
+
mw_config.vm.provider :managed do |managed, override|
|
65
|
+
managed.server = '192.168.40.36'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
38
69
|
end
|
@@ -34,22 +34,6 @@ module VagrantPlugins
|
|
34
34
|
hostpath = File.expand_path(data[:hostpath], env[:root_path])
|
35
35
|
guestpath = data[:guestpath]
|
36
36
|
|
37
|
-
# Windows doesn't support ssh or rsync natively. Use winrm instead
|
38
|
-
if (env[:machine].config.vm.communicator == :winrm) then
|
39
|
-
env[:ui].info(I18n.t('vagrant_managed_servers.winrm_upload',
|
40
|
-
:hostpath => hostpath,
|
41
|
-
:guestpath => guestpath))
|
42
|
-
env[:machine].communicate.tap do |comm|
|
43
|
-
# When syncing many files, we've see SEC_E_INVALID_TOKEN errors
|
44
|
-
# that appear to be transient (try again and it goes away). Let's
|
45
|
-
# retry a few times to add some robustness.
|
46
|
-
retryable(tries: 3, sleep: 1) do
|
47
|
-
comm.upload(hostpath, guestpath)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
next
|
51
|
-
end
|
52
|
-
|
53
37
|
unless Vagrant::Util::Which.which('rsync')
|
54
38
|
env[:ui].warn(I18n.t('vagrant_managed_servers.rsync_not_found_warning'))
|
55
39
|
break
|
@@ -26,21 +26,6 @@ module VagrantPlugins
|
|
26
26
|
|
27
27
|
b2.use LinkServer
|
28
28
|
end
|
29
|
-
=begin
|
30
|
-
b.use HandleBoxUrl
|
31
|
-
b.use ConfigValidate
|
32
|
-
b.use Call, IsReachable do |env, b2|
|
33
|
-
if env[:result]
|
34
|
-
b2.use !MessageNotReachable
|
35
|
-
next
|
36
|
-
end
|
37
|
-
|
38
|
-
b2.use Provision
|
39
|
-
b2.use SyncFolders
|
40
|
-
b2.use WarnNetworks
|
41
|
-
b2.use LinkServer
|
42
|
-
end
|
43
|
-
=end
|
44
29
|
end
|
45
30
|
end
|
46
31
|
|
@@ -77,7 +62,15 @@ module VagrantPlugins
|
|
77
62
|
end
|
78
63
|
|
79
64
|
b3.use Provision
|
80
|
-
|
65
|
+
if env[:machine].config.vm.communicator == :winrm
|
66
|
+
# Use the builtin vagrant folder sync for Windows target servers.
|
67
|
+
# This gives us SMB folder sharing, which is much faster than the
|
68
|
+
# WinRM uploader for any non-trivial number of files.
|
69
|
+
b3.use Vagrant::Action::Builtin::SyncedFolders
|
70
|
+
else
|
71
|
+
# Vagrant managed servers custom implementation
|
72
|
+
b3.use SyncFolders
|
73
|
+
end
|
81
74
|
end
|
82
75
|
end
|
83
76
|
end
|
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.required_rubygems_version = ">= 1.3.6"
|
16
16
|
s.rubyforge_project = "vagrant-managed-servers"
|
17
17
|
|
18
|
+
s.add_runtime_dependency "vagrant-winrm-syncedfolders"
|
18
19
|
s.add_development_dependency "rake"
|
19
20
|
s.add_development_dependency "rspec-core", "~> 2.14.7"
|
20
21
|
s.add_development_dependency "rspec-expectations", "~> 2.14.5"
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-managed-servers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Torben Knerr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: vagrant-winrm-syncedfolders
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rake
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|