vagrant-managed-servers 0.6.2 → 0.7.0
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/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
|