landrush 0.19.0 → 1.0.0

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.config/cucumber.yml +7 -0
  3. data/.gitignore +6 -4
  4. data/.rubocop.yml +5 -0
  5. data/.rubocop_todo.yml +32 -259
  6. data/CHANGELOG.md +8 -1
  7. data/CONTRIBUTING.md +11 -10
  8. data/Gemfile +7 -4
  9. data/Gemfile.lock +178 -0
  10. data/README.md +148 -35
  11. data/Rakefile +18 -0
  12. data/doc/img/advanced-tcp-properties.png +0 -0
  13. data/doc/img/network-connections.png +0 -0
  14. data/features/dns_resolution.feature +26 -0
  15. data/features/step_definitions/dns.rb +19 -0
  16. data/features/support/env.rb +16 -0
  17. data/landrush.gemspec +1 -2
  18. data/lib/landrush.rb +0 -12
  19. data/lib/landrush/action/common.rb +5 -5
  20. data/lib/landrush/action/redirect_dns.rb +1 -1
  21. data/lib/landrush/action/setup.rb +9 -14
  22. data/lib/landrush/action/teardown.rb +5 -1
  23. data/lib/landrush/cap/debian/install_iptables.rb +2 -2
  24. data/lib/landrush/cap/linux/add_iptables_rule.rb +0 -1
  25. data/lib/landrush/cap/linux/redirect_dns.rb +0 -1
  26. data/lib/landrush/cap/redhat/install_iptables.rb +2 -2
  27. data/lib/landrush/command.rb +8 -10
  28. data/lib/landrush/config.rb +1 -1
  29. data/lib/landrush/dependent_vms.rb +2 -2
  30. data/lib/landrush/os.rb +19 -0
  31. data/lib/landrush/plugin.rb +4 -4
  32. data/lib/landrush/resolver_config.rb +1 -5
  33. data/lib/landrush/server.rb +187 -25
  34. data/lib/landrush/store.rb +12 -4
  35. data/lib/landrush/version.rb +1 -1
  36. data/test/landrush/action/setup_test.rb +14 -9
  37. data/test/landrush/action/teardown_test.rb +8 -9
  38. data/test/landrush/cap/linux/configured_dns_servers_test.rb +2 -2
  39. data/test/landrush/cap/linux/read_host_visible_ip_address_test.rb +5 -7
  40. data/test/landrush/cap/linux/redirect_dns_test.rb +1 -1
  41. data/test/landrush/resolver_config_test.rb +0 -2
  42. data/test/landrush/server_test.rb +18 -12
  43. data/test/landrush/store_test.rb +7 -6
  44. data/test/support/clear_dependent_vms.rb +4 -2
  45. data/test/support/create_fake_working_dir.rb +19 -0
  46. data/test/support/delete_fake_working_dir.rb +12 -0
  47. data/test/support/fake_resolver_config.rb +8 -3
  48. data/test/support/test_server_daemon.rb +20 -15
  49. data/test/test_helper.rb +31 -22
  50. metadata +26 -28
  51. data/lib/ext/rexec.rb +0 -10
  52. data/test/support/fake_working_dir.rb +0 -16
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [Unreleased][unreleased]
2
+
3
+ - Added: Acceptance CI tests ([#136](https://github.com/vagrant-landrush/landrush/issues/136))
4
+ - Fixed: Making sure that the right Vagrant data dir is used ([#172](https://github.com/vagrant-landrush/landrush/pull/172))
5
+ - Added: Getting Landrush to work on Windows ([#170](https://github.com/vagrant-landrush/landrush/pull/170))
6
+
1
7
  ## [0.19.0] - 2016-03-10
2
8
  - Added: Support for libvirt provider (#138)
3
9
  - Added: support for CNAME records (#99)
@@ -13,7 +19,8 @@
13
19
  ## [0.16.0] - 2015-01-18
14
20
  - Added: Support for IN::PTR records (#98)
15
21
 
16
- [unreleased]: https://github.com/phinze/landrush/compare/v0.18.0...HEAD
22
+ [unreleased]: https://github.com/phinze/landrush/compare/v0.19.0...HEAD
23
+ [0.19.0]: https://github.com/phinze/landrush/compare/v0.18.0...v0.19.0
17
24
  [0.18.0]: https://github.com/phinze/landrush/compare/v0.17.0...v0.18.0
18
25
  [0.17.0]: https://github.com/phinze/landrush/compare/v0.16.0...v0.17.0
19
26
  [0.16.0]: https://github.com/phinze/landrush/compare/v0.15.4...v0.16.0
data/CONTRIBUTING.md CHANGED
@@ -9,9 +9,9 @@ they will be added to this document.
9
9
 
10
10
  ## Pull Requests
11
11
 
12
- * All changes should be made by pull request (PR), even from maintainers.
12
+ * All changes should be made by pull request (PR), even from maintainers.
13
13
  * All changes should include documentation updates.
14
- * Small changes need only 1 ACK. Larger changes need 2 ACKs from
14
+ * Small changes need only 1 ACK. Larger changes need 2 ACKs from
15
15
  maintainers before they will be merged. If the author of the PR is a
16
16
  maintainer, the submission is considered 1 of the 2 ACKs. Therefore PRs
17
17
  from maintainers only require one additional ACK. By "2 ACKs" we mean
@@ -34,9 +34,9 @@ Prereqs:
34
34
 
35
35
  Steps:
36
36
 
37
- 1. Update `lib/version.rb` with version number.
37
+ 1. Update `lib/landrush/version.rb` with version number.
38
38
  2. Update `CHANGELOG.md` header with version number and current date.
39
- 3. Make release commit: `git add lib/version.rb CHANGELOG.md; git commit -m 'cut vX.Y.Z'`
39
+ 3. Make release commit: `git add lib/landrush/version.rb CHANGELOG.md; git commit -m 'cut vX.Y.Z'`
40
40
  4. Make release tag: `git tag -m vX.Y.Z vX.Y.Z`
41
41
  5. Push release commit: `git push origin master`
42
42
  6. Build release: `rake build`
@@ -45,9 +45,10 @@ Steps:
45
45
 
46
46
  ## Maintainers
47
47
 
48
- * Reto Kaiser ([@njam](http://github.com/njam))
49
- * Eric Sorenson ([@ahpook](http://github.com/ahpook))
50
- * Josef Strzibny ([@strzibny](http://github.com/strzibny))
51
- * Florian Holzhauer ([@fh](http://github.com/fh))
52
- * Brian Exelbierd ([@bexelbie](http://github.com/bexelbie))
53
- * Paul Hinze ([@phinze](http://github.com/phinze))
48
+ * Brian Exelbierd (@bexelbie)
49
+ * Eric Sorenson (@ahpook)
50
+ * Florian Holzhauer (@fh)
51
+ * Hardy Ferentschik (@hferentschik)
52
+ * Josef Strzibny (@strzibny)
53
+ * Paul Hinze (@phinze)
54
+ * Reto Kaiser (@njam)
data/Gemfile CHANGED
@@ -3,9 +3,9 @@ source 'https://rubygems.org'
3
3
  # Can't use `gemspec` to pull in dependencies, because the landrush gem needs
4
4
  # to be in the :plugins group for Vagrant to detect and load it in development
5
5
 
6
- gem 'rubydns', '1.0.2'
7
- gem 'rexec'
6
+ gem 'rubydns', '0.8.5'
8
7
  gem 'rake'
8
+ gem 'json'
9
9
 
10
10
  # Vagrant's special group
11
11
  group :plugins do
@@ -18,10 +18,13 @@ end
18
18
 
19
19
  group :development do
20
20
  gem 'vagrant',
21
- :git => 'git://github.com/mitchellh/vagrant.git',
22
- :ref => 'v1.8.1'
21
+ :git => 'git://github.com/mitchellh/vagrant.git',
22
+ :ref => 'v1.8.1'
23
23
 
24
24
  gem 'byebug'
25
25
  gem 'mocha'
26
26
  gem 'minitest'
27
+ gem 'cucumber', '~> 2.1'
28
+ gem 'aruba', '~> 0.13'
29
+ gem 'komenda', '~> 0.1.6'
27
30
  end
data/Gemfile.lock ADDED
@@ -0,0 +1,178 @@
1
+ GIT
2
+ remote: git://github.com/mitchellh/vagrant.git
3
+ revision: c1c00e2f3cf69c579a5aa6922d67bb838a2de9cd
4
+ ref: v1.8.1
5
+ specs:
6
+ vagrant (1.8.1)
7
+ bundler (>= 1.5.2, <= 1.10.6)
8
+ childprocess (~> 0.5.0)
9
+ erubis (~> 2.7.0)
10
+ hashicorp-checkpoint (~> 0.1.1)
11
+ i18n (>= 0.6.0, <= 0.8.0)
12
+ listen (~> 3.0.2)
13
+ log4r (~> 1.1.9, < 1.1.11)
14
+ net-scp (~> 1.1.0)
15
+ net-sftp (~> 2.1)
16
+ net-ssh (~> 3.0.1)
17
+ nokogiri (= 1.6.3.1)
18
+ rb-kqueue (~> 0.2.0)
19
+ rest-client (>= 1.6.0, < 2.0)
20
+ wdm (~> 0.1.0)
21
+ winrm (~> 1.3)
22
+ winrm-fs (~> 0.2.2)
23
+
24
+ PATH
25
+ remote: .
26
+ specs:
27
+ landrush (1.0.0)
28
+ rubydns (= 0.8.5)
29
+
30
+ GEM
31
+ remote: https://rubygems.org/
32
+ specs:
33
+ aruba (0.14.1)
34
+ childprocess (~> 0.5.6)
35
+ contracts (~> 0.9)
36
+ cucumber (>= 1.3.19)
37
+ ffi (~> 1.9.10)
38
+ rspec-expectations (>= 2.99)
39
+ thor (~> 0.19)
40
+ ast (2.2.0)
41
+ builder (3.2.2)
42
+ byebug (8.2.1)
43
+ childprocess (0.5.9)
44
+ ffi (~> 1.0, >= 1.0.11)
45
+ contracts (0.13.0)
46
+ cucumber (2.3.3)
47
+ builder (>= 2.1.2)
48
+ cucumber-core (~> 1.4.0)
49
+ cucumber-wire (~> 0.0.1)
50
+ diff-lcs (>= 1.1.3)
51
+ gherkin (~> 3.2.0)
52
+ multi_json (>= 1.7.5, < 2.0)
53
+ multi_test (>= 0.1.2)
54
+ cucumber-core (1.4.0)
55
+ gherkin (~> 3.2.0)
56
+ cucumber-wire (0.0.1)
57
+ diff-lcs (1.2.5)
58
+ domain_name (0.5.25)
59
+ unf (>= 0.0.5, < 1.0.0)
60
+ erubis (2.7.0)
61
+ eventmachine (1.0.8)
62
+ events (0.9.8)
63
+ ffi (1.9.10)
64
+ ffi (1.9.10-x64-mingw32)
65
+ gherkin (3.2.0)
66
+ gssapi (1.2.0)
67
+ ffi (>= 1.0.1)
68
+ gyoku (1.3.1)
69
+ builder (>= 2.1.2)
70
+ hashicorp-checkpoint (0.1.4)
71
+ http-cookie (1.0.2)
72
+ domain_name (~> 0.5)
73
+ httpclient (2.7.1)
74
+ i18n (0.7.0)
75
+ json (1.8.3)
76
+ komenda (0.1.6)
77
+ events (~> 0.9.8)
78
+ listen (3.0.5)
79
+ rb-fsevent (>= 0.9.3)
80
+ rb-inotify (>= 0.9)
81
+ little-plugger (1.1.4)
82
+ log4r (1.1.10)
83
+ logging (1.8.2)
84
+ little-plugger (>= 1.1.3)
85
+ multi_json (>= 1.8.4)
86
+ metaclass (0.0.4)
87
+ mime-types (2.99)
88
+ mini_portile (0.6.0)
89
+ minitest (5.8.4)
90
+ mocha (1.1.0)
91
+ metaclass (~> 0.0.1)
92
+ multi_json (1.11.2)
93
+ multi_test (0.1.2)
94
+ net-scp (1.1.2)
95
+ net-ssh (>= 2.6.5)
96
+ net-sftp (2.1.2)
97
+ net-ssh (>= 2.6.5)
98
+ net-ssh (3.0.2)
99
+ netrc (0.11.0)
100
+ nokogiri (1.6.3.1)
101
+ mini_portile (= 0.6.0)
102
+ nokogiri (1.6.3.1-x64-mingw32)
103
+ mini_portile (= 0.6.0)
104
+ nori (2.6.0)
105
+ parser (2.3.0.7)
106
+ ast (~> 2.2)
107
+ powerpack (0.1.1)
108
+ rainbow (2.1.0)
109
+ rake (10.4.2)
110
+ rb-fsevent (0.9.7)
111
+ rb-inotify (0.9.5)
112
+ ffi (>= 0.5.0)
113
+ rb-kqueue (0.2.4)
114
+ ffi (>= 0.5.0)
115
+ rest-client (1.8.0)
116
+ http-cookie (>= 1.0.2, < 2.0)
117
+ mime-types (>= 1.16, < 3.0)
118
+ netrc (~> 0.7)
119
+ rest-client (1.8.0-x64-mingw32)
120
+ ffi (~> 1.9)
121
+ http-cookie (>= 1.0.2, < 2.0)
122
+ mime-types (>= 1.16, < 3.0)
123
+ netrc (~> 0.7)
124
+ rspec-expectations (3.4.0)
125
+ diff-lcs (>= 1.2.0, < 2.0)
126
+ rspec-support (~> 3.4.0)
127
+ rspec-support (3.4.1)
128
+ rubocop (0.38.0)
129
+ parser (>= 2.3.0.6, < 3.0)
130
+ powerpack (~> 0.1)
131
+ rainbow (>= 1.99.1, < 3.0)
132
+ ruby-progressbar (~> 1.7)
133
+ unicode-display_width (~> 1.0, >= 1.0.1)
134
+ ruby-progressbar (1.7.5)
135
+ rubydns (0.8.5)
136
+ eventmachine (~> 1.0.0)
137
+ rubyntlm (0.4.0)
138
+ rubyzip (1.1.7)
139
+ thor (0.19.1)
140
+ unf (0.1.4)
141
+ unf_ext
142
+ unf_ext (0.0.7.1)
143
+ unf_ext (0.0.7.1-x64-mingw32)
144
+ unicode-display_width (1.0.3)
145
+ uuidtools (2.1.5)
146
+ wdm (0.1.1)
147
+ winrm (1.3.6)
148
+ builder (>= 2.1.2)
149
+ gssapi (~> 1.2)
150
+ gyoku (~> 1.0)
151
+ httpclient (~> 2.2, >= 2.2.0.2)
152
+ logging (>= 1.6.1, < 3.0)
153
+ nori (~> 2.0)
154
+ rubyntlm (~> 0.4.0)
155
+ uuidtools (~> 2.1.2)
156
+ winrm-fs (0.2.3)
157
+ erubis (~> 2.7)
158
+ logging (~> 1.6, >= 1.6.1)
159
+ rubyzip (~> 1.1)
160
+ winrm (~> 1.3.0)
161
+
162
+ PLATFORMS
163
+ ruby
164
+ x64-mingw32
165
+
166
+ DEPENDENCIES
167
+ aruba (~> 0.13)
168
+ byebug
169
+ cucumber (~> 2.1)
170
+ json
171
+ komenda (~> 0.1.6)
172
+ landrush!
173
+ minitest
174
+ mocha
175
+ rake
176
+ rubocop (~> 0.38.0)
177
+ rubydns (= 0.8.5)
178
+ vagrant!
data/README.md CHANGED
@@ -1,19 +1,46 @@
1
- # Landrush: DNS for Vagrant [![Build Status](https://travis-ci.org/phinze/landrush.png)](https://travis-ci.org/phinze/landrush)
2
-
3
- Simple DNS that's visible on both the guest and the host.
4
-
5
- Spins up a small DNS server and redirects DNS traffic from your VMs to use it,
6
- automatically registers/deregisters IP addresseses of guests as they come up
7
- and down.
8
-
1
+ # Landrush: DNS for Vagrant [![Build Status](https://travis-ci.org/vagrant-landrush/landrush.png)](https://travis-ci.org/vagrant-landrush/landrush)
2
+
3
+ Simple cross-platform DNS that's visible on both the guest and the host.
4
+
5
+ Landrush spins up a small DNS server and redirects DNS traffic from your
6
+ VMs to use it, automatically registering/unregistering IP addresses of guests
7
+ as they come up and down.
8
+
9
+ **Note**: Windows support is currently considered experimental. If you having
10
+ problems using Landrush on Windows please let us know.
11
+
12
+ <!-- MarkdownTOC -->
13
+
14
+ - [Installation](#installation)
15
+ - [Usage](#usage)
16
+ - [Get started](#get-started)
17
+ - [Dynamic entries](#dynamic-entries)
18
+ - [Static entries](#static-entries)
19
+ - [Wildcard Subdomains](#wildcard-subdomains)
20
+ - [Unmatched Queries](#unmatched-queries)
21
+ - [Visibility on the Guest](#visibility-on-the-guest)
22
+ - [Visibility on the Host](#visibility-on-the-host)
23
+ - [OS X](#os-x)
24
+ - [Linux](#linux)
25
+ - [Windows](#windows)
26
+ - [Other Devices \(phone\)](#other-devices-phone)
27
+ - [Additional CLI commands](#additional-cli-commands)
28
+ - [Development](#development)
29
+ - [Help Out!](#help-out)
30
+
31
+ <!-- /MarkdownTOC -->
32
+
33
+ <a name="installation"></a>
9
34
  ## Installation
10
35
 
11
36
  Install under Vagrant (1.1 or later):
12
37
 
13
38
  $ vagrant plugin install landrush
14
39
 
40
+ <a name="usage"></a>
15
41
  ## Usage
16
42
 
43
+ <a name="get-started"></a>
17
44
  ### Get started
18
45
 
19
46
  Enable the plugin in your `Vagrantfile`:
@@ -32,6 +59,7 @@ If you shut down your guest, the entries associated with it will be removed.
32
59
 
33
60
  Landrush assigns your vm's hostname from either the vagrant config (see the `examples/Vagrantfile`) or system's actual hostname by running the `hostname` command. A default of "guest-vm" is assumed if hostname is otherwise not available.
34
61
 
62
+ <a name="dynamic-entries"></a>
35
63
  ### Dynamic entries
36
64
 
37
65
  Every time a VM is started, its IP address is automatically detected and a DNS record is created that maps the hostname to its IP.
@@ -42,6 +70,7 @@ If for any reason the auto-detection detects no IP address or the wrong IP addre
42
70
 
43
71
  If you are using a multi-machine `Vagrantfile`, configure this inside each of your `config.vm.define` sections.
44
72
 
73
+ <a name="static-entries"></a>
45
74
  ### Static entries
46
75
 
47
76
  You can add static host entries to the DNS server in your `Vagrantfile` like so:
@@ -50,6 +79,7 @@ You can add static host entries to the DNS server in your `Vagrantfile` like so:
50
79
 
51
80
  This is great for overriding production services for nodes you might be testing locally. For example, perhaps you might want to override the hostname of your puppetmaster to point to a local vagrant box instead.
52
81
 
82
+ <a name="wildcard-subdomains"></a>
53
83
  ### Wildcard Subdomains
54
84
 
55
85
  For your convenience, any subdomain of a DNS entry known to landrush will resolve to the same IP address as the entry. For example: given `myhost.vagrant.test -> 1.2.3.4`, both `foo.myhost.vagrant.test` and `bar.myhost.vagrant.test` will also resolve to `1.2.3.4`.
@@ -60,6 +90,7 @@ If you would like to configure your guests to be accessible from the host as sub
60
90
 
61
91
  Note that from the __host__, you will only be able to access subdomains of your configured TLD by default- so wildcard subdomains only apply to that space. For the __guest__, wildcard subdomains work for anything.
62
92
 
93
+ <a name="unmatched-queries"></a>
63
94
  ### Unmatched Queries
64
95
 
65
96
  Any DNS queries that do not match will be passed through to an upstream DNS server, so this will be able to serve as the one-stop shop for your guests' DNS needs.
@@ -72,6 +103,7 @@ If you would like to configure your own upstream servers, add upstream entries t
72
103
  # If your upstream is TCP only for some strange reason
73
104
  config.landrush.upstream '10.1.3.10', 1001, :tcp
74
105
 
106
+ <a name="visibility-on-the-guest"></a>
75
107
  ### Visibility on the Guest
76
108
 
77
109
  Linux guests should automatically have their DNS traffic redirected via `iptables` rules to the Landrush DNS server. File an issue if this does not work for you.
@@ -83,12 +115,20 @@ To disable this functionality:
83
115
  You may want to do this if you are already proxying all your DNS requests through your host (e.g. using VirtualBox's natdnshostresolver1 option) and you
84
116
  have DNS servers that you can easily set as upstreams in the daemon (e.g. DNS requests that go through the host's VPN connection).
85
117
 
118
+ <a name="visibility-on-the-host"></a>
86
119
  ### Visibility on the Host
87
120
 
121
+ <a name="os-x"></a>
122
+ #### OS X
123
+
88
124
  If you're on an OS X host, we use a nice trick to unobtrusively add a secondary DNS server only for specific domains.
89
125
  Landrush adds a file into `/etc/resolver` that points lookups for hostnames ending in your `config.landrush.tld` domain
90
126
  name to its DNS server. (Check out `man 5 resolver` on your Mac OS X host for more information on this file's syntax.)
91
127
 
128
+
129
+ <a name="linux"></a>
130
+ #### Linux
131
+
92
132
  Though it's not automatically set up by landrush, similar behavior can be achieved on Linux hosts with `dnsmasq`. You
93
133
  can integrate Landrush with dnsmasq on Ubuntu like so (tested on Ubuntu 13.10):
94
134
 
@@ -98,59 +138,132 @@ can integrate Landrush with dnsmasq on Ubuntu like so (tested on Ubuntu 13.10):
98
138
 
99
139
  If you use a TLD other than the default `vagrant.test`, replace the TLD in the above instructions accordingly. Please be aware that anything ending in '.local' as TLD will not work because the `avahi` daemon reserves this TLD for its own uses.
100
140
 
101
- ### Visibility on other Devices (phone)
141
+ <a name="windows"></a>
142
+ #### Windows
143
+
144
+ **Note**: Windows support is currently considered experimental. If you having
145
+ problems using Landrush on Windows please let us know.
146
+
147
+ On Windows a secondary DNS server can be configured via the properties of a
148
+ network adapter. This will be illustrated in the following using Windows 10 with
149
+ VirtualBox.
150
+
151
+ When running VirtualBox on Windows in combination with Landrush the Network
152
+ Connections (`Control Panel\Network and Internet\Network Connections`) looks
153
+ somewhat like this after a successful `vagrant up`:
154
+
155
+ ![Network Connections](doc/img/network-connections.png "Network Connections")
156
+
157
+ There will be at least one VirtualBox network adapter. There might be multiple
158
+ depending on your configuration (number of networks configured) and how many VMs
159
+ you have running, but you just need to modify one.
160
+
161
+ In a first step you need to identify the VirtualBox network adapter used for the
162
+ private network of your VM. Landrush requires a private network adapter to work
163
+ and will create one in case you are not explicitly configuring one in your
164
+ `Vagrantfile`.
165
+
166
+ To quickly view the settings of each network adapter you can run the following
167
+ command in a shell:
168
+
169
+ netsh interface ip show config
170
+
171
+ The output should look something like that:
172
+
173
+ Configuration for interface "Ethernet0"
174
+ DHCP enabled: Yes
175
+ IP Address: 172.16.74.143
176
+ Subnet Prefix: 172.16.74.0/24 (mask 255.255.255.0)
177
+ Default Gateway: 172.16.74.2
178
+ Gateway Metric: 0
179
+ InterfaceMetric: 10
180
+ DNS servers configured through DHCP: 172.16.74.2
181
+ Register with which suffix: Primary only
182
+ WINS servers configured through DHCP: 172.16.74.2
183
+
184
+ Configuration for interface "VirtualBox Host-Only Network"
185
+ DHCP enabled: No
186
+ IP Address: 10.1.2.1
187
+ Subnet Prefix: 10.1.2.0/24 (mask 255.255.255.0)
188
+ InterfaceMetric: 10
189
+ Statically Configured DNS Servers: None
190
+ Register with which suffix: Primary only
191
+ Statically Configured WINS Servers: None
192
+
193
+
194
+ In our case we are interested in the `VirtualBox Host-Only Network` which
195
+ has in this example the private network IP 10.1.2.1. If you don't have a static
196
+ private network IP configured and you cannot determine the right adapter via
197
+ the `netsh` output, ssh into the VM (`vagrant ssh`) and run `ifconfig` to view
198
+ the network configuration of the VM.
199
+
200
+ Once you identified the right network adapter run the following as Administrator
201
+ (using the network adapter name of the adapter with the determined private
202
+ network IP):
203
+
204
+ netsh interface ipv4 add dnsserver "VirtualBox Host-Only Network" address=127.0.0.1 index=1
205
+
206
+ This should be enough for Windows 10. On other Windows versions, you might have to
207
+ also add your TLD to the DNS suffix list on the DNS Advanced TCP/IP Settings tab:
208
+
209
+ ![Advanced TCP/IP Settings](doc/img/advanced-tcp-properties.png "Advanced TCP/IP Settings")
210
+
211
+ <a name="other-devices-phone"></a>
212
+ #### Other Devices (phone)
102
213
 
103
214
  You might want to resolve Landrush's DNS-entries on *additional* computing devices, like a mobile phone.
104
215
 
105
216
  Please refer to [/doc/proxy-mobile](/doc/proxy-mobile) for instructions.
106
217
 
218
+ <a name="additional-cli-commands"></a>
107
219
  ### Additional CLI commands
108
220
 
109
221
  Check out `vagrant landrush` for additional commands to monitor the DNS server daemon.
110
222
 
111
- ## RoadMap
112
223
 
113
- The committers met and have set a basic roadmap as of 3 March 2016:
224
+ <a name="development"></a>
225
+ ## Development
114
226
 
115
- 1. 0.19 will be released as soon as possible. The goal is to make newer
116
- code commits available and document the release process.
227
+ * Install dependencies:
117
228
 
118
- 2. Release 0.20 will occur soon. We would like to try to land two PRs:
229
+ $ bundle install
119
230
 
120
- * PR #125 - Multiple TLDs
121
- * PR #144 - Cucumber Acceptance Tests
231
+ * Get a list of all available build tasks:
122
232
 
123
- The release goal is by 1 April 2016
233
+ $ bundle exec rake -T
124
234
 
125
- 3. Release 0.90 (or 1.0) will occur afterward. Goals:
235
+ * Run the test suite:
126
236
 
127
- * PR #122 - Enhanced IP/NIC selection
128
- * PR #154 Windows support for EventMachine/DNS
129
- * We need your help, eventmachine has not proven to be very stable.
130
- * Can we find an alternative to RubyDNS? Should we try something
131
- in Go or another contained cross-platform binary?
132
- * This would deal with the RubyDNS dependency tree and challenges
133
- * PR #160 - Cygwin Fix
237
+ $ bundle exec rake test
134
238
 
135
- 4. With Release 0.90 or 1.0 or later
239
+ * Run a single test file:
136
240
 
137
- * PR #62 - Arbitrary record types
241
+ $ bundle exec rake test TEST=<path to test file>
138
242
 
139
- ## Development
243
+ * Run cucumber/aruba acceptance tests:
244
+
245
+ $ bundle exec cucumber
246
+
247
+ Note, that the acceptance tests currently only work out of the box on OS X.
248
+ On Linux one has to manually configure the host visibility for the TLD
249
+ _landrush-acceptance-test_. See for [Linux](#linux). On Windows the acceptance
250
+ tests won't work due to a current bug in [Aruba](https://github.com/cucumber/aruba/issues/387).
140
251
 
141
- Install dependencies:
252
+ * Build the Landrush gem:
142
253
 
143
- bundle install
254
+ $ bundle exec rake install
144
255
 
145
- Run the test suite:
256
+ * Clean all generated files:
146
257
 
147
- bundle exec rake
258
+ $ bundle exec rake clean clobber
148
259
 
149
- Run the vagrant binary with the landrush plugin loaded from your local source code:
260
+ * Run the vagrant binary with the Landrush plugin loaded from your local
261
+ source code:
150
262
 
151
- bundle exec vagrant landrush <command>
263
+ bundle exec vagrant landrush <command>
152
264
 
153
- ### Help Out!
265
+ <a name="help-out"></a>
266
+ ## Help Out!
154
267
 
155
268
  This project could use your feedback and help! Please don't hesitate to open issues or submit pull requests. NO HESITATION IS ALLOWED. NONE WHATSOEVER. See [CONTRIBUTING.md](CONTRIBUTING.md) for more details.
156
269