Merge branch 'sevos-enable_using_private_ips_from_aws'
This commit is contained in:
		
						commit
						9bc81fc318
					
				
							
								
								
									
										19
									
								
								README.md
								
								
								
								
							
							
						
						
									
										19
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -72,6 +72,25 @@ Use:
 | 
				
			||||||
config.vm.provision :hostmanager
 | 
					config.vm.provision :hostmanager
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Custom IP resolver
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can customize way, how host manager resolves IP address
 | 
				
			||||||
 | 
					for each machine. This might be handy in case of aws provider,
 | 
				
			||||||
 | 
					where host name is stored in ssh_info hash of each machine.
 | 
				
			||||||
 | 
					This causes generation of invalid /etc/hosts file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Custom IP resolver gives you oportunity to calculate IP address
 | 
				
			||||||
 | 
					for each machine by yourself. For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```ruby
 | 
				
			||||||
 | 
					config.hostmanager.ip_resolver = proc do |vm|
 | 
				
			||||||
 | 
					  if hostname = (vm.ssh_info && vm.ssh_info[:host])
 | 
				
			||||||
 | 
					    `host #{hostname}`.split("\n").last[/(\d+\.\d+\.\d+\.\d+)/, 1]
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Contribute
 | 
					Contribute
 | 
				
			||||||
----------
 | 
					----------
 | 
				
			||||||
Contributions are welcome.
 | 
					Contributions are welcome.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ module VagrantPlugins
 | 
				
			||||||
      attr_accessor :ignore_private_ip
 | 
					      attr_accessor :ignore_private_ip
 | 
				
			||||||
      attr_accessor :aliases
 | 
					      attr_accessor :aliases
 | 
				
			||||||
      attr_accessor :include_offline
 | 
					      attr_accessor :include_offline
 | 
				
			||||||
 | 
					      attr_accessor :ip_resolver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      alias_method :enabled?, :enabled
 | 
					      alias_method :enabled?, :enabled
 | 
				
			||||||
      alias_method :include_offline?, :include_offline
 | 
					      alias_method :include_offline?, :include_offline
 | 
				
			||||||
| 
						 | 
					@ -17,6 +18,9 @@ module VagrantPlugins
 | 
				
			||||||
        @ignore_private_ip = UNSET_VALUE
 | 
					        @ignore_private_ip = UNSET_VALUE
 | 
				
			||||||
        @include_offline = UNSET_VALUE
 | 
					        @include_offline = UNSET_VALUE
 | 
				
			||||||
        @aliases = []
 | 
					        @aliases = []
 | 
				
			||||||
 | 
					        @aliases = Array.new
 | 
				
			||||||
 | 
					        @include_offline = false
 | 
				
			||||||
 | 
					        @ip_resolver = nil
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      def finalize!
 | 
					      def finalize!
 | 
				
			||||||
| 
						 | 
					@ -35,7 +39,8 @@ module VagrantPlugins
 | 
				
			||||||
        errors << validate_bool('hostmanager.include_offline', @include_offline)
 | 
					        errors << validate_bool('hostmanager.include_offline', @include_offline)
 | 
				
			||||||
        errors.compact!
 | 
					        errors.compact!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if !machine.config.hostmanager.aliases.kind_of?(Array) and
 | 
					        # check if aliases option is an Array
 | 
				
			||||||
 | 
					        if  !machine.config.hostmanager.aliases.kind_of?(Array) &&
 | 
				
			||||||
            !machine.config.hostmanager.aliases.kind_of?(String)
 | 
					            !machine.config.hostmanager.aliases.kind_of?(String)
 | 
				
			||||||
          errors << I18n.t('vagrant_hostmanager.config.not_an_array_or_string', {
 | 
					          errors << I18n.t('vagrant_hostmanager.config.not_an_array_or_string', {
 | 
				
			||||||
            :config_key => 'hostmanager.aliases',
 | 
					            :config_key => 'hostmanager.aliases',
 | 
				
			||||||
| 
						 | 
					@ -43,7 +48,16 @@ module VagrantPlugins
 | 
				
			||||||
          })
 | 
					          })
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        { 'HostManager configuration' => errors }
 | 
					        if !machine.config.hostmanager.ip_resolver.nil? &&
 | 
				
			||||||
 | 
					           !machine.config.hostmanager.ip_resolver.kind_of?(Proc)
 | 
				
			||||||
 | 
					          errors << I18n.t('vagrant_hostmanager.config.not_a_proc', {
 | 
				
			||||||
 | 
					            :config_key => 'hostmanager.ip_resolver',
 | 
				
			||||||
 | 
					            :is_class   => ip_resolver.class.to_s,
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        errors.compact!
 | 
				
			||||||
 | 
					        { "HostManager configuration" => errors }
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      private
 | 
					      private
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,6 +91,10 @@ module VagrantPlugins
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      def get_ip_address(machine)
 | 
					      def get_ip_address(machine)
 | 
				
			||||||
 | 
					        custom_ip_resolver = machine.config.hostmanager.ip_resolver
 | 
				
			||||||
 | 
					        if custom_ip_resolver
 | 
				
			||||||
 | 
					          custom_ip_resolver.call(machine)
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
          ip = nil
 | 
					          ip = nil
 | 
				
			||||||
          if machine.config.hostmanager.ignore_private_ip != true
 | 
					          if machine.config.hostmanager.ignore_private_ip != true
 | 
				
			||||||
            machine.config.vm.networks.each do |network|
 | 
					            machine.config.vm.networks.each do |network|
 | 
				
			||||||
| 
						 | 
					@ -99,6 +103,7 @@ module VagrantPlugins
 | 
				
			||||||
              next if ip
 | 
					              next if ip
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
          end
 | 
					          end
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
        ip || (machine.ssh_info ? machine.ssh_info[:host] : nil)
 | 
					        ip || (machine.ssh_info ? machine.ssh_info[:host] : nil)
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,3 +7,4 @@ en:
 | 
				
			||||||
    config:
 | 
					    config:
 | 
				
			||||||
      not_a_bool: "A value for %{config_key} can only be true or false, not type '%{value}'"
 | 
					      not_a_bool: "A value for %{config_key} can only be true or false, not type '%{value}'"
 | 
				
			||||||
      not_an_array_or_string: "A value for %{config_key} must be an Array or String, not type '%{is_class}'"
 | 
					      not_an_array_or_string: "A value for %{config_key} must be an Array or String, not type '%{is_class}'"
 | 
				
			||||||
 | 
					      not_a_proc: "A value for %{config_key} must be a Proc, not type '%{is_class}'"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue