Sha256: 721cdf7d96b09fe1940e7b2157e1de3d3e3448675fbac5699b838adbb97f6f95
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
require 'vagrant' require 'vagrant-hosts/addresses' module VagrantHosts module Provisioner class Hosts < Vagrant.plugin('2', :provisioner) include VagrantHosts::Addresses def provision @machine.guest.capability(:sync_hosts, @config) sync_hosts! if @config.sync_hosts end def cleanup sync_hosts! if @config.sync_hosts end private # Update hosts on other VMs. def sync_hosts! env = @machine.env # Gathers every _other_ machine in the vagrant environment which is # running and has a hosts provider. machines_to_provision = all_machines(env).select do |vm| calling_machine = (vm.name.to_s == machine.name.to_s) running = begin vm.communicate.ready? rescue Vagrant::Errors::VagrantError # WinRM will raise an error if the VM isn't running instead of # returning false (mitchellh/vagrant#6356). false end has_hosts = vm.config.provisioners.any? {|p| p.type.intern == :hosts} running && has_hosts && (not calling_machine) end machines_to_provision.each do |vm| vm.ui.info "Updating hosts on: #{vm.name}" vm.config.vm.provisioners.select {|p| p.type.intern == :hosts}.each do |p| # Duplicate the hosts configuration. hosts_config = @config.class.new.merge(p.config) # Set sync_hosts to false to avoid recursion. hosts_config.sync_hosts = false hosts_config.finalize! self.class.new(vm, hosts_config).provision end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vagrant-hosts-2.6.1 | lib/vagrant-hosts/provisioner/hosts.rb |