pauper 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/pauper +51 -3
- data/lib/dhcpd.rb +23 -17
- data/lib/pauper.rb +7 -20
- metadata +3 -3
data/bin/pauper
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'thor'
|
5
5
|
require 'pauper'
|
6
|
+
require 'vmx'
|
7
|
+
require 'dhcpd'
|
6
8
|
|
7
9
|
class CLI < Thor
|
8
10
|
desc "bootstrap", "Initialize the base image"
|
@@ -74,16 +76,62 @@ class CLI < Thor
|
|
74
76
|
end
|
75
77
|
end
|
76
78
|
|
79
|
+
|
77
80
|
desc 'write_hosts', 'Write out a new /etc/hosts file'
|
78
81
|
def write_hosts
|
79
82
|
pauper = Pauper.new
|
80
83
|
pauper.write_hosts
|
81
84
|
end
|
82
85
|
|
83
|
-
|
84
|
-
|
86
|
+
|
87
|
+
desc 'setup_osx [VMNAME]', 'Set up things for OS X'
|
88
|
+
def setup_osx(vm_name=nil)
|
85
89
|
pauper = Pauper.new
|
86
|
-
|
90
|
+
|
91
|
+
vms = Dir["#{ENV['HOME']}/Documents/Virtual Machines*/#{vm_name}*"]
|
92
|
+
if vms.size > 1
|
93
|
+
puts "I'm not sure which VM I should use!"
|
94
|
+
vms.each do |vm|
|
95
|
+
puts "\t#{File.basename(vm)}"
|
96
|
+
end
|
97
|
+
exit
|
98
|
+
end
|
99
|
+
|
100
|
+
vmx_file = Dir[vms[0] + '/*.vmx'][0]
|
101
|
+
vmx = VMX.new(vmx_file)
|
102
|
+
|
103
|
+
mac = vmx.data['ethernet0.generatedAddress']
|
104
|
+
arpmac = mac.gsub(/0([0-9a-f])/, '\1') # switch it to the format that arp likes
|
105
|
+
|
106
|
+
match = `arp -a | grep #{arpmac}`.match(/\(([0-9.]+)\)/)
|
107
|
+
unless match
|
108
|
+
puts "Could not find any running VM with MAC addr: #{arpmac}"
|
109
|
+
exit
|
110
|
+
end
|
111
|
+
|
112
|
+
ip = match.captures[0]
|
113
|
+
|
114
|
+
# Set up DHCPD
|
115
|
+
|
116
|
+
dhcpd = DHCPD.new('/Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf')
|
117
|
+
unless dhcpd.config['dev'] &&
|
118
|
+
dhcpd.config['dev']['hardware ethernet'] == mac &&
|
119
|
+
dhcpd.config['dev']['fixed-address'] == ip
|
120
|
+
|
121
|
+
puts "Writing correct IP/MAC combo into dhcpd.conf file..."
|
122
|
+
dhcpd.config['dev'] = { 'hardware ethernet' => mac, 'fixed-address' => ip }
|
123
|
+
dhcpd.save
|
124
|
+
end
|
125
|
+
|
126
|
+
# Set up route
|
127
|
+
gateway = `route -n get 10.215.0.0`.match(/gateway: (.*)$/).captures[0]
|
128
|
+
unless gateway == ip
|
129
|
+
puts "Adding route to LXC hosts..."
|
130
|
+
system 'sudo', 'route', 'add', '10.215.0.0/24', ip
|
131
|
+
end
|
132
|
+
|
133
|
+
# Write hosts
|
134
|
+
pauper.write_osx_hosts(ip)
|
87
135
|
end
|
88
136
|
end
|
89
137
|
|
data/lib/dhcpd.rb
CHANGED
@@ -14,22 +14,28 @@ class DHCPD
|
|
14
14
|
@preamble.match(/subnet (\d+\.\d+\.\d+)\.0 netmask/)[1]
|
15
15
|
end
|
16
16
|
|
17
|
+
def serialize
|
18
|
+
out = @preamble
|
19
|
+
out += BEGIN_PAUPER + "\n"
|
20
|
+
|
21
|
+
@config.each do |host, host_config|
|
22
|
+
out += "host #{host} {\n"
|
23
|
+
host_config.each do |key, value|
|
24
|
+
out += "\t#{key} #{value};\n"
|
25
|
+
end
|
26
|
+
out += "}\n"
|
27
|
+
end
|
28
|
+
|
29
|
+
out += END_PAUPER + "\n"
|
30
|
+
out += @postamble
|
31
|
+
|
32
|
+
out
|
33
|
+
end
|
34
|
+
|
17
35
|
def save
|
18
36
|
tmp_path = '.tmp.dhcpd.conf'
|
19
37
|
File.open(tmp_path, 'w') do |f|
|
20
|
-
f.write
|
21
|
-
f.puts BEGIN_BUM
|
22
|
-
|
23
|
-
@config.each do |host, host_config|
|
24
|
-
f.puts "host #{host} {"
|
25
|
-
host_config.each do |key, value|
|
26
|
-
f.puts "\t#{key} #{value};"
|
27
|
-
end
|
28
|
-
f.puts "}"
|
29
|
-
end
|
30
|
-
|
31
|
-
f.puts END_BUM
|
32
|
-
f.write @postamble
|
38
|
+
f.write serialize
|
33
39
|
end
|
34
40
|
|
35
41
|
system 'sudo', 'mv', tmp_path, @conf_path
|
@@ -41,8 +47,8 @@ class DHCPD
|
|
41
47
|
|
42
48
|
private
|
43
49
|
|
44
|
-
|
45
|
-
|
50
|
+
BEGIN_PAUPER = "#### BEGIN PAUPER ####"
|
51
|
+
END_PAUPER = "#### END PAUPER ####"
|
46
52
|
|
47
53
|
def parse
|
48
54
|
state = :preamble
|
@@ -53,7 +59,7 @@ class DHCPD
|
|
53
59
|
|
54
60
|
case state
|
55
61
|
when :preamble
|
56
|
-
if line ==
|
62
|
+
if line == BEGIN_PAUPER
|
57
63
|
state = :outside_host
|
58
64
|
else
|
59
65
|
@preamble << rawline
|
@@ -71,7 +77,7 @@ class DHCPD
|
|
71
77
|
if line == '}'
|
72
78
|
state = :outside_host
|
73
79
|
host = nil
|
74
|
-
elsif line ==
|
80
|
+
elsif line == END_PAUPER
|
75
81
|
state = :postamble
|
76
82
|
else
|
77
83
|
parts = line.chomp(';').split(' ')
|
data/lib/pauper.rb
CHANGED
@@ -243,29 +243,16 @@ EOF
|
|
243
243
|
hosts.save(@pauper_config.config[:dev_domain])
|
244
244
|
end
|
245
245
|
|
246
|
-
def
|
247
|
-
puts "Writing
|
248
|
-
|
249
|
-
dhcpd = DHCPD.new(DHCPD_CONF_PATH)
|
250
|
-
|
246
|
+
def write_osx_hosts(dev_ip)
|
247
|
+
puts "Writing /etc/hosts file..."
|
248
|
+
hosts = Hosts.new
|
251
249
|
@pauper_config.config[:nodes].each do |node|
|
252
|
-
|
253
|
-
mac = vmx.data['ethernet0.address']
|
254
|
-
|
255
|
-
node_config = get_node_config(node.name)
|
256
|
-
ip = node_ip(node_config)
|
257
|
-
|
258
|
-
dhcpd.config[node.name] = {
|
259
|
-
'hardware ethernet' => mac,
|
260
|
-
'fixed-address' => ip
|
261
|
-
}
|
262
|
-
dhcpd.save
|
250
|
+
hosts.config[node_ip(node)] = node.name
|
263
251
|
end
|
264
|
-
|
265
|
-
|
266
|
-
dhcpd.restart
|
252
|
+
hosts.config[dev_ip] = 'dev'
|
253
|
+
hosts.save(@pauper_config.config[:dev_domain])
|
267
254
|
end
|
268
|
-
|
255
|
+
|
269
256
|
def start_all
|
270
257
|
puts "Starting all nodes..."
|
271
258
|
@pauper_config.config[:nodes].each { |n| start(n.name) }
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 6
|
9
|
+
version: 0.1.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Tyler McMullen
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-04-
|
18
|
+
date: 2013-04-07 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|