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 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 Contribute
---------- ----------
Contributions are welcome. Contributions are welcome.

View File

@ -32,7 +32,7 @@ module VagrantPlugins
host = machine.config.vm.hostname || name host = machine.config.vm.hostname || name
ip = get_ip_address.call(machine) ip = get_ip_address.call(machine)
host_aliases = machine.config.hostmanager.aliases.join("\s").chomp 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" file << "#{ip}\t#{host}\s#{host_aliases}\n"
end end
end end

View File

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