Merge pull request #9 from vStone/feature/hostmanager-as-provisioner

Use hostmanager as provisioner
This commit is contained in:
Shawn Dahlen 2013-05-02 12:10:42 -07:00
commit 8adc104ab8
4 changed files with 31 additions and 1 deletions

View File

@ -57,6 +57,17 @@ Vagrant.configure("2") do |config|
end
```
As a last option, you can also choose hostmanager as a provisioner.
This allows you to use the provisioning order to ensure that hostmanager
runs before or after provisioning. The provisioner will collect hosts from
boxes with the same provider as the running box.
Use:
```ruby
config.vm.provision :hostmanager
```
Contribute
----------
Contributions are welcome.

View File

@ -32,7 +32,7 @@ module VagrantPlugins
host = machine.config.vm.hostname || name
ip = get_ip_address.call(machine)
host_aliases = machine.config.hostmanager.aliases.join("\s").chomp
@logger.info "Adding /etc/hosts entry: #{ip} #{host} #{host_aliases}"
machine.env.ui.info "Adding /etc/hosts entry: #{ip} #{host} #{host_aliases}"
file << "#{ip}\t#{host}\s#{host_aliases}\n"
end
end

View File

@ -7,6 +7,8 @@ module VagrantPlugins
description <<-DESC
This plugin manages the /etc/hosts file for guest machines. An entry is
created for each active machine using the hostname attribute.
You can also use the hostmanager provisioner to update the hosts file.
DESC
config(:hostmanager) do
@ -22,6 +24,11 @@ module VagrantPlugins
hook.append(Action::UpdateHostsFile)
end
provisioner(:hostmanager) do
require_relative 'provisioner'
Provisioner
end
command(:hostmanager) do
require_relative 'command'
Command

View File

@ -0,0 +1,12 @@
module VagrantPlugins
module HostManager
class Provisioner < Vagrant.plugin('2', :provisioner)
include HostsFile
def provision
generate(@machine.env, @machine.box.provider.to_sym)
update(@machine)
end
end
end
end