vagrant-hostmanager 0.1.0 → 0.1.1
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.
- data/README.md +17 -0
- data/lib/vagrant-hostmanager/config.rb +29 -0
- data/lib/vagrant-hostmanager/hosts_file.rb +5 -4
- data/lib/vagrant-hostmanager/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -40,6 +40,23 @@ to true.
|
|
40
40
|
A machine's host name is defined by `config.vm.hostname`. If this is not
|
41
41
|
set, it falls back to the symbol defining the machine in the Vagrantfile.
|
42
42
|
|
43
|
+
In addition, the `hostmanager.aliases` configuration attribute can be used
|
44
|
+
to provide aliases for your host names.
|
45
|
+
|
46
|
+
Example configuration:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
Vagrant.configure("2") do |config|
|
50
|
+
config.hostmanager.auto_update = true
|
51
|
+
config.hostmanager.ignore_private_ip = false
|
52
|
+
config.vm.define "example-box" do |node|
|
53
|
+
node.vm.hostname = "example-box-hostname"
|
54
|
+
node.vm.network :private_network, ip: "192.168.42.42"
|
55
|
+
node.hostmanager.aliases = %w(example-box.localdomain example-box-alias)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
```
|
59
|
+
|
43
60
|
Contribute
|
44
61
|
----------
|
45
62
|
Contributions are welcome.
|
@@ -3,16 +3,45 @@ module VagrantPlugins
|
|
3
3
|
class Config < Vagrant.plugin('2', :config)
|
4
4
|
attr_accessor :auto_update
|
5
5
|
attr_accessor :ignore_private_ip
|
6
|
+
attr_accessor :aliases
|
6
7
|
|
7
8
|
def initialize
|
8
9
|
@auto_update = UNSET_VALUE
|
9
10
|
@ignore_private_ip = UNSET_VALUE
|
11
|
+
@aliases = Array.new
|
10
12
|
end
|
11
13
|
|
12
14
|
def finalize!
|
13
15
|
@auto_update = true if @auto_update == UNSET_VALUE
|
14
16
|
@ignore_private_ip = false if @ignore_private_ip == UNSET_VALUE
|
15
17
|
end
|
18
|
+
|
19
|
+
def validate(machine)
|
20
|
+
errors = Array.new
|
21
|
+
|
22
|
+
# check if auto_update option is defined in Vagrantfile
|
23
|
+
# and check if is either true or false accordingly
|
24
|
+
if (machine.config.hostmanager.auto_update &&
|
25
|
+
![TrueClass, FalseClass].include?(auto_update.class))
|
26
|
+
errors << "A value for hostmanager.auto_update can be true or false."
|
27
|
+
end
|
28
|
+
|
29
|
+
# check if ignore_private_ip option is defined in Vagrantfile
|
30
|
+
# and check if is either true or false accordingly
|
31
|
+
if (machine.config.hostmanager.ignore_private_ip &&
|
32
|
+
![TrueClass, FalseClass].include?(ignore_private_ip.class))
|
33
|
+
errors << "A value for hostmanager.ignore_private_ip can be true or false."
|
34
|
+
end
|
35
|
+
|
36
|
+
# check if aliases option is defined in Vagrantfile
|
37
|
+
# and check if is an Array accordingly
|
38
|
+
if (machine.config.hostmanager.aliases &&
|
39
|
+
!machine.config.hostmanager.aliases.kind_of?(Array))
|
40
|
+
errors << "A value for hostmanager.aliases must be an Array."
|
41
|
+
end
|
42
|
+
|
43
|
+
{ "HostManager configuration" => errors }
|
44
|
+
end
|
16
45
|
end
|
17
46
|
end
|
18
47
|
end
|
@@ -10,7 +10,7 @@ module VagrantPlugins
|
|
10
10
|
# define a lambda for looking up a machine's ip address
|
11
11
|
get_ip_address = lambda do |machine|
|
12
12
|
ip = nil
|
13
|
-
|
13
|
+
if machine.config.hostmanager.ignore_private_ip != true
|
14
14
|
machine.config.vm.networks.each do |network|
|
15
15
|
key, options = network[0], network[1]
|
16
16
|
ip = options[:ip] if key == :private_network
|
@@ -23,7 +23,7 @@ module VagrantPlugins
|
|
23
23
|
# create the temporary hosts file
|
24
24
|
path = env.tmp_path.join('hosts')
|
25
25
|
File.open(path, 'w') do |file|
|
26
|
-
file << "127.0.0.1\tlocalhost\n"
|
26
|
+
file << "127.0.0.1\tlocalhost\slocalhost.localdomain\n"
|
27
27
|
|
28
28
|
# add a hosts entry for each active machine matching the provider
|
29
29
|
env.active_machines.each do |name, p|
|
@@ -31,8 +31,9 @@ module VagrantPlugins
|
|
31
31
|
machines << machine = env.machine(name, provider)
|
32
32
|
host = machine.config.vm.hostname || name
|
33
33
|
ip = get_ip_address.call(machine)
|
34
|
-
|
35
|
-
|
34
|
+
host_aliases = machine.config.hostmanager.aliases.join("\s").chomp
|
35
|
+
@logger.info "Adding /etc/hosts entry: #{ip} #{host} #{host_aliases}"
|
36
|
+
file << "#{ip}\t#{host}\s#{host_aliases}\n"
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-hostmanager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-17 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A Vagrant plugin that manages the /etc/hosts file within a multi-machine
|
15
15
|
environment
|