vagrant-betterhosts 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +32 -0
- data/.idea/.gitignore +8 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vagrant-betterhosts.iml +63 -0
- data/.idea/vcs.xml +6 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +120 -0
- data/LICENSE.txt +22 -0
- data/README.md +127 -0
- data/Rakefile +14 -0
- data/lib/vagrant-betterhosts.rb +11 -0
- data/lib/vagrant-betterhosts/Action/BaseAction.rb +45 -0
- data/lib/vagrant-betterhosts/Action/RemoveHosts.rb +23 -0
- data/lib/vagrant-betterhosts/Action/UpdateHosts.rb +14 -0
- data/lib/vagrant-betterhosts/BetterHosts.rb +212 -0
- data/lib/vagrant-betterhosts/config.rb +17 -0
- data/lib/vagrant-betterhosts/plugin.rb +51 -0
- data/lib/vagrant-betterhosts/version.rb +5 -0
- data/package.sh +15 -0
- data/vagrant-betterhosts.gemspec +26 -0
- metadata +101 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 674b9ba6010434da286903277af9e899b2d2a982a8a4ce1434b523b460350b53
|
|
4
|
+
data.tar.gz: 4b635e5ddc088af98faa0c59b200fd9346b01ac0b540ca6a70375f4a01d852cb
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 38c82c8b5344f0cc3d64521746dfdf1bd987f6362468b8fece767aff2ac1a1117d78fca0f30579f331ba38b5e45ee476cdb04ca2d5387a113ac92c6a9a3f7b39
|
|
7
|
+
data.tar.gz: 37ead61d094950df99c39c10638bf223360d619b3fc0fbd8cc35330884486e3ac1e01d2382cc7994467eaf0b374e9ac1b8fe0a766539f79e86cf10499c94819f
|
data/.gitignore
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# OS-specific
|
|
2
|
+
.DS_Store
|
|
3
|
+
|
|
4
|
+
# editors
|
|
5
|
+
*.swp
|
|
6
|
+
|
|
7
|
+
# Bundler/Rubygems
|
|
8
|
+
*.gem
|
|
9
|
+
.bundle
|
|
10
|
+
pkg/*
|
|
11
|
+
tags
|
|
12
|
+
|
|
13
|
+
# Vagrant
|
|
14
|
+
.vagrant
|
|
15
|
+
Vagrantfile
|
|
16
|
+
!example_box/Vagrantfile
|
|
17
|
+
|
|
18
|
+
*.rbc
|
|
19
|
+
.bundle
|
|
20
|
+
.config
|
|
21
|
+
.yardoc
|
|
22
|
+
InstalledFiles
|
|
23
|
+
_yardoc
|
|
24
|
+
coverage
|
|
25
|
+
doc/
|
|
26
|
+
lib/bundler/man
|
|
27
|
+
rdoc
|
|
28
|
+
spec/reports
|
|
29
|
+
test/tmp
|
|
30
|
+
test/version_tmp
|
|
31
|
+
tmp
|
|
32
|
+
bundle/
|
data/.idea/.gitignore
ADDED
data/.idea/misc.xml
ADDED
data/.idea/modules.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/vagrant-betterhosts.iml" filepath="$PROJECT_DIR$/.idea/vagrant-betterhosts.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
|
3
|
+
<component name="ModuleRunConfigurationManager">
|
|
4
|
+
<shared />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="NewModuleRootManager">
|
|
7
|
+
<content url="file://$MODULE_DIR$">
|
|
8
|
+
<sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
|
|
9
|
+
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
|
10
|
+
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
|
|
11
|
+
</content>
|
|
12
|
+
<orderEntry type="jdk" jdkName="RVM: ruby-2.7.2 [vagrant-betterhosts]" jdkType="RUBY_SDK" />
|
|
13
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
14
|
+
<orderEntry type="library" scope="PROVIDED" name="bcrypt_pbkdf (v1.0.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
15
|
+
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.4, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
16
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.1.4, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
17
|
+
<orderEntry type="library" scope="PROVIDED" name="childprocess (v4.0.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
18
|
+
<orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.9, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
19
|
+
<orderEntry type="library" scope="PROVIDED" name="domain_name (v0.5.20190701, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
20
|
+
<orderEntry type="library" scope="PROVIDED" name="ed25519 (v1.2.4, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
21
|
+
<orderEntry type="library" scope="PROVIDED" name="erubi (v1.10.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
22
|
+
<orderEntry type="library" scope="PROVIDED" name="ffi (v1.15.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
23
|
+
<orderEntry type="library" scope="PROVIDED" name="gssapi (v1.3.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
24
|
+
<orderEntry type="library" scope="PROVIDED" name="gyoku (v1.3.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
25
|
+
<orderEntry type="library" scope="PROVIDED" name="hashicorp-checkpoint (v0.1.5, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
26
|
+
<orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.3, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
27
|
+
<orderEntry type="library" scope="PROVIDED" name="httpclient (v2.8.3, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
28
|
+
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.8.10, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
29
|
+
<orderEntry type="library" scope="PROVIDED" name="listen (v3.5.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
30
|
+
<orderEntry type="library" scope="PROVIDED" name="little-plugger (v1.1.4, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
31
|
+
<orderEntry type="library" scope="PROVIDED" name="log4r (v1.1.10, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
32
|
+
<orderEntry type="library" scope="PROVIDED" name="logging (v2.3.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
33
|
+
<orderEntry type="library" scope="PROVIDED" name="mime (v0.4.4, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
34
|
+
<orderEntry type="library" scope="PROVIDED" name="mime-types (v3.3.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
35
|
+
<orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2021.0225, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
36
|
+
<orderEntry type="library" scope="PROVIDED" name="multi_json (v1.15.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
37
|
+
<orderEntry type="library" scope="PROVIDED" name="net-scp (v1.2.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
38
|
+
<orderEntry type="library" scope="PROVIDED" name="net-sftp (v3.0.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
39
|
+
<orderEntry type="library" scope="PROVIDED" name="net-ssh (v6.1.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
40
|
+
<orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
41
|
+
<orderEntry type="library" scope="PROVIDED" name="nori (v2.6.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
42
|
+
<orderEntry type="library" scope="PROVIDED" name="rb-fsevent (v0.11.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
43
|
+
<orderEntry type="library" scope="PROVIDED" name="rb-inotify (v0.10.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
44
|
+
<orderEntry type="library" scope="PROVIDED" name="rb-kqueue (v0.2.6, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
45
|
+
<orderEntry type="library" scope="PROVIDED" name="rest-client (v2.0.2, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
46
|
+
<orderEntry type="library" scope="PROVIDED" name="ruby_dep (v1.3.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
47
|
+
<orderEntry type="library" scope="PROVIDED" name="rubyntlm (v0.6.3, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
48
|
+
<orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.0, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
49
|
+
<orderEntry type="library" scope="PROVIDED" name="unf (v0.1.4, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
50
|
+
<orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.7.7, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
51
|
+
<orderEntry type="library" scope="PROVIDED" name="vagrant (v2.2.11.dev@22795b, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
52
|
+
<orderEntry type="library" scope="PROVIDED" name="vagrant_cloud (v2.0.3, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
53
|
+
<orderEntry type="library" scope="PROVIDED" name="wdm (v0.1.1, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
54
|
+
<orderEntry type="library" scope="PROVIDED" name="winrm (v2.3.6, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
55
|
+
<orderEntry type="library" scope="PROVIDED" name="winrm-elevated (v1.2.3, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
56
|
+
<orderEntry type="library" scope="PROVIDED" name="winrm-fs (v1.3.5, RVM: ruby-2.7.2 [vagrant-betterhosts]) [gem]" level="application" />
|
|
57
|
+
</component>
|
|
58
|
+
<component name="RakeTasksCache">
|
|
59
|
+
<option name="myRootTask">
|
|
60
|
+
<RakeTaskImpl id="rake" />
|
|
61
|
+
</option>
|
|
62
|
+
</component>
|
|
63
|
+
</module>
|
data/.idea/vcs.xml
ADDED
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
vagrant-betterhosts
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ruby-2.7.2
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
GIT
|
|
2
|
+
remote: https://github.com/hashicorp/vagrant.git
|
|
3
|
+
revision: 22795b161bf67a4c0ebbe32c9ce8777cb888c4a7
|
|
4
|
+
specs:
|
|
5
|
+
vagrant (2.2.11.dev)
|
|
6
|
+
bcrypt_pbkdf (~> 1.0.0)
|
|
7
|
+
childprocess (~> 4.0.0)
|
|
8
|
+
ed25519 (~> 1.2.4)
|
|
9
|
+
erubi
|
|
10
|
+
hashicorp-checkpoint (~> 0.1.5)
|
|
11
|
+
i18n (~> 1.8)
|
|
12
|
+
listen (~> 3.1)
|
|
13
|
+
log4r (~> 1.1.9, < 1.1.11)
|
|
14
|
+
mime (~> 0.4.4)
|
|
15
|
+
net-scp (~> 1.2.0)
|
|
16
|
+
net-sftp (~> 3.0)
|
|
17
|
+
net-ssh (~> 6.0)
|
|
18
|
+
rb-kqueue (~> 0.2.0)
|
|
19
|
+
rest-client (>= 1.6.0, < 3.0)
|
|
20
|
+
ruby_dep (<= 1.3.1)
|
|
21
|
+
rubyzip (~> 2.0)
|
|
22
|
+
vagrant_cloud (~> 2.0.3)
|
|
23
|
+
wdm (~> 0.1.0)
|
|
24
|
+
winrm (>= 2.3.4, < 3.0)
|
|
25
|
+
winrm-elevated (>= 1.2.1, < 2.0)
|
|
26
|
+
winrm-fs (>= 1.3.4, < 2.0)
|
|
27
|
+
|
|
28
|
+
PATH
|
|
29
|
+
remote: .
|
|
30
|
+
specs:
|
|
31
|
+
vagrant-betterhosts (1.0.0)
|
|
32
|
+
|
|
33
|
+
GEM
|
|
34
|
+
remote: https://rubygems.org/
|
|
35
|
+
specs:
|
|
36
|
+
bcrypt_pbkdf (1.0.1)
|
|
37
|
+
builder (3.2.4)
|
|
38
|
+
childprocess (4.0.0)
|
|
39
|
+
concurrent-ruby (1.1.9)
|
|
40
|
+
domain_name (0.5.20190701)
|
|
41
|
+
unf (>= 0.0.5, < 1.0.0)
|
|
42
|
+
ed25519 (1.2.4)
|
|
43
|
+
erubi (1.10.0)
|
|
44
|
+
ffi (1.15.1)
|
|
45
|
+
gssapi (1.3.1)
|
|
46
|
+
ffi (>= 1.0.1)
|
|
47
|
+
gyoku (1.3.1)
|
|
48
|
+
builder (>= 2.1.2)
|
|
49
|
+
hashicorp-checkpoint (0.1.5)
|
|
50
|
+
http-cookie (1.0.3)
|
|
51
|
+
domain_name (~> 0.5)
|
|
52
|
+
httpclient (2.8.3)
|
|
53
|
+
i18n (1.8.10)
|
|
54
|
+
concurrent-ruby (~> 1.0)
|
|
55
|
+
listen (3.5.1)
|
|
56
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
57
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
|
58
|
+
little-plugger (1.1.4)
|
|
59
|
+
log4r (1.1.10)
|
|
60
|
+
logging (2.3.0)
|
|
61
|
+
little-plugger (~> 1.1)
|
|
62
|
+
multi_json (~> 1.14)
|
|
63
|
+
mime (0.4.4)
|
|
64
|
+
mime-types (3.3.1)
|
|
65
|
+
mime-types-data (~> 3.2015)
|
|
66
|
+
mime-types-data (3.2021.0225)
|
|
67
|
+
multi_json (1.15.0)
|
|
68
|
+
net-scp (1.2.1)
|
|
69
|
+
net-ssh (>= 2.6.5)
|
|
70
|
+
net-sftp (3.0.0)
|
|
71
|
+
net-ssh (>= 5.0.0, < 7.0.0)
|
|
72
|
+
net-ssh (6.1.0)
|
|
73
|
+
netrc (0.11.0)
|
|
74
|
+
nori (2.6.0)
|
|
75
|
+
rb-fsevent (0.11.0)
|
|
76
|
+
rb-inotify (0.10.1)
|
|
77
|
+
ffi (~> 1.0)
|
|
78
|
+
rb-kqueue (0.2.6)
|
|
79
|
+
ffi (>= 0.5.0)
|
|
80
|
+
rest-client (2.0.2)
|
|
81
|
+
http-cookie (>= 1.0.2, < 2.0)
|
|
82
|
+
mime-types (>= 1.16, < 4.0)
|
|
83
|
+
netrc (~> 0.8)
|
|
84
|
+
ruby_dep (1.3.1)
|
|
85
|
+
rubyntlm (0.6.3)
|
|
86
|
+
rubyzip (2.3.0)
|
|
87
|
+
unf (0.1.4)
|
|
88
|
+
unf_ext
|
|
89
|
+
unf_ext (0.0.7.7)
|
|
90
|
+
vagrant_cloud (2.0.3)
|
|
91
|
+
rest-client (~> 2.0.2)
|
|
92
|
+
wdm (0.1.1)
|
|
93
|
+
winrm (2.3.6)
|
|
94
|
+
builder (>= 2.1.2)
|
|
95
|
+
erubi (~> 1.8)
|
|
96
|
+
gssapi (~> 1.2)
|
|
97
|
+
gyoku (~> 1.0)
|
|
98
|
+
httpclient (~> 2.2, >= 2.2.0.2)
|
|
99
|
+
logging (>= 1.6.1, < 3.0)
|
|
100
|
+
nori (~> 2.0)
|
|
101
|
+
rubyntlm (~> 0.6.0, >= 0.6.3)
|
|
102
|
+
winrm-elevated (1.2.3)
|
|
103
|
+
erubi (~> 1.8)
|
|
104
|
+
winrm (~> 2.0)
|
|
105
|
+
winrm-fs (~> 1.0)
|
|
106
|
+
winrm-fs (1.3.5)
|
|
107
|
+
erubi (~> 1.8)
|
|
108
|
+
logging (>= 1.6.1, < 3.0)
|
|
109
|
+
rubyzip (~> 2.0)
|
|
110
|
+
winrm (~> 2.0)
|
|
111
|
+
|
|
112
|
+
PLATFORMS
|
|
113
|
+
ruby
|
|
114
|
+
|
|
115
|
+
DEPENDENCIES
|
|
116
|
+
vagrant!
|
|
117
|
+
vagrant-betterhosts!
|
|
118
|
+
|
|
119
|
+
BUNDLED WITH
|
|
120
|
+
2.1.4
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright 2018 Chris Smith
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Vagrant::Betterhosts
|
|
2
|
+
|
|
3
|
+
This vagrant plugin adds host file entries to the host pointing to the guest VM, using the [GoodHosts](https://github.com/goodhosts/cli) cli tool. This plugin is based on [vagrant-hostsupdater](https://github.com/cogitatio/vagrant-hostsupdater) and aims to be compatible with the same config parameters.
|
|
4
|
+
|
|
5
|
+
On **up**, **resume** and **reload** commands, it tries to add the hosts if they do not already exist in your hosts file. If it needs to be added, you will be asked for the `sudo` password to make the necessary edits.
|
|
6
|
+
|
|
7
|
+
On **halt**, **destroy**, and **suspend**, those entries will be removed again. By setting the `config.betterhosts.remove_on_suspend = false`, **suspend** and **halt** will not remove them.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```shell
|
|
12
|
+
vagrant plugin install vagrant-betterhosts
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
To uninstall :
|
|
16
|
+
|
|
17
|
+
```shell
|
|
18
|
+
vagrant plugin uninstall vagrant-betterhosts
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
To update the plugin:
|
|
22
|
+
|
|
23
|
+
```shell
|
|
24
|
+
vagrant plugin update vagrant-betterhosts
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
You currently only need the `hostname` and a `:private_network` network with a fixed IP address.
|
|
30
|
+
|
|
31
|
+
```ruby
|
|
32
|
+
config.vm.network :private_network, ip: "192.168.3.10"
|
|
33
|
+
config.vm.hostname = "www.testing.de" # This is not used by the plugin
|
|
34
|
+
config.betterhosts.aliases = ["alias.testing.de", "alias2.somedomain.com"]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This IP address and the hostname will be used for the entry in the `/etc/hosts` file.
|
|
38
|
+
|
|
39
|
+
### vagrant-hostsupdater conflicts
|
|
40
|
+
|
|
41
|
+
The original plugin has the issue of be executed in any vagrant environment, also that is not using and will add a rule in the hosts file that is not generated by this one.
|
|
42
|
+
To avoid issues is better to remove that plugin and in case update accordingly the Vagrantfile if use it. Require just a change of the reference of the plugin name as the example above.
|
|
43
|
+
|
|
44
|
+
### Multiple private network adapters
|
|
45
|
+
|
|
46
|
+
If you have multiple network adapters i.e.:
|
|
47
|
+
|
|
48
|
+
```ruby
|
|
49
|
+
config.vm.network :private_network, ip: "10.0.0.1"
|
|
50
|
+
config.vm.network :private_network, ip: "10.0.0.2"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
You can specify which hostnames are bound to which IP by passing a hash mapping the IP of the network to an array of hostnames to create, e.g.:
|
|
54
|
+
|
|
55
|
+
```ruby
|
|
56
|
+
config.betterhosts.aliases = {
|
|
57
|
+
'10.0.0.1' => ['foo.com', 'bar.com'],
|
|
58
|
+
'10.0.0.2' => ['baz.com', 'bat.com']
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This will produce `/etc/hosts` entries like so:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
10.0.0.1 foo.com
|
|
66
|
+
10.0.0.1 bar.com
|
|
67
|
+
10.0.0.2 baz.com
|
|
68
|
+
10.0.0.2 bat.com
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Keeping Host Entries After Suspend/Halt
|
|
72
|
+
|
|
73
|
+
To keep your `/etc/hosts` file unchanged simply add the line below to your `VagrantFile`:
|
|
74
|
+
|
|
75
|
+
```ruby
|
|
76
|
+
config.betterhosts.remove_on_suspend = false
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This disables `vagrant-betterhosts` from running on **suspend** and **halt**.
|
|
80
|
+
|
|
81
|
+
### Disable file hosts clean
|
|
82
|
+
|
|
83
|
+
If you want `/etc/hosts` file cleaned add in your `VagrantFile`:
|
|
84
|
+
|
|
85
|
+
```ruby
|
|
86
|
+
config.betterhosts.disable_clean = false
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
This enable `vagrant-betterhosts` from running the clean command in every call.
|
|
90
|
+
|
|
91
|
+
## Suppressing prompts for elevating privileges
|
|
92
|
+
|
|
93
|
+
These prompts exist to prevent anything that is being run by the user from inadvertently updating the hosts file.
|
|
94
|
+
If you understand the risks that go with supressing them, here's how to do it.
|
|
95
|
+
|
|
96
|
+
### Linux/OS X: Passwordless sudo
|
|
97
|
+
|
|
98
|
+
To allow vagrant to automatically update the hosts file without asking for a sudo password, add one of the following snippets to a new sudoers file include, i.e. `sudo visudo -f /etc/sudoers.d/vagrant_betterhosts`.
|
|
99
|
+
The command path is printed when there are errors with sudo.
|
|
100
|
+
|
|
101
|
+
For Ubuntu and most Linux environments:
|
|
102
|
+
|
|
103
|
+
%sudo ALL=(root) NOPASSWD: [the-path]
|
|
104
|
+
|
|
105
|
+
For MacOS:
|
|
106
|
+
|
|
107
|
+
%admin ALL=(root) NOPASSWD: [the-path]
|
|
108
|
+
|
|
109
|
+
Replace in both %sudo/%admin with the username it if it is not working for you.
|
|
110
|
+
|
|
111
|
+
### Windows: UAC Prompt
|
|
112
|
+
|
|
113
|
+
You can use `cacls` or `icacls` to grant your user account permanent write permission to the system's hosts file.
|
|
114
|
+
You have to open an elevated command prompt; hold `❖ Win` and press `X`, then choose "Command Prompt (Admin)"
|
|
115
|
+
|
|
116
|
+
cacls %SYSTEMROOT%\system32\drivers\etc\hosts /E /G %USERNAME%:W
|
|
117
|
+
|
|
118
|
+
## Installing The Development Version
|
|
119
|
+
|
|
120
|
+
If you would like to install `vagrant-betterhosts` to make contributions or changes, run the following commands::
|
|
121
|
+
|
|
122
|
+
```shell
|
|
123
|
+
git clone https://github.com/ajxb/vagrant-betterhosts vagrant-betterhosts
|
|
124
|
+
cd vagrant-betterhosts
|
|
125
|
+
./package.sh
|
|
126
|
+
vagrant plugin install vagrant-betterhosts-*.gem
|
|
127
|
+
```
|
data/Rakefile
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'bundler/setup'
|
|
3
|
+
|
|
4
|
+
# Immediately sync all stdout so that tools like buildbot can
|
|
5
|
+
# immediately load in the output.
|
|
6
|
+
$stdout.sync = true
|
|
7
|
+
$stderr.sync = true
|
|
8
|
+
|
|
9
|
+
# Change to the directory of this file.
|
|
10
|
+
Dir.chdir(File.expand_path("../", __FILE__))
|
|
11
|
+
|
|
12
|
+
# This installs the tasks that help with gem creation and
|
|
13
|
+
# publishing.
|
|
14
|
+
Bundler::GemHelper.install_tasks
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module BetterHosts
|
|
3
|
+
module Action
|
|
4
|
+
class BaseAction
|
|
5
|
+
include BetterHosts
|
|
6
|
+
|
|
7
|
+
# Vagrant 2.2.14 has changed the hooks execution policy so they
|
|
8
|
+
# started to be triggered more than once (a lot actually) which
|
|
9
|
+
# is non-performant and floody. With this static property, we
|
|
10
|
+
# control the executions and allowing just one.
|
|
11
|
+
#
|
|
12
|
+
# - https://github.com/hashicorp/vagrant/issues/12070#issuecomment-732271918
|
|
13
|
+
# - https://github.com/hashicorp/vagrant/compare/v2.2.13..v2.2.14#diff-4d1af7c67af870f20d303c3c43634084bab8acc101055b2e53ddc0d07f6f64dcL176-L180
|
|
14
|
+
# - https://github.com/goodhosts/vagrant/issues/25
|
|
15
|
+
@@completed = {}
|
|
16
|
+
|
|
17
|
+
def initialize(app, env)
|
|
18
|
+
@app = app
|
|
19
|
+
@machine = env[:machine]
|
|
20
|
+
@ui = env[:ui]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def call(env)
|
|
24
|
+
# Check whether the plugin has been executed for a particular
|
|
25
|
+
# VM as it may happen that a single Vagrantfile defines multiple
|
|
26
|
+
# machines and having a static flag will result in a plugin being
|
|
27
|
+
# executed just once.
|
|
28
|
+
# https://github.com/goodhosts/vagrant/issues/30
|
|
29
|
+
@@completed[@machine.name] = [] unless @@completed.key?(@machine.name)
|
|
30
|
+
unless @@completed[@machine.name].include? self.class.name
|
|
31
|
+
run(env)
|
|
32
|
+
@@completed[@machine.name] << self.class.name
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
@app.call(env)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def run(env)
|
|
39
|
+
raise NotImplementedError.new("Must be implemented!")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module VagrantPlugins
|
|
2
|
+
module BetterHosts
|
|
3
|
+
module Action
|
|
4
|
+
class RemoveHosts < BaseAction
|
|
5
|
+
|
|
6
|
+
def run(env)
|
|
7
|
+
machine_action = env[:machine_action]
|
|
8
|
+
|
|
9
|
+
return unless @machine.id
|
|
10
|
+
return unless %i[destroy halt suspend].include? machine_action
|
|
11
|
+
|
|
12
|
+
if (%i[halt suspend].include? machine_action) && (false == @machine.config.goodhosts.remove_on_suspend)
|
|
13
|
+
@ui.info '[vagrant-betterhosts] Removing hosts on suspend disabled'
|
|
14
|
+
else
|
|
15
|
+
@ui.info '[vagrant-betterhosts] Removing hosts'
|
|
16
|
+
removeHostEntries
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
require "rbconfig"
|
|
2
|
+
require "open3"
|
|
3
|
+
|
|
4
|
+
module VagrantPlugins
|
|
5
|
+
module BetterHosts
|
|
6
|
+
module BetterHosts
|
|
7
|
+
def getIps
|
|
8
|
+
ips = []
|
|
9
|
+
|
|
10
|
+
if @machine.config.vm.networks.length == 0
|
|
11
|
+
@ui.error("[vagrant-betterhosts] No ip address found for this virtual machine")
|
|
12
|
+
exit
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
@machine.config.vm.networks.each do |network|
|
|
16
|
+
key, options = network[0], network[1]
|
|
17
|
+
ip = options[:ip] if (key == :private_network || key == :public_network) && options[:betterhosts] != "skip"
|
|
18
|
+
ips.push(ip) if ip
|
|
19
|
+
if options[:betterhosts] == "skip"
|
|
20
|
+
@ui.info '[vagrant-betterhosts] Skipped adding host entries (config.vm.network betterhosts: "skip" is set)'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
@machine.config.vm.provider :hyperv do |v|
|
|
24
|
+
timeout = @machine.provider_config.ip_address_timeout
|
|
25
|
+
@ui.output("[vagrant-betterhosts] Waiting for the guest machine to report its IP address ( this might take some time, have patience )...")
|
|
26
|
+
@ui.detail("Timeout: #{timeout} seconds")
|
|
27
|
+
|
|
28
|
+
options = {
|
|
29
|
+
vmm_server_address: @machine.provider_config.vmm_server_address,
|
|
30
|
+
proxy_server_address: @machine.provider_config.proxy_server_address,
|
|
31
|
+
timeout: timeout,
|
|
32
|
+
machine: @machine,
|
|
33
|
+
}
|
|
34
|
+
network = @machine.provider.driver.read_guest_ip(options)
|
|
35
|
+
if network["ip"]
|
|
36
|
+
ips.push(network["ip"]) unless ips.include? network["ip"]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
return ips
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# https://stackoverflow.com/a/13586108/1902215
|
|
46
|
+
def get_os_binary
|
|
47
|
+
return os ||= (host_os = RbConfig::CONFIG["host_os"]
|
|
48
|
+
case host_os
|
|
49
|
+
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
|
50
|
+
:'cli.exe'
|
|
51
|
+
when /darwin|mac os/
|
|
52
|
+
:'cli_osx'
|
|
53
|
+
when /linux/
|
|
54
|
+
:'cli'
|
|
55
|
+
else
|
|
56
|
+
raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
|
|
57
|
+
end)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def get_cli
|
|
61
|
+
binary = get_os_binary
|
|
62
|
+
path = File.expand_path(File.dirname(File.dirname(__FILE__))) + "/vagrant-betterhosts/bundle/"
|
|
63
|
+
path = "#{path}#{binary}"
|
|
64
|
+
|
|
65
|
+
return path
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Get a hash of hostnames indexed by ip, e.g. { 'ip1': ['host1'], 'ip2': ['host2', 'host3'] }
|
|
69
|
+
def getHostnames(ips)
|
|
70
|
+
hostnames = Hash.new { |h, k| h[k] = [] }
|
|
71
|
+
|
|
72
|
+
case @machine.config.betterhosts.aliases
|
|
73
|
+
when Array
|
|
74
|
+
# simple list of aliases to link to all ips
|
|
75
|
+
ips.each do |ip|
|
|
76
|
+
hostnames[ip] += @machine.config.betterhosts.aliases
|
|
77
|
+
end
|
|
78
|
+
when Hash
|
|
79
|
+
# complex definition of aliases for various ips
|
|
80
|
+
@machine.config.betterhosts.aliases.each do |ip, hosts|
|
|
81
|
+
hostnames[ip] += Array(hosts)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
return hostnames
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def disableClean(ip_address)
|
|
89
|
+
unless ip_address.nil?
|
|
90
|
+
return @machine.config.betterhosts.disable_clean
|
|
91
|
+
end
|
|
92
|
+
return true
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def addHostEntries
|
|
96
|
+
error = false
|
|
97
|
+
errorText = ""
|
|
98
|
+
cli = get_cli
|
|
99
|
+
hostnames_by_ips = generateHostnamesByIps
|
|
100
|
+
|
|
101
|
+
return if not hostnames_by_ips.any?
|
|
102
|
+
|
|
103
|
+
hostnames_by_ips.each do |ip_address, hostnames|
|
|
104
|
+
if ip_address.nil?
|
|
105
|
+
@ui.error "[vagrant-betterhosts] Error adding some hosts, no IP was provided for the following hostnames: #{hostnames}"
|
|
106
|
+
next
|
|
107
|
+
end
|
|
108
|
+
if cli.include? ".exe"
|
|
109
|
+
clean = "\"--clean\","
|
|
110
|
+
if disableClean(ip_address)
|
|
111
|
+
clean = ''
|
|
112
|
+
end
|
|
113
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3("powershell", "-Command", "Start-Process '#{cli}' -ArgumentList \"add\",#{clean}\"#{ip_address}\",\"#{hostnames}\" -Verb RunAs")
|
|
114
|
+
else
|
|
115
|
+
clean = "--clean"
|
|
116
|
+
if disableClean(ip_address)
|
|
117
|
+
clean = ''
|
|
118
|
+
end
|
|
119
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3("sudo '#{cli}' add #{clean} #{ip_address} #{hostnames}")
|
|
120
|
+
end
|
|
121
|
+
if !wait_thr.value.success?
|
|
122
|
+
error = true
|
|
123
|
+
errorText = stderr.read.strip
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
printReadme(error, errorText)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def removeHostEntries
|
|
130
|
+
error = false
|
|
131
|
+
errorText = ""
|
|
132
|
+
cli = get_cli
|
|
133
|
+
hostnames_by_ips = generateHostnamesByIps
|
|
134
|
+
|
|
135
|
+
return if not hostnames_by_ips.any?
|
|
136
|
+
|
|
137
|
+
hostnames_by_ips.each do |ip_address, hostnames|
|
|
138
|
+
if ip_address.nil?
|
|
139
|
+
@ui.error "[vagrant-betterhosts] Error adding some hosts, no IP was provided for the following hostnames: #{hostnames}"
|
|
140
|
+
next
|
|
141
|
+
end
|
|
142
|
+
if cli.include? ".exe"
|
|
143
|
+
clean = "\"--clean\","
|
|
144
|
+
if disableClean(ip_address)
|
|
145
|
+
clean = ''
|
|
146
|
+
end
|
|
147
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3("powershell", "-Command", "Start-Process '#{cli}' -ArgumentList \"remove\",#{clean}\"#{ip_address}\",\"#{hostnames}\" -Verb RunAs")
|
|
148
|
+
else
|
|
149
|
+
clean = "\"--clean\","
|
|
150
|
+
if disableClean(ip_address)
|
|
151
|
+
clean = ''
|
|
152
|
+
end
|
|
153
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3("sudo '#{cli}' remove #{clean} #{ip_address} #{hostnames}")
|
|
154
|
+
end
|
|
155
|
+
if !wait_thr.value.success?
|
|
156
|
+
error = true
|
|
157
|
+
errorText = stderr.read.strip
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
printReadme(error, errorText)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def printReadme(error, errorText)
|
|
164
|
+
if error
|
|
165
|
+
cli = get_cli
|
|
166
|
+
@ui.error "[vagrant-betterhosts] Issue executing goodhosts CLI: #{errorText}"
|
|
167
|
+
@ui.error "[vagrant-betterhosts] Cli path: #{cli}"
|
|
168
|
+
if cli.include? ".exe"
|
|
169
|
+
@ui.error "[vagrant-betterhosts] Check the readme at https://github.com/ajxb/vagrant-betterhosts#windows-uac-prompt"
|
|
170
|
+
exit
|
|
171
|
+
else
|
|
172
|
+
@ui.error "[vagrant-betterhosts] Check the readme at https://github.com/ajxb/vagrant-betterhosts#passwordless-sudo"
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def generateHostnamesByIps()
|
|
178
|
+
hostnames_by_ips = []
|
|
179
|
+
ips = getIps
|
|
180
|
+
if ips.count() < 1
|
|
181
|
+
return hostnames_by_ips
|
|
182
|
+
end
|
|
183
|
+
hostnames = getHostnames(ips)
|
|
184
|
+
if ips.count() > 1
|
|
185
|
+
ips.each do |ip|
|
|
186
|
+
ip_address = ip
|
|
187
|
+
if hostnames[ip].count() > 0
|
|
188
|
+
hostnames[ip].each do |hostname|
|
|
189
|
+
if !ip_address.nil?
|
|
190
|
+
@ui.info "[vagrant-betterhosts] - found entry for: #{ip_address} #{hostname}"
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
hostnames_by_ips = { ip_address => hostnames[ip].join(" ") }
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
else
|
|
197
|
+
ip_address = ips[0]
|
|
198
|
+
if hostnames[ip_address].count() > 0
|
|
199
|
+
hostnames[ip_address].each do |hostname|
|
|
200
|
+
if !ip_address.nil?
|
|
201
|
+
@ui.info "[vagrant-betterhosts] - found entry for: #{ip_address} #{hostname}"
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
hostnames_by_ips = { ip_address => hostnames[ip_address].join(" ") }
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
return hostnames_by_ips
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require "vagrant"
|
|
2
|
+
|
|
3
|
+
module VagrantPlugins
|
|
4
|
+
module BetterHosts
|
|
5
|
+
class Config < Vagrant.plugin("2", :config)
|
|
6
|
+
attr_accessor :aliases
|
|
7
|
+
attr_accessor :id
|
|
8
|
+
attr_accessor :remove_on_suspend
|
|
9
|
+
attr_accessor :disable_clean
|
|
10
|
+
|
|
11
|
+
def initialize
|
|
12
|
+
@remove_on_suspend = true
|
|
13
|
+
@disable_clean = true
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require_relative "BetterHosts"
|
|
2
|
+
require_relative "Action/BaseAction"
|
|
3
|
+
require_relative "Action/UpdateHosts"
|
|
4
|
+
require_relative "Action/RemoveHosts"
|
|
5
|
+
|
|
6
|
+
module VagrantPlugins
|
|
7
|
+
module BetterHosts
|
|
8
|
+
class Plugin < Vagrant.plugin('2')
|
|
9
|
+
name 'BetterHosts'
|
|
10
|
+
description <<-DESC
|
|
11
|
+
This plugin manages the /etc/hosts file for the host machine. An entry is
|
|
12
|
+
created for the hostname attribute in the vm.config.
|
|
13
|
+
DESC
|
|
14
|
+
|
|
15
|
+
config(:betterhosts) do
|
|
16
|
+
require_relative 'config'
|
|
17
|
+
Config
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
action_hook(:betterhosts, :machine_action_up) do |hook|
|
|
21
|
+
hook.append(Action::UpdateHosts)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
action_hook(:betterhosts, :machine_action_provision) do |hook|
|
|
25
|
+
hook.before(Vagrant::Action::Builtin::Provision, Action::UpdateHosts)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
action_hook(:betterhosts, :machine_action_halt) do |hook|
|
|
29
|
+
hook.append(Action::RemoveHosts)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
action_hook(:betterhosts, :machine_action_suspend) do |hook|
|
|
33
|
+
hook.append(Action::RemoveHosts)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
action_hook(:betterhosts, :machine_action_destroy) do |hook|
|
|
37
|
+
hook.append(Action::RemoveHosts)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
action_hook(:betterhosts, :machine_action_reload) do |hook|
|
|
41
|
+
hook.prepend(Action::RemoveHosts)
|
|
42
|
+
hook.append(Action::UpdateHosts)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
action_hook(:betterhosts, :machine_action_resume) do |hook|
|
|
46
|
+
hook.prepend(Action::RemoveHosts)
|
|
47
|
+
hook.append(Action::UpdateHosts)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
data/package.sh
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
mkdir -p ./lib/vagrant-betterhosts/bundle
|
|
4
|
+
cd ./lib/vagrant-betterhosts/bundle
|
|
5
|
+
# Download
|
|
6
|
+
curl -s https://api.github.com/repos/goodhosts/cli/releases/latest | jq --raw-output '.assets[] | .browser_download_url' | xargs wget -i
|
|
7
|
+
# Extract
|
|
8
|
+
tar -zxvf goodhosts_darwin_amd64.tar.gz goodhosts && mv goodhosts cli_osx
|
|
9
|
+
tar -zxvf goodhosts_linux_amd64.tar.gz goodhosts && mv goodhosts cli
|
|
10
|
+
tar -zxvf goodhosts_windows_amd64.tar.gz goodhosts.exe && mv goodhosts.exe cli.exe
|
|
11
|
+
rm -f ./*.tar.gz
|
|
12
|
+
rm -f ./*.txt
|
|
13
|
+
# Generate
|
|
14
|
+
cd ../../../
|
|
15
|
+
gem build vagrant-betterhosts.gemspec
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'vagrant-betterhosts/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = 'vagrant-betterhosts'
|
|
8
|
+
s.version = VagrantPlugins::BetterHosts::VERSION
|
|
9
|
+
s.platform = Gem::Platform::RUBY
|
|
10
|
+
s.authors = ['Adam Butler']
|
|
11
|
+
s.email = ['adam.j.butler@protonmail.com']
|
|
12
|
+
s.description = 'Enables Vagrant to update hosts file on the host machine using the goodhosts cli tool'
|
|
13
|
+
s.summary = 'Vagrant plugin to manage the hosts file on the host machine'
|
|
14
|
+
s.homepage = 'https://github.com/ajxb/vagrant-betterhosts'
|
|
15
|
+
s.license = 'MIT'
|
|
16
|
+
|
|
17
|
+
s.required_ruby_version = "~> 2.5", "< 2.8"
|
|
18
|
+
s.files = `git ls-files`.split($/)
|
|
19
|
+
s.files += Dir.glob("lib/vagrant-betterhosts/bundle/*")
|
|
20
|
+
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
21
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
|
22
|
+
s.require_paths = ['lib']
|
|
23
|
+
|
|
24
|
+
s.add_development_dependency 'bundler', '~> 1.3'
|
|
25
|
+
s.add_development_dependency 'rake', '~> 13.0'
|
|
26
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: vagrant-betterhosts
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Adam Butler
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2021-06-19 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.3'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.3'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '13.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '13.0'
|
|
41
|
+
description: Enables Vagrant to update hosts file on the host machine using the goodhosts
|
|
42
|
+
cli tool
|
|
43
|
+
email:
|
|
44
|
+
- adam.j.butler@protonmail.com
|
|
45
|
+
executables: []
|
|
46
|
+
extensions: []
|
|
47
|
+
extra_rdoc_files: []
|
|
48
|
+
files:
|
|
49
|
+
- ".gitignore"
|
|
50
|
+
- ".idea/.gitignore"
|
|
51
|
+
- ".idea/misc.xml"
|
|
52
|
+
- ".idea/modules.xml"
|
|
53
|
+
- ".idea/vagrant-betterhosts.iml"
|
|
54
|
+
- ".idea/vcs.xml"
|
|
55
|
+
- ".ruby-gemset"
|
|
56
|
+
- ".ruby-version"
|
|
57
|
+
- Gemfile
|
|
58
|
+
- Gemfile.lock
|
|
59
|
+
- LICENSE.txt
|
|
60
|
+
- README.md
|
|
61
|
+
- Rakefile
|
|
62
|
+
- lib/vagrant-betterhosts.rb
|
|
63
|
+
- lib/vagrant-betterhosts/Action/BaseAction.rb
|
|
64
|
+
- lib/vagrant-betterhosts/Action/RemoveHosts.rb
|
|
65
|
+
- lib/vagrant-betterhosts/Action/UpdateHosts.rb
|
|
66
|
+
- lib/vagrant-betterhosts/BetterHosts.rb
|
|
67
|
+
- lib/vagrant-betterhosts/bundle/cli
|
|
68
|
+
- lib/vagrant-betterhosts/bundle/cli.exe
|
|
69
|
+
- lib/vagrant-betterhosts/bundle/cli_osx
|
|
70
|
+
- lib/vagrant-betterhosts/config.rb
|
|
71
|
+
- lib/vagrant-betterhosts/plugin.rb
|
|
72
|
+
- lib/vagrant-betterhosts/version.rb
|
|
73
|
+
- package.sh
|
|
74
|
+
- vagrant-betterhosts.gemspec
|
|
75
|
+
homepage: https://github.com/ajxb/vagrant-betterhosts
|
|
76
|
+
licenses:
|
|
77
|
+
- MIT
|
|
78
|
+
metadata: {}
|
|
79
|
+
post_install_message:
|
|
80
|
+
rdoc_options: []
|
|
81
|
+
require_paths:
|
|
82
|
+
- lib
|
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - "~>"
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '2.5'
|
|
88
|
+
- - "<"
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '2.8'
|
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
96
|
+
requirements: []
|
|
97
|
+
rubygems_version: 3.1.4
|
|
98
|
+
signing_key:
|
|
99
|
+
specification_version: 4
|
|
100
|
+
summary: Vagrant plugin to manage the hosts file on the host machine
|
|
101
|
+
test_files: []
|