vagrant-managed-servers 0.7.1 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d4053a0343379e7e40a9e80a0e9ec9cceb26fc50
4
- data.tar.gz: 6237484b9a9618bb9bb36f88f5d132c3787b6af3
3
+ metadata.gz: 9bcb3b23240b46d355b5b2cf1c4ec8c6b8d3835a
4
+ data.tar.gz: cc618c2e2f2ba4639a9736997b5cddc6a1271ac3
5
5
  SHA512:
6
- metadata.gz: 9fade113ac4c6c2ca9d3bbacdebc5c1181d5a4ca3dce9591a1330ffe5dc338dc07086738d93b9fb8fcf3872eb31157ba76ef565130e85cba6c52b7190eb3af31
7
- data.tar.gz: 3f4e50f96c0cd21cafaa8af43a35ae582daa6d064e5f74fb35a1cc40058212018e32da300437deac49f2344f460d92a8d808c03f9723dcec79db8eeec49b2922
6
+ metadata.gz: 50427cdd98b0afc5f39bb17cedc8d679bb0ebf50e11c8fd28bdbf9e360fd8ecc4f1d18837047d80db4dba2f8b95675b4933945d5e562a927870489b21eae17f6
7
+ data.tar.gz: 3b332208c37d114be59daa43114201eae97faeaa4b8176109b7b423982d6a52995c1366285f85e869cb8df71d3ce909fd902391b9c14c3371ce9d50d3c3173d0
@@ -1,5 +1,11 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
- - 2.0.0
4
+ - 2.2.5
5
+
6
+ before_install:
7
+ - rvm @global do gem uninstall bundler --executables
8
+ - gem install bundler --version '1.12.5'
9
+
4
10
  script:
5
- - bundle exec rake spec
11
+ - bundle exec rake spec
@@ -1,9 +1,20 @@
1
1
 
2
- # Changelog
2
+ # CHANGELOG
3
+
4
+ ## 0.8.0 (released 2016-11-04)
5
+
6
+ * add Vagrant 1.8.5 compatibility and fix TravisCI build (see [#64](https://github.com/tknerr/vagrant-managed-servers/pull/64))
7
+ * decouple from [vagrant-winrm-syncedfolders](https://github.com/Cimpress-MCP/vagrant-winrm-syncedfolders), which now needs to be installed separately (see [#65](https://github.com/tknerr/vagrant-managed-servers/pull/65), which reverts [#51](https://github.com/tknerr/vagrant-managed-servers/pull/51) and applies [#50](https://github.com/tknerr/vagrant-managed-servers/pull/50). thanks @chrisbaldauf!)
8
+ * ensure rsync does not keep stale files by adding the `--del` option (see [#61](https://github.com/tknerr/vagrant-managed-servers/issues/61), thanks @stephencooke!)
9
+ * add support for `vagrant share` command (see [#67](https://github.com/tknerr/vagrant-managed-servers/pull/67), thanks @nigelgbanks!)
10
+ * using the vagrant builtin SyncedFolder implementation (see [#68](https://github.com/tknerr/vagrant-managed-servers/pull/68)), which also fixes:
11
+ * [#17](https://github.com/tknerr/vagrant-managed-servers/pull/17) Reuse Rsync Action from Vagrant Core
12
+ * [#24](https://github.com/tknerr/vagrant-managed-servers/pull/24) rsync__exclude does not work
13
+ * [#52](https://github.com/tknerr/vagrant-managed-servers/pull/52) vagrant rsync and vagrant rsync-auto not working
3
14
 
4
15
  ## 0.7.1 (released 2015-05-22)
5
16
 
6
- * fix bug where the vagrant-winrm-syncedfolders plugin dependency is not properly loaded (see [#49](https://github.com/tknerr/vagrant-managed-servers/issues/49), thanks @chrisbaldauf for the fix!)
17
+ * fix bug where the vagrant-winrm-syncedfolders plugin dependency is not properly loaded (see [#49](https://github.com/tknerr/vagrant-managed-servers/issues/49), thanks @chrisbaldauf for the fix!)
7
18
 
8
19
  ## 0.7.0 (released 2015-05-22)
9
20
 
data/Gemfile CHANGED
@@ -1,17 +1,19 @@
1
1
  source "https://rubygems.org"
2
2
 
3
+ ruby ">= 2.2.3"
4
+
3
5
  gemspec
4
6
 
5
7
  group :development do
6
8
  # We depend on Vagrant for development, but we don't add it as a
7
9
  # gem dependency because we expect to be installed within the
8
10
  # Vagrant environment itself using `vagrant plugin`.
9
- gem "vagrant", git: "https://github.com/mitchellh/vagrant.git", ref: "v1.7.2"
11
+ gem "vagrant", git: "https://github.com/mitchellh/vagrant.git", ref: "v1.8.5"
10
12
  end
11
13
 
12
14
  group :plugins do
13
15
  gem "vagrant-managed-servers", path: "."
14
16
  gem "vagrant-omnibus", "1.4.1"
15
17
  gem "vagrant-berkshelf", "4.0.4"
16
- gem "vagrant-winrm-syncedfolders"
18
+ gem "vagrant-winrm-syncedfolders", "0.1.0"
17
19
  end
data/README.md CHANGED
@@ -6,20 +6,19 @@ This is a [Vagrant](http://www.vagrantup.com) 1.6+ plugin that adds a provider f
6
6
 
7
7
  Since you don't control the lifecycle:
8
8
  * `up` and `destroy` are re-interpreted as "linking" / "unlinking" vagrant with a managed server
9
- * once "linked", the `ssh` and `provision` commands work as expected and `status` shows the managed server as either "running" or "not reachable"
9
+ * once "linked", the `ssh`, `provision` and `share` commands work as expected, and `status` shows the managed server as either "running" or "not reachable"
10
10
  * `reload` will issue a reboot command on the managed server (cross your fingers ;-))
11
11
  * `halt`, `suspend` and `resume` are no-ops in this provider
12
12
 
13
13
  Credits: this provider was initially based on the [vagrant-aws](https://github.com/mitchellh/vagrant-aws) provider with the AWS-specific functionality stripped out.
14
14
 
15
- **NOTE:** This plugin requires Vagrant 1.2+
16
-
17
15
  ## Features
18
16
 
19
17
  * SSH into managed servers.
20
18
  * Provision managed servers with any built-in Vagrant provisioner.
21
19
  * Reboot a managed server.
22
20
  * Synced folder support.
21
+ * Provide access to a managed server via Vagrant Share.
23
22
 
24
23
  ## Usage
25
24
 
@@ -90,7 +89,7 @@ If you try any of the other VM lifecycle commands like `halt`, `suspend`, `resum
90
89
 
91
90
  Every provider in Vagrant must introduce a custom box format. This provider introduces a "dummy box" for the `managed` provider which is really nothing more than the required `metadata.json` with the provider name set to "managed".
92
91
 
93
- For Vagrant 1.5+ you can use the [tknerr/managed-server-dummy](https://vagrantcloud.com/tknerr/managed-server-dummy) vagrantcloud box:
92
+ You can use the [tknerr/managed-server-dummy](https://atlas.hashicorp.com/tknerr/boxes/managed-server-dummy) box like that:
94
93
  ```ruby
95
94
  Vagrant.configure("2") do |config|
96
95
  config.vm.box = "tknerr/managed-server-dummy"
@@ -98,15 +97,6 @@ Vagrant.configure("2") do |config|
98
97
  end
99
98
  ```
100
99
 
101
- For Vagrant < 1.5 you can point to the [dummy.box](https://github.com/tknerr/vagrant-managed-servers/raw/master/dummy.box) URL directly:
102
- ```ruby
103
- Vagrant.configure("2") do |config|
104
- config.vm.box = "managed-server-dummy"
105
- config.vm.box_url = "https://github.com/tknerr/vagrant-managed-servers/raw/master/dummy.box"
106
- ...
107
- end
108
- ```
109
-
110
100
  ## Configuration
111
101
 
112
102
  This provider currently exposes only a single provider-specific configuration option:
@@ -120,7 +110,7 @@ Vagrant.configure("2") do |config|
120
110
  # ... other stuff
121
111
 
122
112
  config.vm.provider :managed do |managed|
123
- managed.server = "some-server.org"
113
+ managed.server = "myserver.mydomain.com"
124
114
  end
125
115
  end
126
116
  ```
@@ -164,7 +154,7 @@ end
164
154
  ```
165
155
 
166
156
  ### Synced Folders (Windows)
167
- Vagrant Managed Servers will try several different mechanisms to sync folders for Windows guests. In order of priority:
157
+ It is recommended that you install the `vagrant-winrm-syncedfolders` plugin for communicating with Windows guests (`vagrant plugin install vagrant-winrm-syncedfolders`). Once installed, Vagrant Managed Servers will try several different mechanisms to sync folders for Windows guests. In order of priority:
168
158
 
169
159
  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
160
  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.
@@ -1,7 +1,6 @@
1
1
  require "pathname"
2
2
 
3
3
  require "vagrant-managed-servers/plugin"
4
- require "vagrant-winrm-syncedfolders/plugin"
5
4
 
6
5
  module VagrantPlugins
7
6
  module ManagedServers
@@ -62,15 +62,9 @@ module VagrantPlugins
62
62
  end
63
63
 
64
64
  b3.use Provision
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
65
+ b3.use WarnWinRMSyncedFolders
66
+ b3.use Vagrant::Action::Builtin::SyncedFolderCleanup
67
+ b3.use Vagrant::Action::Builtin::SyncedFolders
74
68
  end
75
69
  end
76
70
  end
@@ -152,11 +146,11 @@ module VagrantPlugins
152
146
  autoload :MessageNotLinked, action_root.join("message_not_linked")
153
147
  autoload :MessageAlreadyLinked, action_root.join("message_already_linked")
154
148
  autoload :ReadState, action_root.join("read_state")
155
- autoload :SyncFolders, action_root.join("sync_folders")
156
149
  autoload :WarnNetworks, action_root.join("warn_networks")
157
150
  autoload :LinkServer, action_root.join("link_server")
158
151
  autoload :UnlinkServer, action_root.join("unlink_server")
159
152
  autoload :RebootServer, action_root.join("reboot_server")
153
+ autoload :WarnWinRMSyncedFolders, action_root.join("warn_winrm_syncedfolders")
160
154
  end
161
155
  end
162
156
  end
@@ -0,0 +1,19 @@
1
+ module VagrantPlugins
2
+ module ManagedServers
3
+ module Action
4
+ class WarnWinRMSyncedFolders
5
+ def initialize(app, env)
6
+ @app = app
7
+ end
8
+
9
+ def call(env)
10
+ if env[:machine].config.vm.communicator == :winrm && !Vagrant.has_plugin?("vagrant-winrm-syncedfolders")
11
+ env[:ui].warn(I18n.t("vagrant_managed_servers.warn_winrm_syncedfolders"))
12
+ end
13
+
14
+ @app.call(env)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ module VagrantPlugins
2
+ module ManagedServers
3
+ module Cap
4
+ # Returns guest's IP address that can be used to access the VM from the
5
+ # host machine.
6
+ #
7
+ # @return [String] Guest's IP address
8
+ def self.public_address(machine)
9
+ return nil if machine.state.id != :running
10
+
11
+ ssh_info = machine.ssh_info
12
+ return nil if !ssh_info
13
+ ssh_info[:host]
14
+ end
15
+ end
16
+ end
17
+ end
@@ -33,6 +33,11 @@ module VagrantPlugins
33
33
  Provider
34
34
  end
35
35
 
36
+ provider_capability(:managed, :public_address) do
37
+ require_relative 'cap'
38
+ Cap
39
+ end
40
+
36
41
  # This initializes the internationalization strings.
37
42
  def self.setup_i18n
38
43
  I18n.load_path << File.expand_path("locales/en.yml", ManagedServers.source_root)
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module ManagedServers
3
- VERSION = "0.7.1"
3
+ VERSION = "0.8.0"
4
4
  end
5
5
  end
@@ -3,6 +3,10 @@ en:
3
3
  warn_networks: |-
4
4
  Warning! The ManagedServers provider doesn't support any of the Vagrant
5
5
  high-level network configurations (`config.vm.network`). They will be ignored.
6
+ warn_winrm_syncedfolders: |-
7
+ Warning! The vagrant-winrm-syncedfolders plugin was not found and
8
+ is recommended for Windows guests. Install it with
9
+ `vagrant plugin install vagrant-winrm-syncedfolders`.
6
10
  rsync_not_found_warning: |-
7
11
  Warning! Folder sync disabled because the rsync binary is missing.
8
12
  Make sure rsync is installed and the binary can be found in the PATH.
@@ -15,7 +15,6 @@ 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"
19
18
  s.add_development_dependency "rake"
20
19
  s.add_development_dependency "rspec-core", "~> 2.14.7"
21
20
  s.add_development_dependency "rspec-expectations", "~> 2.14.5"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-managed-servers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.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-05-22 00:00:00.000000000 Z
11
+ date: 2016-11-04 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'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -106,9 +92,10 @@ files:
106
92
  - lib/vagrant-managed-servers/action/message_not_reachable.rb
107
93
  - lib/vagrant-managed-servers/action/read_state.rb
108
94
  - lib/vagrant-managed-servers/action/reboot_server.rb
109
- - lib/vagrant-managed-servers/action/sync_folders.rb
110
95
  - lib/vagrant-managed-servers/action/unlink_server.rb
111
96
  - lib/vagrant-managed-servers/action/warn_networks.rb
97
+ - lib/vagrant-managed-servers/action/warn_winrm_syncedfolders.rb
98
+ - lib/vagrant-managed-servers/cap.rb
112
99
  - lib/vagrant-managed-servers/config.rb
113
100
  - lib/vagrant-managed-servers/errors.rb
114
101
  - lib/vagrant-managed-servers/plugin.rb
@@ -138,9 +125,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
125
  version: 1.3.6
139
126
  requirements: []
140
127
  rubyforge_project: vagrant-managed-servers
141
- rubygems_version: 2.4.4
128
+ rubygems_version: 2.4.5.1
142
129
  signing_key:
143
130
  specification_version: 4
144
131
  summary: Enables Vagrant to ssh into and provision managed servers.
145
132
  test_files: []
146
- has_rdoc:
@@ -1,88 +0,0 @@
1
- require "log4r"
2
-
3
- require "vagrant/util/subprocess"
4
-
5
- require "vagrant/util/scoped_hash_override"
6
-
7
- require "vagrant/util/which"
8
-
9
- module VagrantPlugins
10
- module ManagedServers
11
- module Action
12
- # This middleware uses `rsync` to sync the folders over to the
13
- # AWS instance.
14
- class SyncFolders
15
- include Vagrant::Util::ScopedHashOverride
16
- include Vagrant::Util::Retryable
17
-
18
- def initialize(app, env)
19
- @app = app
20
- @logger = Log4r::Logger.new("vagrant_managed_servers::action::sync_folders")
21
- end
22
-
23
- def call(env)
24
- @app.call(env)
25
-
26
- ssh_info = env[:machine].ssh_info
27
-
28
- env[:machine].config.vm.synced_folders.each do |id, data|
29
- data = scoped_hash_override(data, :aws)
30
-
31
- # Ignore disabled shared folders
32
- next if data[:disabled]
33
-
34
- hostpath = File.expand_path(data[:hostpath], env[:root_path])
35
- guestpath = data[:guestpath]
36
-
37
- unless Vagrant::Util::Which.which('rsync')
38
- env[:ui].warn(I18n.t('vagrant_managed_servers.rsync_not_found_warning'))
39
- break
40
- end
41
-
42
- # Make sure there is a trailing slash on the host path to
43
- # avoid creating an additional directory with rsync
44
- hostpath = "#{hostpath}/" if hostpath !~ /\/$/
45
-
46
- # on windows rsync.exe requires cygdrive-style paths
47
- if Vagrant::Util::Platform.windows?
48
- hostpath = hostpath.gsub(/^(\w):/) { "/cygdrive/#{$1}" }
49
- end
50
-
51
- env[:ui].info(I18n.t("vagrant_managed_servers.rsync_folder",
52
- :hostpath => hostpath,
53
- :guestpath => guestpath))
54
-
55
- # Create the guest path
56
- env[:machine].communicate.sudo("mkdir -p '#{guestpath}'")
57
- env[:machine].communicate.sudo(
58
- "chown -R '#{ssh_info[:username]}' '#{guestpath}'")
59
-
60
- # Rsync over to the guest path using the SSH info
61
- ssh_key_options = Array(ssh_info[:private_key_path]).map { |path| "-i '#{path}' " }.join
62
- ssh_proxy_commands = Array(ssh_info[:proxy_command]).map { |command| "-o ProxyCommand='#{command}' "}.join
63
- command = [
64
- "rsync", "--verbose", "--archive", "-z",
65
- "--exclude", ".vagrant/", "--exclude", "Vagrantfile",
66
- "-e", "ssh -l '#{ssh_info[:username]}' -p #{ssh_info[:port]} -o StrictHostKeyChecking=no #{ssh_key_options} #{ssh_proxy_commands}",
67
- hostpath,
68
- "#{ssh_info[:host]}:#{guestpath}"]
69
-
70
- # we need to fix permissions when using rsync.exe on windows, see
71
- # http://stackoverflow.com/questions/5798807/rsync-permission-denied-created-directories-have-no-permissions
72
- if Vagrant::Util::Platform.windows?
73
- command.insert(1, "--chmod", "ugo=rwX")
74
- end
75
-
76
- r = Vagrant::Util::Subprocess.execute(*command)
77
- if r.exit_code != 0
78
- raise Errors::RsyncError,
79
- :guestpath => guestpath,
80
- :hostpath => hostpath,
81
- :stderr => r.stderr
82
- end
83
- end
84
- end
85
- end
86
- end
87
- end
88
- end