vagrant-hostmanager 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c46205a89edc88b63ee7d7c113e567fb40b1dc84
4
+ data.tar.gz: 44bfdd6743cd8b5a9ff8e59369c358a655d1af0d
5
+ SHA512:
6
+ metadata.gz: 7563696329fd2701f04f66e4ea9b6c9d5d7b172cf67a95a1bb568050226b4f3e63f8c37e2b43384cf2ffc2a6f49df5ca6ca104485663e8eed41a2d911ba23962
7
+ data.tar.gz: 41666ea71d5427d9e23347474b75287d712540119501a5dde0b6491f3fe2caab188eeff2e2a45854f8370f2fc5ea273d26a5a42589de56bfb2b18b4bf104b92f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.5.0
4
+ ### Features
5
+ * hostmanager now runs *before* provisioning takes place, on `up` action [[#73](https://github.com/smdahlen/vagrant-hostmanager/issues/73)]
6
+
7
+ ### Bug fixes
8
+ * properly detect hosts file location on Windows guests [[#67](https://github.com/smdahlen/vagrant-hostmanager/pull/67)]
9
+ * do not add host if IP cannot be determined [[#85](https://github.com/smdahlen/vagrant-hostmanager/pull/85)]
10
+ * force moving of hosts file on Linux guests [[#93](https://github.com/smdahlen/vagrant-hostmanager/pull/93)]
11
+ * allow top-level config options (eg. `ip_resolver`) to propagate to machine configs [[#91](https://github.com/smdahlen/vagrant-hostmanager/issues/91)]
12
+
13
+ ### Miscelaneous
14
+ * add passwordless sudo instructions to README [[#95](https://github.com/smdahlen/vagrant-hostmanager/pull/95)]
15
+
16
+ [Full diff](https://github.com/smdahlen/vagrant-hostmanager/compare/v1.4.0...v1.5.0)
17
+
18
+
3
19
  ## 1.4.0
4
20
  ### Features
5
21
  * supports vagrant 1.5 [[#80](https://github.com/smdahlen/vagrant-hostmanager/issues/80), [#81](https://github.com/smdahlen/vagrant-hostmanager/pull/81)]
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
- gem 'vagrant', :git => 'git://github.com/mitchellh/vagrant.git', :tag => 'v1.5.1'
4
+ gem 'vagrant', :git => 'git://github.com/mitchellh/vagrant.git', :tag => 'v1.6.2'
5
5
  end
6
6
 
7
7
  group :plugins do
data/README.md CHANGED
@@ -6,7 +6,16 @@ resolution of multi-machine environments deployed with a cloud provider
6
6
  where IP addresses are not known in advance.
7
7
 
8
8
  *NOTE:* Version 1.1 of the plugin prematurely introduced a feature to hook into
9
- commands other than `vagrant up` and `vagrant destroy`. Version 1.1 broke support for some providers. Version 1.2 reverts this feature until a suitable implementation supporting all providers is available.
9
+ commands other than `vagrant up` and `vagrant destroy`. Version 1.1 broke support
10
+ for some providers. Version 1.2 reverts this feature until a suitable implementation
11
+ supporting all providers is available.
12
+
13
+ ***Potentially breaking change in v1.5.0:*** the running order on `vagrant up` has changed
14
+ so that hostmanager runs before provisioning takes place. This ensures all hostnames are
15
+ available to the guest when it is being provisioned
16
+ (see [#73](https://github.com/smdahlen/vagrant-hostmanager/issues/73)).
17
+ Previously, hostmanager would run as the very last action. If you depend on the old behavior,
18
+ see the [provisioner](#provisioner) section.
10
19
 
11
20
  Installation
12
21
  ------------
@@ -61,15 +70,26 @@ Vagrant.configure("2") do |config|
61
70
  end
62
71
  ```
63
72
 
64
- As a last option, you can use hostmanager as a provisioner.
65
- This allows you to use the provisioning order to ensure that hostmanager
66
- runs before or after provisioning. The provisioner will collect hosts from
67
- boxes with the same provider as the running box.
73
+ ### Provisioner
74
+
75
+ Starting at version 1.5.0, hostmanager runs before any provisioning occurs. If you
76
+ would like hostmanager to run after or during your provisioning stage,
77
+ you can use hostmanager as a provisioner. This allows you to use the provisioning
78
+ order to ensure that hostmanager runs when desired. The provisioner will collect
79
+ hosts from boxes with the same provider as the running box.
68
80
 
69
- Use:
81
+ Example:
70
82
 
71
83
  ```ruby
84
+ # Disable the default hostmanager behavior
85
+ config.hostmanager.enabled = false
86
+
87
+ # ... possible provisioner config before hostmanager ...
88
+
89
+ # hostmanager provisioner
72
90
  config.vm.provision :hostmanager
91
+
92
+ # ... possible provisioning config after hostmanager ...
73
93
  ```
74
94
 
75
95
  Custom IP resolver
@@ -92,15 +112,26 @@ config.hostmanager.ip_resolver = proc do |vm, resolving_vm|
92
112
  end
93
113
  ```
94
114
 
115
+ Passwordless sudo
116
+ -----------------
117
+
118
+ Add the following snippet to the sudoers file (for example, to
119
+ ```/etc/sudoers.d/vagrant_hostmanager```) to make it stop asking
120
+ password when updating hosts file (replace ```/home/user``` with your
121
+ actual home directory):
122
+
123
+ Cmnd_Alias VAGRANT_HOSTMANAGER_UPDATE = /bin/cp /home/user/.vagrant.d/tmp/hosts.local /etc/hosts
124
+ %sudo ALL=(root) NOPASSWD: VAGRANT_HOSTMANAGER_UPDATE
125
+
95
126
  Windows support
96
127
  ---------------
97
128
 
98
- Hostmanager will detect Windows guests and hosts and use the appropriate
129
+ Hostmanager will detect Windows guests and hosts and use the appropriate
99
130
  path for the ```hosts``` file: ```%WINDIR%\System32\drivers\etc\hosts```
100
131
 
101
132
  By default on a Windows host, the ```hosts``` file is not writable without
102
133
  elevated privileges. If hostmanager detects that it cannot overwrite the file,
103
- it will attempt to do so with elevated privileges, causing the
134
+ it will attempt to do so with elevated privileges, causing the
104
135
  [UAC](http://en.wikipedia.org/wiki/User_Account_Control) prompt to appear.
105
136
 
106
137
  ### UAC limitations
@@ -108,6 +139,19 @@ it will attempt to do so with elevated privileges, causing the
108
139
  Due to limitations caused by UAC, cancelling out of the UAC prompt will not cause any
109
140
  visible errors, however the ```hosts``` file will not be updated.
110
141
 
142
+ Installing development version
143
+ ------------------------------
144
+
145
+ If you want to install the bleeding version of vagrant-hostmanager (*at your own risk*), you can do the following
146
+ (requires ruby and git):
147
+
148
+ ```
149
+ git clone https://github.com/smdahlen/vagrant-hostmanager.git
150
+ cd vagrant-hostmanager
151
+ rake gem:build
152
+ vagrant plugin install pkg/vagrant-hostmanager-*.gem
153
+ ```
154
+
111
155
  Contribute
112
156
  ----------
113
157
  Contributions are welcome.
@@ -23,8 +23,6 @@ module VagrantPlugins
23
23
  end
24
24
 
25
25
  def call(env)
26
- # skip if machine is already active on up action
27
- return @app.call(env) if @machine.id && env[:machine_action] == :up
28
26
  # skip if machine is not active on destroy action
29
27
  return @app.call(env) if !@machine.id && env[:machine_action] == :destroy
30
28
 
@@ -13,20 +13,22 @@ module VagrantPlugins
13
13
  alias_method :manage_host?, :manage_host
14
14
 
15
15
  def initialize
16
- @enabled = false
17
- @manage_host = UNSET_VALUE
18
- @ignore_private_ip = UNSET_VALUE
19
- @include_offline = UNSET_VALUE
20
- @aliases = []
21
- @aliases = Array.new
22
- @include_offline = false
23
- @ip_resolver = nil
16
+ @enabled = UNSET_VALUE
17
+ @manage_host = UNSET_VALUE
18
+ @ignore_private_ip = UNSET_VALUE
19
+ @include_offline = UNSET_VALUE
20
+ @aliases = UNSET_VALUE
21
+ @ip_resolver = UNSET_VALUE
24
22
  end
25
23
 
26
24
  def finalize!
27
- @manage_host = false if @manage_host == UNSET_VALUE
28
- @ignore_private_ip = false if @ignore_private_ip == UNSET_VALUE
29
- @include_offline = false if @include_offline == UNSET_VALUE
25
+ @enabled = false if @enabled == UNSET_VALUE
26
+ @manage_host = false if @manage_host == UNSET_VALUE
27
+ @ignore_private_ip = false if @ignore_private_ip == UNSET_VALUE
28
+ @include_offline = false if @include_offline == UNSET_VALUE
29
+ @aliases = [] if @aliases == UNSET_VALUE
30
+ @ip_resolver = nil if @ip_resolver == UNSET_VALUE
31
+
30
32
  @aliases = [ @aliases ].flatten
31
33
  end
32
34
 
@@ -10,11 +10,15 @@ module VagrantPlugins
10
10
  realhostfile = '/etc/inet/hosts'
11
11
  move_cmd = 'mv'
12
12
  elsif (machine.communicate.test("test -d $Env:SystemRoot"))
13
- realhostfile = "#{ENV['WINDIR']}\\System32\\drivers\\etc\\hosts"
13
+ windir = ""
14
+ machine.communicate.execute("echo %SYSTEMROOT%", {:shell => :cmd}) do |type, contents|
15
+ windir << contents.gsub("\r\n", '') if type == :stdout
16
+ end
17
+ realhostfile = "#{windir}\\System32\\drivers\\etc\\hosts"
14
18
  move_cmd = 'mv -force'
15
19
  else
16
20
  realhostfile = '/etc/hosts'
17
- move_cmd = 'mv'
21
+ move_cmd = 'mv -f'
18
22
  end
19
23
  # download and modify file with Vagrant-managed entries
20
24
  file = @global_env.tmp_path.join("hosts.#{machine.name}")
@@ -80,7 +84,9 @@ module VagrantPlugins
80
84
  ip = get_ip_address(machine, resolving_machine)
81
85
  host = machine.config.vm.hostname || machine.name
82
86
  aliases = machine.config.hostmanager.aliases.join(' ').chomp
83
- "#{ip}\t#{host} #{aliases}\n"
87
+ if ip != nil
88
+ "#{ip}\t#{host} #{aliases}\n"
89
+ end
84
90
  end
85
91
 
86
92
  def get_ip_address(machine, resolving_machine)
@@ -17,7 +17,7 @@ module VagrantPlugins
17
17
  end
18
18
 
19
19
  action_hook(:hostmanager, :machine_action_up) do |hook|
20
- hook.prepend(Action.update_all)
20
+ hook.after(Vagrant::Action::Builtin::Provision, Action.update_all)
21
21
  end
22
22
 
23
23
  action_hook(:hostmanager, :machine_action_destroy) do |hook|
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module HostManager
3
- VERSION = '1.4.0'
3
+ VERSION = '1.5.0'
4
4
  end
5
5
  end
data/test/Vagrantfile CHANGED
@@ -33,4 +33,9 @@ Vagrant.configure('2') do |config|
33
33
  server.vm.network :private_network, :ip => '10.0.5.4'
34
34
  server.vm.provision :hostmanager
35
35
  end
36
- end
36
+
37
+ config.vm.define :server4 do |server|
38
+ server.vm.hostname = 'scruffy'
39
+ server.vm.provision :hostmanager
40
+ end
41
+ end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-hostmanager
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
5
- prerelease:
4
+ version: 1.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Shawn Dahlen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-03-18 00:00:00.000000000 Z
11
+ date: 2014-05-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,17 +27,15 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  description: A Vagrant plugin that manages the /etc/hosts file within a multi-machine
@@ -76,27 +71,26 @@ files:
76
71
  homepage:
77
72
  licenses:
78
73
  - MIT
74
+ metadata: {}
79
75
  post_install_message:
80
76
  rdoc_options: []
81
77
  require_paths:
82
78
  - lib
83
79
  required_ruby_version: !ruby/object:Gem::Requirement
84
- none: false
85
80
  requirements:
86
- - - ! '>='
81
+ - - '>='
87
82
  - !ruby/object:Gem::Version
88
83
  version: '0'
89
84
  required_rubygems_version: !ruby/object:Gem::Requirement
90
- none: false
91
85
  requirements:
92
- - - ! '>='
86
+ - - '>='
93
87
  - !ruby/object:Gem::Version
94
88
  version: '0'
95
89
  requirements: []
96
90
  rubyforge_project:
97
- rubygems_version: 1.8.23
91
+ rubygems_version: 2.0.14
98
92
  signing_key:
99
- specification_version: 3
93
+ specification_version: 4
100
94
  summary: A Vagrant plugin that manages the /etc/hosts file within a multi-machine
101
95
  environment
102
96
  test_files: