landrush 1.1.0.beta.1 → 1.1.0.beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +5 -14
- data/.travis.yml +1 -1
- data/README.md +29 -5
- data/lib/landrush.rb +0 -2
- data/lib/landrush/action/setup.rb +2 -12
- data/lib/landrush/cap/{all → guest/all}/read_host_visible_ip_address.rb +0 -0
- data/lib/landrush/cap/{debian → guest/debian}/install_iptables.rb +0 -0
- data/lib/landrush/cap/{debian → guest/debian}/iptables_installed.rb +0 -0
- data/lib/landrush/cap/{linux → guest/linux}/add_iptables_rule.rb +1 -1
- data/lib/landrush/cap/{linux → guest/linux}/configured_dns_servers.rb +0 -0
- data/lib/landrush/cap/{linux → guest/linux}/redirect_dns.rb +0 -0
- data/lib/landrush/cap/{redhat → guest/redhat}/install_iptables.rb +0 -0
- data/lib/landrush/cap/{redhat → guest/redhat}/iptables_installed.rb +0 -0
- data/lib/landrush/cap/host/darwin/configure_visibility_on_host.rb +62 -0
- data/lib/landrush/cap/host/debian/dnsmasq_installed.rb +11 -0
- data/lib/landrush/cap/host/debian/host.rb +11 -0
- data/lib/landrush/cap/host/debian/install_dnsmasq.rb +12 -0
- data/lib/landrush/cap/host/debian/restart_dnsmasq.rb +11 -0
- data/lib/landrush/cap/host/linux/configure_visibility_on_host.rb +18 -0
- data/lib/landrush/cap/host/linux/create_dnsmasq_config.rb +65 -0
- data/lib/landrush/cap/host/redhat/dnsmasq_installed.rb +11 -0
- data/lib/landrush/cap/host/redhat/install_dnsmasq.rb +14 -0
- data/lib/landrush/cap/host/redhat/restart_dnsmasq.rb +23 -0
- data/lib/landrush/cap/host/ubuntu/host.rb +12 -0
- data/lib/landrush/cap/host/windows/configure_visibility_on_host.rb +187 -0
- data/lib/landrush/config.rb +22 -15
- data/lib/landrush/plugin.rb +68 -8
- data/lib/landrush/version.rb +1 -1
- data/test/landrush/action/setup_test.rb +4 -34
- data/test/landrush/cap/{all → guest/all}/read_host_visible_ip_address_test.rb +1 -1
- data/test/landrush/cap/{linux → guest/linux}/configured_dns_servers_test.rb +1 -1
- data/test/landrush/cap/{linux → guest/linux}/redirect_dns_test.rb +2 -5
- data/test/landrush/cap/host/darwin/configure_visibility_on_host_test.rb +56 -0
- data/test/landrush/cap/host/linux/configure_visibility_on_host_test.rb +34 -0
- data/test/landrush/cap/host/windows/configure_visibility_on_host_test.rb +70 -0
- data/test/test_helper.rb +28 -17
- metadata +34 -26
- data/lib/landrush/resolver_config.rb +0 -68
- data/lib/landrush/win_network_config.rb +0 -185
- data/test/landrush/resolver_config_test.rb +0 -19
- data/test/landrush/win_network_config_test.rb +0 -70
- data/test/support/fake_resolver_config.rb +0 -25
- data/test/support/fake_ui.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89f28bf5fa282162cba9dc132f50560eb81c75d9
|
4
|
+
data.tar.gz: 25859eb10f91b1c228f8c4b0e80db1a6f27b664f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b407b73d6ad43a9c40407d31e2512526180044f82705d7434476f8e22be53cec32ec8748edb4ef63890355365917eb1a5290dfc1016ae026da7784ff12cc3f7e
|
7
|
+
data.tar.gz: db40198c92d2efc3933ca00e9339ceba69c7f607d5118a438d0d2c9614ba2a183914ce3f26b5c028515d60e936fd6b132ef19698218732fa773f2b94678dae07
|
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
CHANGED
@@ -89,7 +89,6 @@ Style/GuardClause:
|
|
89
89
|
Exclude:
|
90
90
|
- 'lib/landrush/action/teardown.rb'
|
91
91
|
- 'lib/landrush/server.rb'
|
92
|
-
- 'test/support/fake_resolver_config.rb'
|
93
92
|
- 'test/support/test_server_daemon.rb'
|
94
93
|
|
95
94
|
# Offense count: 13
|
@@ -107,7 +106,6 @@ Style/IfUnlessModifier:
|
|
107
106
|
- 'lib/landrush/action/common.rb'
|
108
107
|
- 'lib/landrush/config.rb'
|
109
108
|
- 'lib/landrush/server.rb'
|
110
|
-
- 'test/support/fake_resolver_config.rb'
|
111
109
|
- 'test/support/test_server_daemon.rb'
|
112
110
|
|
113
111
|
# Offense count: 4
|
@@ -117,13 +115,6 @@ Style/IfUnlessModifier:
|
|
117
115
|
Style/IndentArray:
|
118
116
|
EnforcedStyle: consistent
|
119
117
|
|
120
|
-
|
121
|
-
# Offense count: 5
|
122
|
-
# Cop supports --auto-correct.
|
123
|
-
Style/MutableConstant:
|
124
|
-
Exclude:
|
125
|
-
- 'issues/vbox/Vagrantfile'
|
126
|
-
|
127
118
|
# Offense count: 1
|
128
119
|
# Cop supports --auto-correct.
|
129
120
|
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
|
@@ -138,7 +129,7 @@ Style/Next:
|
|
138
129
|
Style/PercentLiteralDelimiters:
|
139
130
|
Exclude:
|
140
131
|
- 'landrush.gemspec'
|
141
|
-
- 'lib/landrush/cap/linux/redirect_dns.rb'
|
132
|
+
- 'lib/landrush/cap/guest/linux/redirect_dns.rb'
|
142
133
|
- 'test/landrush/action/setup_test.rb'
|
143
134
|
- 'test/landrush/store_test.rb'
|
144
135
|
|
@@ -148,7 +139,7 @@ Style/PercentLiteralDelimiters:
|
|
148
139
|
# SupportedStyles: lower_case_q, upper_case_q
|
149
140
|
Style/PercentQLiterals:
|
150
141
|
Exclude:
|
151
|
-
- 'lib/landrush/cap/linux/read_host_visible_ip_address.rb'
|
142
|
+
- 'lib/landrush/cap/guest/linux/read_host_visible_ip_address.rb'
|
152
143
|
|
153
144
|
|
154
145
|
# Offense count: 7
|
@@ -200,7 +191,7 @@ Style/StringLiterals:
|
|
200
191
|
# IgnoredMethods: respond_to
|
201
192
|
Style/SymbolProc:
|
202
193
|
Exclude:
|
203
|
-
- 'lib/landrush/cap/linux/read_host_visible_ip_address.rb'
|
194
|
+
- 'lib/landrush/cap/guest/linux/read_host_visible_ip_address.rb'
|
204
195
|
|
205
196
|
# Offense count: 2
|
206
197
|
# Cop supports --auto-correct.
|
@@ -216,5 +207,5 @@ Style/TrivialAccessors:
|
|
216
207
|
Style/UnneededPercentQ:
|
217
208
|
Exclude:
|
218
209
|
- 'landrush.gemspec'
|
219
|
-
- 'lib/landrush/cap/linux/add_iptables_rule.rb'
|
220
|
-
- 'lib/landrush/cap/linux/read_host_visible_ip_address.rb'
|
210
|
+
- 'lib/landrush/cap/guest/linux/add_iptables_rule.rb'
|
211
|
+
- 'lib/landrush/cap/guest/linux/read_host_visible_ip_address.rb'
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -28,6 +28,7 @@ problems using Landrush on Windows please let us know.
|
|
28
28
|
- [Additional CLI commands](#additional-cli-commands)
|
29
29
|
- [Miscellaneous Tricks and Tips](#miscellaneous-tricks-and-tips)
|
30
30
|
- [How to avoid providing sudo password on OS X](#how-to-avoid-providing-sudo-password-on-os-x)
|
31
|
+
- [Guest is unable to access the Internet](#guest-is-unable-to-access-the-internet)
|
31
32
|
- [Development](#development)
|
32
33
|
- [Help Out!](#help-out)
|
33
34
|
|
@@ -146,8 +147,9 @@ work for anything.
|
|
146
147
|
<a name="unmatched-queries"></a>
|
147
148
|
### Unmatched Queries
|
148
149
|
|
149
|
-
Any DNS queries that do not match
|
150
|
-
|
150
|
+
Any DNS queries that do not match any of Landrush'es configuration data, will be passed
|
151
|
+
through to an upstream DNS server. Per default Landrush uses Google's DNS server with the
|
152
|
+
IP _8.8.8.8_.
|
151
153
|
|
152
154
|
If you would like to configure your own upstream servers, add upstream entries to your
|
153
155
|
`Vagrantfile` like so:
|
@@ -177,7 +179,12 @@ through the host's VPN connection).
|
|
177
179
|
### Visibility on the Host
|
178
180
|
|
179
181
|
Visibility on the host means that the hostname of the VMs can be resolved on the host's DNS system.
|
180
|
-
|
182
|
+
Landrush will attempt an automatic configuration of the host, but depending on the OS, manual
|
183
|
+
configuration might be required as well.
|
184
|
+
|
185
|
+
To disable this functionality:
|
186
|
+
|
187
|
+
config.landrush.host_redirect_dns = false
|
181
188
|
|
182
189
|
<a name="os-x"></a>
|
183
190
|
#### OS X
|
@@ -190,8 +197,11 @@ that points lookups for hostnames ending in your `config.landrush.tld` domain to
|
|
190
197
|
<a name="linux"></a>
|
191
198
|
#### Linux
|
192
199
|
|
193
|
-
|
194
|
-
|
200
|
+
Landrush tries to achieve the same behavior on Linux hosts using
|
201
|
+
`dnsmasq`. For some Linux distributions this happens automatically (you might
|
202
|
+
have to provide your _sudo_ password). If Landrush does not know how to install and
|
203
|
+
start `dnsmasq` on your favorite Linux distribution, you can adjust the following
|
204
|
+
example from Ubuntu:
|
195
205
|
|
196
206
|
sudo apt-get install -y resolvconf dnsmasq
|
197
207
|
sudo sh -c 'echo "server=/vagrant.test/127.0.0.1#10053" > /etc/dnsmasq.d/vagrant-landrush'
|
@@ -308,6 +318,20 @@ configuration. Make sure to edit your `/etc/sudoers` configuration via `sudo vis
|
|
308
318
|
%admin ALL=(ALL) NOPASSWD: VAGRANT_LANDRUSH_HOST_MKDIR, VAGRANT_LANDRUSH_HOST_CP, VAGRANT_LANDRUSH_HOST_CHMOD
|
309
319
|
# End Landrush config
|
310
320
|
|
321
|
+
<a name="guest-is-unable-to-access-the-internet"></a>
|
322
|
+
### Guest is unable to access the Internet
|
323
|
+
|
324
|
+
In some network configuration the access to outside DNS servers is restricted
|
325
|
+
(firewalls, VPN, etc). Since unmatched DNS queries are per default passed through to
|
326
|
+
Google's DNS servers, this can lead to the fact that the guest cannot access anything
|
327
|
+
in the outside world.
|
328
|
+
If you are having problem with the guest's DNS, verify that you can access Google's
|
329
|
+
DNS server under _8.8.8.8_. If it does not work, you will need to set a custom
|
330
|
+
upstream DNS server. Check your network configuration on the host or ask your network
|
331
|
+
administrator about the right DNS server address to use. You can set the custom
|
332
|
+
DNS server via the _config.landrush.upstream_ option (see section about
|
333
|
+
[unmatched queries](#unmatched-queries)).
|
334
|
+
|
311
335
|
<a name="development"></a>
|
312
336
|
## Development
|
313
337
|
|
data/lib/landrush.rb
CHANGED
@@ -34,24 +34,14 @@ module Landrush
|
|
34
34
|
def post_boot_setup
|
35
35
|
record_machine_dns_entry
|
36
36
|
setup_static_dns
|
37
|
-
|
37
|
+
return unless machine.config.landrush.host_redirect_dns?
|
38
|
+
env[:host].capability(:configure_visibility_on_host, host_ip_address, config.tld)
|
38
39
|
end
|
39
40
|
|
40
41
|
def record_dependent_vm
|
41
42
|
DependentVMs.add(machine_hostname)
|
42
43
|
end
|
43
44
|
|
44
|
-
def setup_host_resolver(env)
|
45
|
-
if Vagrant::Util::Platform.windows?
|
46
|
-
network_config = WinNetworkConfig.new(env)
|
47
|
-
if network_config.ensure_prerequisites
|
48
|
-
network_config.update_network_adapter(host_ip_address, '127.0.0.1', config.tld)
|
49
|
-
end
|
50
|
-
elsif Vagrant::Util::Platform.darwin?
|
51
|
-
ResolverConfig.new(env).ensure_config_exists!
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
45
|
def add_prerequisite_network_interface
|
56
46
|
return unless virtualbox? && !private_network_exists?
|
57
47
|
|
File without changes
|
File without changes
|
File without changes
|
@@ -3,7 +3,7 @@ module Landrush
|
|
3
3
|
module Linux
|
4
4
|
module AddIptablesRule
|
5
5
|
def self.add_iptables_rule(machine, rule)
|
6
|
-
_run(machine, %
|
6
|
+
_run(machine, %(iptables -C #{rule} 2> /dev/null || iptables -A #{rule}))
|
7
7
|
end
|
8
8
|
|
9
9
|
def self._run(machine, command)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Landrush
|
2
|
+
module Cap
|
3
|
+
module Darwin
|
4
|
+
class ConfigureVisibilityOnHost
|
5
|
+
class << self
|
6
|
+
attr_writer :sudo, :config_dir
|
7
|
+
|
8
|
+
def configure_visibility_on_host(env, *_args)
|
9
|
+
@env = env
|
10
|
+
if contents_match?
|
11
|
+
info 'Host DNS resolver config looks good.'
|
12
|
+
else
|
13
|
+
info 'Need to configure the host.'
|
14
|
+
write_config!
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def sudo
|
21
|
+
@sudo ||= 'sudo'
|
22
|
+
end
|
23
|
+
|
24
|
+
def config_dir
|
25
|
+
@config_dir ||= Pathname('/etc/resolver')
|
26
|
+
end
|
27
|
+
|
28
|
+
def info(msg)
|
29
|
+
@env.ui.info("[landrush] #{msg}") unless @env.nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
def desired_contents
|
33
|
+
<<-EOS.gsub(/^ /, '')
|
34
|
+
# Generated by landrush, a vagrant plugin
|
35
|
+
nameserver 127.0.0.1
|
36
|
+
port #{Server.port}
|
37
|
+
EOS
|
38
|
+
end
|
39
|
+
|
40
|
+
def config_file
|
41
|
+
config_dir.join(@env.vagrantfile.config.landrush.tld)
|
42
|
+
end
|
43
|
+
|
44
|
+
def contents_match?
|
45
|
+
config_file.exist? && File.read(config_file) == desired_contents
|
46
|
+
end
|
47
|
+
|
48
|
+
def write_config!
|
49
|
+
info 'Momentarily using sudo to put the host config in place...'
|
50
|
+
system "#{self.class.sudo} mkdir #{config_dir}" unless config_dir.directory?
|
51
|
+
Tempfile.open('vagrant_landrush_host_config') do |f|
|
52
|
+
f.write(desired_contents)
|
53
|
+
f.close
|
54
|
+
system "#{sudo} cp #{f.path} #{config_file}"
|
55
|
+
system "#{sudo} chmod 644 #{config_file}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Landrush
|
2
|
+
module Cap
|
3
|
+
module Linux
|
4
|
+
class ConfigureVisibilityOnHost
|
5
|
+
class << self
|
6
|
+
def configure_visibility_on_host(env, ip, tld)
|
7
|
+
env[:host].capability(:install_dnsmasq) unless env[:host].capability(:dnsmasq_installed)
|
8
|
+
env[:host].capability(:create_dnsmasq_config, ip, tld)
|
9
|
+
env[:host].capability(:restart_dnsmasq)
|
10
|
+
rescue Vagrant::Errors::CapabilityNotFound
|
11
|
+
env[:ui].info('Unable to automatically configure your host. Check the documentation for manual ' \
|
12
|
+
'instructions to configure the visibility on the host.')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Landrush
|
2
|
+
module Cap
|
3
|
+
module Linux
|
4
|
+
module CreateDnsmasqConfig
|
5
|
+
class << self
|
6
|
+
def create_dnsmasq_config(env, _ip, tld)
|
7
|
+
@env = env
|
8
|
+
@tld = tld
|
9
|
+
if contents_match?
|
10
|
+
info 'Host dnsmasq config looks good.'
|
11
|
+
else
|
12
|
+
info 'Need to configure dnsmasq on host.'
|
13
|
+
write_config!
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def info(msg)
|
20
|
+
@env.ui.info("[landrush] #{msg}") unless @env.nil?
|
21
|
+
end
|
22
|
+
|
23
|
+
def config_dir
|
24
|
+
@config_dir ||= Pathname('/etc/dnsmasq.d')
|
25
|
+
end
|
26
|
+
|
27
|
+
def desired_contents
|
28
|
+
<<-EOS.gsub(/^ +/, '')
|
29
|
+
# Generated by landrush, a vagrant plugin
|
30
|
+
server=/#{@tld}/127.0.0.1#10053
|
31
|
+
EOS
|
32
|
+
end
|
33
|
+
|
34
|
+
def config_file
|
35
|
+
config_dir.join("vagrant-landrush-#{@tld}")
|
36
|
+
end
|
37
|
+
|
38
|
+
def contents_match?
|
39
|
+
config_file.exist? && File.read(config_file) == desired_contents
|
40
|
+
end
|
41
|
+
|
42
|
+
def write_config!
|
43
|
+
info 'Momentarily using sudo to put the host config in place...'
|
44
|
+
system "sudo mkdir #{config_dir}" unless config_dir.directory?
|
45
|
+
Tempfile.open('vagrant_landrush_host_config') do |f|
|
46
|
+
f.write(desired_contents)
|
47
|
+
f.close
|
48
|
+
system "sudo cp #{f.path} #{config_file}"
|
49
|
+
system "sudo chmod 644 #{config_file}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def ensure_config_exists!
|
54
|
+
if contents_match?
|
55
|
+
info 'Host DNS resolver config looks good.'
|
56
|
+
else
|
57
|
+
info 'Need to configure the host.'
|
58
|
+
write_config!
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Landrush
|
2
|
+
module Cap
|
3
|
+
module Redhat
|
4
|
+
module InstallDnsmasq
|
5
|
+
class << self
|
6
|
+
def install_dnsmasq(_env)
|
7
|
+
system('sudo yum clean all > /dev/null 2>&1')
|
8
|
+
system('sudo yum install -y -q dnsmasq > /dev/null 2>&1')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|