pauper 0.0.4 → 0.0.5
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/lib/dhcpd.rb +4 -0
- data/lib/pauper.rb +25 -6
- metadata +18 -7
data/lib/dhcpd.rb
CHANGED
data/lib/pauper.rb
CHANGED
@@ -51,9 +51,11 @@ class Pauper
|
|
51
51
|
vmx.save
|
52
52
|
|
53
53
|
dhcpd = DHCPD.new(DHCPD_CONF_PATH)
|
54
|
+
ip = node_ip(node_config)
|
55
|
+
|
54
56
|
dhcpd.config[node_name] = {
|
55
57
|
'hardware ethernet' => mac,
|
56
|
-
'fixed-address' =>
|
58
|
+
'fixed-address' => ip
|
57
59
|
}
|
58
60
|
dhcpd.save
|
59
61
|
|
@@ -81,13 +83,13 @@ class Pauper
|
|
81
83
|
chef_attribs = {
|
82
84
|
:run_list => @pauper_config.config[:default_run_list] + node_config.config[:run_list],
|
83
85
|
:ip => {
|
84
|
-
:private =>
|
86
|
+
:private => ip,
|
85
87
|
:private_netmask => '255.255.255.0'
|
86
88
|
}
|
87
89
|
}.merge(@pauper_config.config[:chef_options]).merge(node_config.config[:chef_options])
|
88
90
|
|
89
91
|
puts "Uploading Chef files..."
|
90
|
-
Net::SCP.start
|
92
|
+
Net::SCP.start ip, @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |scp|
|
91
93
|
scp.upload! tmp_client_rb_path, "client.rb"
|
92
94
|
scp.upload! @pauper_config.config[:validation_key_path], "validation.pem"
|
93
95
|
scp.upload! StringIO.new(chef_attribs.to_json), "client-config.json"
|
@@ -102,7 +104,7 @@ class Pauper
|
|
102
104
|
end
|
103
105
|
|
104
106
|
puts "Connecting over SSH..."
|
105
|
-
Net::SSH.start
|
107
|
+
Net::SSH.start ip, @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |ssh|
|
106
108
|
ssh_exec ssh, "sudo hostname #{node_name}"
|
107
109
|
ssh_exec ssh, "sudo mkdir /etc/chef"
|
108
110
|
|
@@ -166,7 +168,7 @@ class Pauper
|
|
166
168
|
puts "Writing /etc/hosts file..."
|
167
169
|
hosts = Hosts.new
|
168
170
|
@pauper_config.config[:nodes].each do |node|
|
169
|
-
hosts.config[node
|
171
|
+
hosts.config[node_ip(node)] = node.name
|
170
172
|
end
|
171
173
|
hosts.save
|
172
174
|
end
|
@@ -194,6 +196,17 @@ class Pauper
|
|
194
196
|
|
195
197
|
private
|
196
198
|
|
199
|
+
def node_ip(node_config)
|
200
|
+
return node_config.config[:ip] if node_config.config[:ip]
|
201
|
+
|
202
|
+
@subnet ||= begin
|
203
|
+
dhcpd = DHCPD.new(DHCPD_CONF_PATH)
|
204
|
+
dhcpd.subnet
|
205
|
+
end
|
206
|
+
|
207
|
+
return @subnet + '.' + node_config.config[:last_octet]
|
208
|
+
end
|
209
|
+
|
197
210
|
def cmd(*args)
|
198
211
|
puts ["local>", *args].join(" ")
|
199
212
|
system *args
|
@@ -260,7 +273,9 @@ class Pauper
|
|
260
273
|
end
|
261
274
|
|
262
275
|
def node_name_to_vmx(node_name)
|
263
|
-
Dir[File.join(node_name_to_vm_path(node_name), '*.vmx')]
|
276
|
+
vmxes = Dir[File.join(node_name_to_vm_path(node_name), '*.vmx')]
|
277
|
+
raise "Can't find a vmx file in #{node_name_to_vm_path(node_name)}" unless vmxes[0]
|
278
|
+
vmxes[0]
|
264
279
|
end
|
265
280
|
|
266
281
|
def node_name_to_vm_path(node_name)
|
@@ -369,6 +384,10 @@ class Pauper
|
|
369
384
|
@config[:ip] = addr
|
370
385
|
end
|
371
386
|
|
387
|
+
def last_octet(octet)
|
388
|
+
@config[:last_octet] = octet.to_s
|
389
|
+
end
|
390
|
+
|
372
391
|
def chef_options(options)
|
373
392
|
@config[:chef_options] = options
|
374
393
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pauper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 21
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Tyler McMullen
|
@@ -14,16 +15,17 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2011-08-
|
18
|
-
default_executable:
|
18
|
+
date: 2011-08-22 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: thor
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
24
25
|
requirements:
|
25
26
|
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
27
29
|
segments:
|
28
30
|
- 0
|
29
31
|
version: "0"
|
@@ -33,9 +35,11 @@ dependencies:
|
|
33
35
|
name: net-ssh
|
34
36
|
prerelease: false
|
35
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
36
39
|
requirements:
|
37
40
|
- - ">="
|
38
41
|
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
39
43
|
segments:
|
40
44
|
- 0
|
41
45
|
version: "0"
|
@@ -45,9 +49,11 @@ dependencies:
|
|
45
49
|
name: net-scp
|
46
50
|
prerelease: false
|
47
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
48
53
|
requirements:
|
49
54
|
- - ">="
|
50
55
|
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
51
57
|
segments:
|
52
58
|
- 0
|
53
59
|
version: "0"
|
@@ -57,9 +63,11 @@ dependencies:
|
|
57
63
|
name: json
|
58
64
|
prerelease: false
|
59
65
|
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
60
67
|
requirements:
|
61
68
|
- - ">="
|
62
69
|
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
63
71
|
segments:
|
64
72
|
- 0
|
65
73
|
version: "0"
|
@@ -82,7 +90,6 @@ files:
|
|
82
90
|
- lib/pauper.rb
|
83
91
|
- lib/vmx.rb
|
84
92
|
- README
|
85
|
-
has_rdoc: true
|
86
93
|
homepage: http://github.com/fastly/Pauper
|
87
94
|
licenses: []
|
88
95
|
|
@@ -92,23 +99,27 @@ rdoc_options: []
|
|
92
99
|
require_paths:
|
93
100
|
- lib
|
94
101
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
95
103
|
requirements:
|
96
104
|
- - ">="
|
97
105
|
- !ruby/object:Gem::Version
|
106
|
+
hash: 3
|
98
107
|
segments:
|
99
108
|
- 0
|
100
109
|
version: "0"
|
101
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
102
112
|
requirements:
|
103
113
|
- - ">="
|
104
114
|
- !ruby/object:Gem::Version
|
115
|
+
hash: 3
|
105
116
|
segments:
|
106
117
|
- 0
|
107
118
|
version: "0"
|
108
119
|
requirements: []
|
109
120
|
|
110
121
|
rubyforge_project:
|
111
|
-
rubygems_version: 1.
|
122
|
+
rubygems_version: 1.8.8
|
112
123
|
signing_key:
|
113
124
|
specification_version: 3
|
114
125
|
summary: A semi-sane way to manage a multi-vm dev environment
|